NMI for WooCommerce

Description

NMI for WooCommerce is a powerful payment gateway plugin that allows you to securely accept credit cards and ACH payments directly on your WooCommerce store. Built with PCI compliance in mind, this plugin ensures that every transaction is handled safely and efficiently through the NMI (Network Merchants, Inc.) gateway, one of the most reliable payment processors in the market that offers robust payment solutions for merchants to accept a variety of payment methods online, including ACH eChecks.

Key Features of NMI for WooCommerce

  • Easy Installation: Streamlined setup process with minimal configuration. Once installed, browse WooCommerce Settings – Payments and fill out a few fields, and you’ll be set up to accept credit card payments on your store.
  • Secure ACH Processing: Leverages NMI’s tokenization library for secure ACH payments, ensuring PCI compliance.
  • Secure Payment Processing: Leverages the Collect.js tokenization library to securely transmit payment data directly to NMI, eliminating the need for PCI-DSS certification concerns.
  • Card Verification: The plugin integrates card processing and verification to process credit card payments synchronized with card verification.
  • Refund Management: Process full or partial refunds directly from the WooCommerce dashboard, including one-time orders.
  • Restrict Card Types: Optionally choose to restrict certain card types, hiding their icons and providing proper error messages on checkout.
  • Authorize and Capture: Option to authorize transactions initially and capture funds later.
  • Payment Method Restriction: Restrict certain card types during checkout with appropriate error messaging.
  • Gateway Receipts: Option to send payment receipts directly from your NMI account.
  • Detailed Logging: Enable logging to troubleshoot and debug any issues, providing valuable insights when needed.
  • Manage Subscriptions [Enterprise Version]: Utilize the WooCommerce Subscriptions extension to create and manage recurring payment products, offering residual revenue that you can monitor.
  • No Sensitive Data Stored On-Site: Uses NMI’s “customer vault” to charge future payments without storing sensitive data on your site.
  • Customizable Payment Experience: Tailor the payment experience to match your brand’s look and feel by adjusting settings like displayed payment methods and transaction descriptions.
  • Advanced Security: Uses encryption and tokenization to protect sensitive customer data, minimizing data breach risks and ensuring PCI compliance.
  • Extensive Reporting & Analytics: Access transaction history, manage refunds, and analyze gateway performance to optimize sales strategies.

Integrating the NMI Gateway into your WooCommerce store not only streamlines the payment process but also enhances customer trust. By providing a secure environment for transactions, you can reassure shoppers that their sensitive information is protected. This confidence often leads to higher conversion rates and repeat business.

The plugin supports a variety of payment options, catering to diverse customer preferences. Whether your clientele prefers using credit cards or opting for ACH payments, the NMI Gateway ensures that their needs are met. This flexibility can significantly broaden your customer base and improve overall sales.

NMI Gateway for WooCommerce Platform is an essential tool for any online merchant looking to enhance their payment processing capabilities. With its robust security features, user-friendly interface, and extensive customization options, it stands out as a leading choice for businesses of all sizes.

Requirements

  • Active NMI account.
  • WooCommerce version 3.3 or later.
  • Valid SSL certificate for secure transactions and PCI DSS compliance. This plugin does not store sensitive payment data on your site.

Disclaimer

This plugin is not affiliated with or endorsed by NMI, WooCommerce, or Automattic. All trademarks are the property of their respective owners.

Third-Party Services

This plugin integrates with several third-party services to process payments and transactions. The data sent to these services may include sensitive information such as payment details. Below is a list of the third-party services used, including their URLs, terms of use, and privacy policies:

SkyBank Gateway
* API URL: https://secure.skybankgateway.com/api/transact.php

Durango Direct
* API URL: https://secure.durango-direct.com/api/transact.php

Network Merchants Inc. (NMI) **
* **API URL
: https://secure.networkmerchants.com/api/transact.php

PlanetAuthorize Gateway
* API URL: https://secure.planetauthorizegateway.com/api/transact.php

MerchantGuy Gateway
* API URL: https://secure.merchantguygateway.com/api/transact.php

Payline Data Gateway
* API URL: https://secure.paylinedatagateway.com/api/transact.php

Note: For detailed information on how these services handle your data, please review their respective terms of use and privacy policies. We do not control these services and are not responsible for their data handling practices.

Screenshots

Installation

  1. Upload the nmi-for-woocommerce directory to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Navigate to the WooCommerce settings page, select the ‘Payments’ tab, and configure the ‘NMI CC’ (and ‘NMI eCheck’) settings.
  4. Enable the payment method and enter your NMI API keys (Public Key and Private Key).
  5. Save changes and start accepting ACH payments on your WooCommerce store.

FAQ

Is SSL Required?

Yes, a valid SSL certificate is required to ensure secure transactions and PCI DSS compliance.

How do I process refunds?

Refunds can be processed directly from your WooCommerce dashboard.

Can I restrict certain payment methods?

Yes, you can restrict specific payment methods and display custom error messages during checkout.

Reviews

8 Mei 2026 1 reply
This plugin is broken and does not work. It WILL crash your WP site. It installs fine, but brings down the house when it cant find a file that is absent from the plugin.
Read all 1 review

Contributors & Developers

“NMI for WooCommerce” adalah perisian sumber terbuka. Orang-orang berikut telah menyumbang kepada pemalam ini.

Penyumbang

Changelog

