Skip to main content
The card network can’t reach into Sandbox to send real authorizations, so Sandbox exposes three simulate helpers that drive the same internal authorize and reconcile paths the issuer would call in production. Production returns 404 on these paths.
Authorization outcomes are deterministic and driven by magic-value suffixes on merchant.descriptor. Other Sandbox helpers use the identifier suffixes described in their sections, including /sandbox/internal-accounts/{id}/fund.

Funding-source suffixes (accountId)

Binding a funding source resolves based on the last three characters of accountId:

Authorization simulate

Outcomes are controlled by the last three characters of merchant.descriptor: The response is the resulting CardTransaction.

Clearing simulate

  • amount > authorizedAmount exercises the over-auth post-hoc pull path (restaurant tip / tip-on-top).
  • amount = 0 exercises AUTHORIZATION_EXPIRY — the auth expires with no clearing posted.
Suffix-driven outcomes on the parent transaction’s id govern whether the post-hoc pull succeeds — use them with the merchant descriptor suffixes above to construct deterministic exception scenarios.

Return simulate

A refund posts as its own dated CREDIT CardTransaction linked to the purchase via originalTransactionId; the purchase keeps its SETTLED status, whether the refund is full or partial.

End-to-end happy path

A simple Sandbox loop that exercises issue → activate → auth → clear → refund:
At each step you’ll see CARD.STATE_CHANGE webhooks plus transaction webhooks for the simulated authorization, clearing, and return — wire those into your local webhook handler to validate end-to-end.