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 |
External 3D Secure supported | Yes |
Installments supported | Yes |
Supported terminals | Ingenico Link/2500 |
Gateway-specific information
- NMI supports the Address Verification Service (AVS) feature.
- NMI supports the Security code verification feature.
- NMI supports terminal transactions: Configuring your terminal for NMI
- 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
Note
If you will be using cloud-based terminals with NMI, you must provide the
security key
andprocessor ID
values.
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 |
Testing terminal transactions
NMIs testing workflow uses the same card information for every transaction. Change the amount value in order to create different testing situations:
Amount | Transaction result |
---|---|
Any amount greater than or equal to $1.00 | Success |
Any amount less than $1.00 | Failure |
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