[Skip to main content](#vessel-content)

☰ Documentation

#  NMI payment plugin

Details    Written by: Administrator    Category: [Payment plugins](/support/documentation/hikashop/payment-plugins)     Published: 09 November 2026     Hits: 7

## Installation

- 1) Get a merchant account with a gateway on NMI (from NMI, Merchant One or another provider). To try the plugin first, open a free sandbox account at NMI's developer portal (guide.nmi.com).
- 2) Download the NMI plugin from our website, install it on your website and enable it.
- 3) In your gateway's merchant portal, open Settings, Security Keys: create a private key with the API permission, and a public key of the tokenization (Collect.js) type. Copy both.
- 4) In HikaShop, go to System &gt; Payment methods, create an NMI payment method, choose your gateway, set Test mode to match the keys, and paste the two keys. Saving checks the private key with the gateway.
- 5) Restrict the method to the currencies your processor takes (Merchant One accounts are in US dollars), in the method's restrictions.

## Configuration

![The settings of the NMI payment method in HikaShop](/images/doc/plugins/nmi/nmi_settings.png)

- **Gateway**: the gateway of your merchant account, NMI or the provider that sold it to you. Other for one not listed.
- **Gateway address**: only with Other: the address of your gateway's merchant login, such as https://secure.yourgateway.com.
- **Private API key**: the private key of Security Keys. Keep it secret.
- **Public tokenization key**: the tokenization key of Security Keys; without it the card fields cannot be shown.
- **Test mode**: Yes with the keys of an NMI sandbox account, whatever the gateway chosen; No with the keys of your merchant account.
- **Payment action**: Sale charges the card at once; Authorize, then capture only holds the amount until the capture status.
- **Capture status**: with Authorize, the status that charges the card, for the order's total and at most what was authorized.
- **Duplicate check (seconds)**: leave empty to keep your gateway's own duplicate check. Some processors refuse any other value.
- **Debug**: writes every exchange with the gateway in the payment log of HikaShop.
- **Verified status**: the status of a paid order.
- **Authorized status**: with Authorize, the status of an order whose amount is held, waiting for the capture.
- **Cancelled status**: moving an order to it voids the transaction while the gateway has not settled it.
- **Refunded status**: moving an order to it refunds what is left of the payment (or voids an authorization never captured).

## Troubleshooting

- "The gateway refused the private API key" when saving: the key is not one of this gateway's account, or Test mode does not match it (a sandbox key needs Test mode on).
- "The card fields could not be loaded" at the checkout: the public tokenization key is missing, of another gateway or of the other mode.
- "The payment was refused" with the gateway's reason: the reason says what to change, for instance a currency or a card brand your processor does not take.
- "This payment was just made with the same card and amount": the gateway's duplicate check refused a second identical payment made within a few minutes. Check the order before charging again.
- A refund refused because the payment is not settled yet: only the whole payment can be cancelled until the gateway's next batch (move the order to the refunded or cancelled status); refund part of it the day after.
