Simulate a card authorization
Changed onSimulate an inbound card authorization in the sandbox environment. Drives the same internal authorize + reconcile paths the card issuer would call in production, so platforms can exercise Grid's decisioning + funding-source pull behavior end-to-end without an external network round-trip.
The decisioning outcome is controlled by the last three characters of merchant.descriptor:
| Suffix | Outcome | | ------ | ------- | | 002 | Declined, cardDeclinedReason: INSUFFICIENT_FUNDS. Sandbox only: production approves an underfunded authorization and resolves it as EXCEPTION when the pull fails | | 003 | Declined, cardDeclinedReason: CARD_NOT_ACTIVE. Use against a FROZEN card to verify it refuses authorizations | | 005 | Delayed pull (~30s) — exercises the PENDING → CONFIRMED path | | 006 | Pull succeeds but the confirmation event reports FAILED — exercises the high-urgency EXCEPTION alert | | any other | Approved |
merchant.descriptor must be 1–25 characters — the width of the card network's acceptor-name field. A longer one is rejected with 400 INVALID_INPUT.
Production returns 404 on this path.
Request
- Base URL: https://api.lightspark.com/grid/2025-10-13
- URL: https://api.lightspark.com/grid/2025-10-13/sandbox/cards/{id}/simulate/authorization
- Auth: HTTP basic
Path parameters
The id of the card to simulate an authorization against.
Request body
Example request
{
"amount": 1250,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
},
"merchant": {
"descriptor": "BLUE BOTTLE COFFEE SF",
"mcc": "5814",
"city": "San Francisco",
"state": "CA",
"country": "US"
}
}Response
Simulation accepted. The resulting card operation is delivered asynchronously via the issuer's events webhook. Returns the issuer transaction token that correlates the simulated event.
Example response
{
"issuerTransactionToken": "f3a1c2d4-5b6e-7890-abcd-ef0123456789"
}Changes
- breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - warning
added the new
ACCOUNT_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
AUTH_METHOD_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
CUSTOMER_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
CUSTOMER_NOT_VERIFIEDenum value to theresponse property for the response status - warning
added the new
DOCUMENT_ALREADY_EXISTSenum value to theresponse property for the response status - warning
added the new
DOCUMENT_HOLDER_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
DUPLICATE_EXTERNAL_ACCOUNTenum value to theresponse property for the response status - warning
added the new
DUPLICATE_PAY_REQUESTenum value to theresponse property for the response status - warning
added the new
INSUFFICIENT_FUNDSenum value to theresponse property for the response status - warning
added the new
NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
PAYMENT_URL_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
PLATFORM_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
QUOTE_EXPIREDenum value to theresponse property for the response status - warning
added the new
QUOTE_RATE_UNAVAILABLEenum value to theresponse property for the response status - warning
added the new
REQUEST_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
SANCTION_BLOCKEDenum value to theresponse property for the response status - warning
added the new
SESSION_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
SMS_OTP_CREDENTIAL_SET_CHANGEDenum value to theresponse property for the response status - warning
added the new
SMS_OTP_PHONE_NUMBER_ALREADY_EXISTSenum value to theresponse property for the response status - warning
added the new
STABLECOIN_AMOUNT_NOT_REPRESENTABLEenum value to theresponse property for the response status - warning
added the new
STABLECOIN_BURN_SOURCE_NOT_SUPPORTEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_LINK_FAILEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_LINK_METHOD_REQUIREDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_NOT_LINKEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_NOT_SUPPORTEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_PROVIDER_LINK_FAILEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_EXTERNAL_ACCOUNT_PROVIDER_LINK_REQUIREDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_GRID_OPERATIONS_NOT_ENABLEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_NOT_PROVISIONEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_OPERATION_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_OPERATION_NOT_SUPPORTEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_PROVIDER_ERRORenum value to theresponse property for the response status - warning
added the new
STABLECOIN_PROVIDER_SOURCE_NOT_LINKEDenum value to theresponse property for the response status - warning
added the new
STABLECOIN_SYMBOL_ALREADY_EXISTSenum value to theresponse property for the response status - warning
added the new
STABLECOIN_TOKEN_IDENTIFIER_ALREADY_EXISTSenum value to theresponse property for the response status - warning
added the new
STABLECOIN_VERIFICATION_FAILEDenum value to theresponse property for the response status - warning
added the new
VERIFICATION_NOT_FOUNDenum value to theresponse property for the response status - warning
added the new
WALLET_NOT_PROVISIONEDenum value to theresponse property for the response status - info
added the required property
to the response with the status - info
added the required property
to the response with the status - info
added the required property
to the response with the status - info
added the required property
to the response with the status - info
added the required property
to the response with the status - info
added the required property
to the response with the status
- breaking
- warning
added the new
BANK_ACCOUNT_VALIDATION_PENDINGenum value to theresponse property for the response status
- warning