{"title":"NMI ACH","slug":"nmi-ach-payment-provider","url":"https://support.storeconnect.com/articles/nmi-ach-payment-provider","url_markdown":"https://support.storeconnect.com/articles/nmi-ach-payment-provider.md","subtitle":null,"summary":"Configure NMI ACH for direct debit bank payments at checkout and on subscription renewals, including reseller gateway endpoints.","type":"Help_Documentation","video_url":"","keywords":"nmi ach, ach direct debit, bank payment, direct debit, echeck, nmi payment provider, us bank account, routing number, account number, collect.js, subscription renewals, reseller gateway, payment provider configuration","last_modified":"2026-09-16T07:15:50+0000","body_markdown":"This topic explains how to configure NMI ACH as a payment provider in StoreConnect, so customers can pay by direct debit from a US bank account.\n\nNMI ACH is a separate payment provider from NMI card payments. If you want to offer both, create a **Payment Provider** record for each. See [NMI](nmi-payment-provider) for the card provider.\n\n## Supported features\n\n- Standard Checkout\n- Subscriptions\n- Update Subscriptions\n\nRefunds can't be processed through StoreConnect for this provider. Refund an ACH payment in your NMI account instead.\n\n## Before you begin\n\n- An NMI account with ACH enabled\n- Your NMI Tokenization key and Private Security Key\n- Permission to create records in **Settings \u003e Payments \u003e Payment providers**\n\n## Get credentials from NMI\n\nNMI provides both of the keys you need. They also provide separate keys for testing the integration in a sandbox.\n\n1. Sign into your NMI account.\n2. For sandbox testing, go to **My Sandbox Keys** and copy the **Tokenization key** and the **Private Security Key** for **api (Payment and Query APIs)**.\n3. For production, use the keys provided to you when your ACH account was set up.\n\n## Configure NMI ACH in StoreConnect\n\n1. Go to **Settings \u003e Payments \u003e Payment providers**.\n2. Select **New**, complete the fields as follows, then **Save**.\n\n| StoreConnect field | Select or enter |\n| :---- | :---- |\n| **Name** | NMI ACH, or NMI ACH - test (for sandbox) |\n| **Display Name** | The label customers see at checkout, for example `Bank account` |\n| **Provider** | The NMI ACH option (picklist value API name `NmiAch`) |\n| **API Mode** | `sandbox` or `production` |\n| **API Key** | Your NMI Tokenization key |\n| **API Secret** | Your Private Security Key (Payment and Query APIs) |\n| **Channels** | Leave blank, or include `web` |\n\n:::warning\nThe **API Key** field must contain your NMI Tokenization key. StoreConnect passes it to NMI's Collect.js library, which renders the bank account fields at checkout. If it is empty, those fields do not appear and customers cannot pay.\n:::\n\n:::note\n**Channels** controls where the provider is offered. A provider that excludes `web` is not available at checkout or on subscription renewals, and renewals fail with an unsupported payment method message. The provider must also be **Active** for subscription renewals to charge.\n:::\n\nThe new method now appears at checkout under the **Display Name** you set, alongside any other payment providers on the store.\n\n## Configure a custom gateway endpoint\n\nNMI reseller gateways, for example Pinnacle Bank, host merchant accounts on their own API endpoints rather than NMI's default infrastructure. To connect to a reseller gateway, add a `gateway_host` option to the **API Options** field on the **Payment Provider** record:\n\n```yaml\n\ngateway_host: \u003cyour-reseller-gateway-hostname\u003e\n```\n\nFor example:\n\n```yaml\n\ngateway_host: secure.pinnaclebankpayments.com\n```\n\nThe `gateway_host` value is the fully qualified domain name of the reseller's gateway. StoreConnect uses this host for all API calls and for loading the Collect.js tokenization script. When `gateway_host` is not set, StoreConnect falls back to NMI's default endpoints (`sandbox.nmi.com` in sandbox mode, `secure.nmi.com` in production).\n\n:::note\nContact your NMI reseller for the correct gateway hostname. This value is specific to each reseller's infrastructure and cannot be found in the standard NMI documentation.\n:::\n\n## What customers see at checkout\n\nWhen a customer selects the ACH method, they complete these fields:\n\n- **Account holder type** — personal or business\n- **Account type** — checking or savings\n- **Routing number**\n- **Account number**\n- **Name on account**\n\nThe routing number and account number are hosted by NMI's Collect.js library, so those values are sent straight to NMI and never reach your store or your Salesforce org.\n\n## Subscriptions and renewals\n\nWhen a customer pays by ACH for a subscription, StoreConnect stores a reusable vault entry with NMI and saves the reference on the **Subscription** record, so renewals can be charged without asking for the bank details again.\n\nThe **Payment Source Identifier** on the subscription holds the name on the account, not a masked account number. A bank account has no expiry date, so no expiry is stored.\n\nCustomers update their saved bank details from the payment section of their subscription in their account.\n\n## Payment status and reconciliation\n\nACH is not an instant payment method. The bank confirms the debit after the customer completes checkout, so the **Payment** record is created with a status of `Pending` while the debit clears. The NMI transaction ID is stored on the payment record so you can reconcile it against your NMI account once the funds are credited.\n\n:::warning\nA payment that is still `Pending` cannot be refunded through StoreConnect.\n:::\n\n## Limitations\n\n- ACH is a US bank network, so this provider only supports payments in USD from US bank accounts.\n- It takes 1-4 business days before the money is credited to your account.\n- A debit can be returned after it appears to have cleared, for example for insufficient funds or a closed account. Use your NMI account as the source of truth for returns.\n- 3D Secure does not apply to bank payments. It is a card feature, covered in [NMI](nmi-payment-provider).\n\nTo learn more about how ACH works, see [ACH direct debit](ach-direct-debit)."}