1.0.5

Security

  • The private NMI security key is no longer written to the WooCommerce debug log. Credentials in the outbound request are replaced with ***REDACTED*** before logging (CWE-532). Redaction walks nested arrays and objects, and any configured credential value is scrubbed from the log text as a final safety net.
  • Enabled TLS certificate verification (sslverify) on every request to the NMI API. The key was previously sent over an unverified connection.
  • Webhook signature comparison now uses hash_equals(), removing a timing side channel on the webhook signing key.
  • The webhook client IP is validated and unslashed before the allow-list check.
  • Raw gateway responses are no longer printed into customer-facing checkout notices or order notes.
  • process_payment() and add_payment_method() now verify the gateway nonce themselves, so block (Store API) checkout is covered as well as classic checkout. The eCheck form gained the nonce field it was missing.
  • Added wp_unslash() to all remaining $_POST / $_SERVER reads, and sanitized the eCheck descriptor, processor_id and merchant_defined_field values.

Fixed

  • Checkout could not complete on WooCommerce 11. The form was submitted with a native submit(), which does not contribute the Place Order button’s own name/value pair; WooCommerce gates WC_Form_Handler::checkout_action() on exactly that field, so the request was discarded with no order, no error notice and no log entry. The field is now sent explicitly.
  • Removed the customCss block passed to CollectJS.configure(). Collect.js validates it against a narrow whitelist and rejects the whole call if any property falls outside it, which left the hosted card fields unmounted so no token was ever produced.
  • The Cart and Checkout blocks payment method no longer declares a jquery-blockui dependency. WooCommerce registers that script as wc-jquery-blockui and keeps jquery-blockui only as a legacy handle on the classic frontend, so in the blocks context the dependency was unresolvable and WooCommerce deactivated the payment method. BlockUI is now called through helpers that no-op when it is unavailable.
  • get_icon() no longer echoes. The cardtypes multiselect defaults to a bare string, so the is_array() branch never matched on a fresh install and control fell through to a branch that printed markup; WooCommerce also calls this method while assembling Store API JSON for block checkout, where that output corrupts the response.
  • The admin settings screen now hangs its stylesheet off the hook suffix add_submenu_page() returns instead of a hand-reconstructed one, and a stray brace in the stylesheet was removed.
  • Credit card merchant_defined_field_1-20 values were written to the eCheck argument array and never sent to the gateway.
  • The NMI Settings page no longer fatals when the Freemius global is unset.
  • Declared every gateway property explicitly. PHP 8.2 deprecates creating them dynamically, which emitted roughly 38 notices per request on PHP 8.2 and later.
  • Corrected the Installation instructions, which named a directory the plugin has never shipped as.

Compatibility

  • Tested up to WordPress 7.1 and WooCommerce 11.0; minimum PHP raised to 7.4 and minimum WordPress to 6.0.
  • Updated the bundled Freemius SDK from 2.13.0 to 2.13.4.
  • Updated Plugin URI and Author URI (wpclubz.com no longer resolves).

Coding standards

  • Global functions now use the unique nmifw_ prefix instead of the three-character nmi_, and the checkout block class was renamed from WC_NMI_Blocks_Payment_Method to NMIFW_Blocks_Payment_Method so it no longer sits in WooCommerce”’s WC_ class namespace. Gateway class names, gateway IDs and the plugin”’s public filter names are unchanged, so saved settings, tokens and third-party integrations keep working.
  • Replaced the hand-rolled request encoding with http_build_query() (byte-identical output) and print_r() debug dumps with a redaction-aware JSON helper.
  • Removed the discouraged load_plugin_textdomain() call; WordPress loads translations automatically for plugins hosted on WordPress.org.
  • The readme name now matches the plugin header and drops the restricted term “wp”.
  • Added the missing translators comments and replaced json_encode() with wp_json_encode(). The plugin reports no errors or warnings under the WordPress Coding Standards security, i18n and database sniffs.
  • The admin stylesheet now only loads on the plugin”’s own screens.

1.0.4

  • Load Gateway.js and Collect.js from NMI official CDN URLs (fixes JavaScript syntax errors from corrupted bundled vendor files; aligns with NMI documentation)
  • Added WooCommerce Checkout Block support (registerPaymentMethod + Collect.js / 3DS via Store API)
  • Fixed “Payment Token not received” by reading POST with wp_unslash instead of filter_input (PHP/WP compatibility)
  • Fixed payment token hidden inputs: use jQuery .val() so JSON is not corrupted in HTML attributes
  • Fixed process_payment: decode Collect.js JSON as object; derive card display fields after vault branch (saved cards no longer hit NMI card object first)
  • Inline card field mode shows a clear message in block checkout (use classic checkout or disable inline fields)

1.0.3

  • Added High-Performance Order Storage (HPOS) compatibility declaration
  • Replaced all update_post_meta/get_post_meta with HPOS-compatible $order methods
  • Replaced deprecated direct property access ($order->id, $order->parent_id) with getter methods

1.0.2

  • Fixed “Nonce Value Missing” error on checkout
  • Fixed JavaScript event and selector mismatches preventing Collect.js tokenization
  • Fixed saved card token field name references to match gateway ID
  • Added nonce security field to the payment form
  • Guarded eCheck gateway registration when class is not loaded

1.0.1

  • Integrated Freemius SDK

1.0.0

  • Initial release version