- Confirm the cardholder is KYC-approved.
- Fund their internal account.
- Issue a virtual card against that account.
- Simulate an inbound authorization, then a clearing.
- List the resulting
CardTransaction.
Prerequisites
- Sandbox API credentials.
- A
CustomerwithkycStatus: APPROVEDand at least oneInternalAccount. If you don’t have one yet, follow the Payouts quickstart up to “Get the Customer’s Internal Account”.
Fund the cardholder’s internal account
Cards decline at auth time if the bound funding source can’t cover the transaction. Top up the cardholder’s internal account first.Issue the card
state: "PROCESSING" while the issuer
provisions it. platformCardId is generated by the server, and any value
supplied in the request is ignored. When activation completes, a
CARD.STATE_CHANGE webhook fires with state: "ACTIVE":
To display the full PAN, CVV, and expiry to the cardholder, request a
reveal with
POST /cards/{id}/reveal and render the returned
panEmbedUrl in an iframe. The URL is short-lived, so request it right
before rendering. The full card credentials never cross your servers.Simulate an authorization
Sandbox exposes simulate endpoints that drive the same internal paths the card issuer would call in production. The decisioning outcome is controlled by the last three characters ofmerchant.descriptor — any
non-magic suffix is approved.
CardTransaction in status: "AUTHORIZED" with a single pull on the funding source.
Simulate the clearing
The merchant adds a tip and clears for more than the original auth (12.50 hold). Grid handles the over-auth by issuing a post-hoc pull for the difference.SETTLED and settledAmount is 1500.
The webhook payload carries the full CardTransaction with
clearings rolled up into settledAmount; a merchant refund posts as its
own dated CREDIT row linked via originalTransactionId — see
Reconciliation for the full
event model.
You’ve issued a card, watched it activate, and driven an over-auth
transaction through pull and clearing.