Charge a stored card (MIT)
Charge a stored card when the agreed event happens, with a subsequent charge against the original order. The charge carries the agreement your customer made at setup, and the scheme transaction data that goes with it.
Before you start
- The order reference and payment reference from a completed setup, where your customer finished authenticating and the card was stored.
- A record of what your customer agreed to, and an event that matches it. Charging outside the agreed terms is what disputes are made of.
- An access token.
Never send the security codeDo not include the card security code in a merchant-initiated request. It is collected once, during setup, and is not retained.
Request
| Item | Value |
|---|---|
| Method | POST |
| Resource (sandbox) | https://api-gateway.sandbox.ngenius-payments.com/transactions/outlets/[your-outlet-reference]/orders/[order-reference]/payments/[payment-reference]/subsequent |
| Authorization | Bearer [access-token] |
| Content-Type | application/vnd.ni-payment.v3+json |
| Accept | application/vnd.ni-payment.v3+json |
| Attribute | Required | Type | Description |
|---|---|---|---|
amount.currencyCode | Required | String | ISO 4217 currency code |
amount.value | Required | Integer | Amount to charge, in minor units |
{
"amount": {
"currencyCode": "AED",
"value": 4500
}
}Response
Successful charge:
{
"_id": "urn:payment:1c99c012-6057-42b3-85be-56e73aa8ec14",
"reference": "1c99c012-6057-42b3-85be-56e73aa8ec14",
"state": "PURCHASED",
"amount": {
"currencyCode": "AED",
"value": 4500
},
"savedCard": {
"maskedPan": "401200******1112",
"expiry": "2028-12",
"scheme": "VISA",
"cardToken": "NDk0YWRlOTQtZWMwNi00N2I1LWJmZjktNDI3OThkZWIwZmE1"
},
"authResponse": {
"authorizationCode": "092085",
"success": true,
"resultCode": "00",
"resultMessage": "Successful approval/completion",
"rrn": "418412254552"
},
"updateDateTime": "2026-09-07T11:15:00.000Z"
}Declined charge. Read resultCode before you decide what to do next — see Declines and retries.
{
"_id": "urn:payment:f47ac10b-58cc-4372-a567-0e02b2c3d479",
"reference": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"state": "FAILED",
"amount": {
"currencyCode": "AED",
"value": 4500
},
"savedCard": {
"maskedPan": "401200******1112",
"expiry": "2028-12",
"scheme": "VISA",
"cardToken": "NDk0YWRlOTQtZWMwNi00N2I1LWJmZjktNDI3OThkZWIwZmE1"
},
"authResponse": {
"success": false,
"resultCode": "51",
"resultMessage": "Insufficient funds",
"recommendation": "RETRY_LATER",
"rrn": "418412259981"
},
"updateDateTime": "2026-09-07T11:18:22.000Z"
}| Attribute | Description |
|---|---|
reference | The payment reference for this charge |
state | PURCHASED when the charge succeeds, FAILED when it is declined |
authResponse.resultCode | The response code. See Declines and retries |
authResponse.recommendation | Present on some declines, for example RETRY_LATER |
Common errors
| What you see | What it usually means |
|---|---|
state is FAILED with a resultCode | The issuer declined the charge. What you do next depends on the category of the code — see Declines and retries. |
| The charge is rejected before it reaches the issuer | The card may have been revoked after an earlier hard decline, or the agreement was never completed. Do not retry — ask your customer for a new payment method. |

