NMI integration guide
NMI is a gateway that allows you to collect card and eCheck payments. This guide is intended to help you implement NMI based on your preferred integration workflow.
Services and compatibility
Supported payment types |
|
Supported transaction types | |
Supported processing currencies | AUD, CAD, EUR, GBP, HKD, JPY, MYR, PLN, THB, TWD, USD |
3D Secure 1.x supported | Yes |
3D Secure 2.x supported | Yes |
Installments supported | No |
Gateway-specific information
- NMI supports adding a surcharge amount to a transaction.
- This feature is for merchants who want to pass on the cost of credit card acceptance to the customer.
- This is only supported for transactions with cards issued from the United States.
- The surcharge can only be used with a sale transaction and not with an auth-only to capture workflow.
Configuration
Work with Integrations Support to add NMI as a connection. You will need the following credentials from NMI:
- username
- password
- processor ID
OR
- security key
- processor ID
Required and optional fields
The following table shows the optional fields for NMI transactions in the Create one-time-use token or Run card transaction request.
Field | Required? | Description |
---|---|---|
data.surcharge | No | For card transactions, NMI supports the addition of a surcharge to the transaction. When doing so, you include a value for this parameter and you update the data.amount to include that surcharge amount as well. |
data.descriptor.name | No | For NMI card transactions, include this parameter to dynamically change the descriptor on the customer's statement. If this parameter is not included, the system uses the default descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.address | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the street address of the merchant. If this parameter is not included, the system uses the default street address descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.city | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the city of the merchant. If this parameter is not included, the system uses the default city descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.state | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the state of the merchant. If this parameter is not included, the system uses the default state descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.postal | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the postal code of the merchant. If this parameter is not included, the system uses the default postal code descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.country | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the country of the merchant. If this parameter is not included, the system uses the default country descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.phone | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the phone number of the merchant. If this parameter is not included, the system uses the default phone number descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.url | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the website URL of the merchant. If this parameter is not included, the system uses the default URL descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.merchantId | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the NMI ID of the merchant. If this parameter is not included, the system uses the default ID descriptor (as set up on the merchant account that is originating the transactions). |
data.descriptor.mcc | No | For NMI card transactions only, include this parameter to dynamically change the descriptor on the customer's statement for the merchant category code (MCC). If this parameter is not included, the system uses the default MCC descriptor (as set up on the merchant account that is originating the transactions). |
Example requests
The following is an example run card transaction request for NMI.
curl -X POST https://api.nexiopaysandbox.com/pay/v3/process \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Basic [Base64_encoded_login]'
-d '{
"data": {
"amount": 4.00,
"surcharge": 1.50,
"descriptor": {
"name": "Our Company Name",
"address": "123 Main St.",
"city": "New York City",
"state": "NY",
"postal": "10001",
"country": "US",
"phone": "1555555555",
"url": "https://your-ecommerce-website.example.com",
"merchantId": "1234",
"mcc": "5964"
}
},
"paymentMethod": "card",
"tokenex": {
"token": "eb50a022-d6de-4244-a1e6-dcb8522b2d19"
}
}'
The following is an example run echeck transaction request for NMI.
curl -X POST https://api.nexiopaysandbox.com/pay/v3/processECheck \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Basic [Base64_encoded_login]'
-d '{
"data": {
"amount": 4.00,
"currency": "USD"
},
"tokenex": {
"token": "eb50a022-d6de-4244-a1e6-dcb8522b2d19"
}
}'
Testing data
If you do not have Advanced Testing Triggers enabled on your account, use the following test cards to test your NMI configuration.
Brand | Card number | Exp date | Security code | Cardholder name | 3DS | Transaction result |
---|---|---|---|---|---|---|
Visa | 4111111111111111 | Any future date | Any | Any | N/A | Success |
Mastercard | 5431111111111111 | Any future date | Any | Any | N/A | Success |
American Express | 341111111111111 | Any future date | Any (ex: 1234) | Any | N/A | Success |
Discover | 6011601160116611 | Any future date | Any | Any | N/A | Success |
If you do have Advanced Testing Triggers enabled on your account, use the following test cards to test your NMI configuration.
Brand | Card number | Exp date | Security code | Cardholder name | 3DS | Transaction result |
---|---|---|---|---|---|---|
Visa | 4111110208009428 | Any future date | Any | Any | N/A | Success |
Mastercard | 5412750109056250 | Any future date | Any | Any | N/A | Success |
American Express | 375987004003245 | Any future date | Any (ex: 1234) | Any | N/A | Success |
Discover | 6011000011020538 | Any future date | Any | Any | N/A | Success |
Status workflows
The status of a successful transaction with NMI varies, depending on the options you choose.
Sale | When isAuthOnly is false , successful sale transactions will have the following statuses:
|
Auth only | When isAuthOnly is true , successful sale transactions will have the following status:
|
Capture | Successful capture transactions will have the following statuses:
|
Void | Successful void transactions will have the following status:
|
Refund | Successful refund transactions will have the following statuses:
|
*Pending status displays as "authorized" or "AUTHORIZED" in the Nexio Dashboard; it displays as 10
, meaning "authorized", in the response when querying transactions (for more information about transactionStatus
, see the appropriate transactionStatus
table).
If you have any additional questions or feedback, contact us.
Updated about 2 months ago