Overview
Contro provides a full sandbox environment for testing your integration.
The API key prefix determines the environment:
sk_test_*- Sandbox mode. All operations use a separate ledger and simulated card provider.sk_live_*- Production mode. Operations use real card providers and your live balance.
sandbox: true and never appear in live queries.
Test Data
When issuing cards in sandbox mode, the simulated card provider returns:Async Lifecycle Parity
Live cardholder approval and card provisioning are asynchronous. The sandbox replays the same event sequence after a short delay (~5 seconds), so an integration tested in sandbox handles live timing unchanged:- KYC:
POST /partner/cardholders/{id}/kycreturns{ "status": "pending" }. No external verification provider is contacted. After the delay the cardholder flips toapprovedand the same webhooks as live fire:cardholder.approvedandcardholder.kyc.updated(withsandbox: truein the payload). - Card issuance:
POST /partner/cardsreturns"status": "pending". After the delay the card transitions toactiveand acard.issuedwebhook fires — see asynchronous issuance.
Sandbox-Only Endpoints
These endpoints are only available when using ask_test_ API key. They return 403 Forbidden with a live key.
Simulate Transaction
Simulates a settled card purchase — or a refund of a prior simulated purchase — against a sandbox card. The simulation runs through the same settlement path as live: spend plus fees are deducted from your sandbox balance exactly once, balance thresholds are evaluated, and atransaction.created webhook fires.
To simulate a refund, pass
"type": "refund" with the originalTransactionId returned by the purchase. The refund credits your sandbox balance back; replaying the same refund is idempotent and never double-credits.
The transaction.created webhook payload includes transactionId, cardId, amount, currency, merchantName, status, type, and — for refunds — originalTransactionId.
Reset Balance
Resets your sandbox ledger balance to a specified amount or the default configured during partner creation.Simulate KYC Approval
Triggers sandbox KYC approval for a cardholder. The approval runs through the same short async lifecycle described above — the cardholder flips toapproved after a few seconds and the cardholder.approved / cardholder.kyc.updated webhooks fire.
Go-Live Checklist
Before switching to production, complete the readiness checklist:- KYB Approved - Your organization has been verified
- Sandbox Card Issued - At least one card issued with
sk_test_key - Webhook Verified - At least one webhook successfully delivered
- Live Balance Funded - Your live account has a positive balance
GET /partner/go-live-checklist or the dashboard Go-Live page.