Skip to content
API DocsDocs

Sandbox Test Data

All test cards and APM flows for sandbox testing — the canonical reference

2 min readUpdated Mar 26, 2026

Use this page as the single reference for all sandbox test data. All test transactions are simulated — no real money is moved.

Credentials: Sandbox credentials are not issued automatically. Contact your assigned account manager to receive sandbox API keys and merchant IDs before testing.

Sandbox base URL: https://sandbox.api.exirom.com/api


#Test Cards

Use any future expiry date (e.g., expMonth: "12", expYear: "2028") and any 3-digit CVV for all test cards.

#Card Payment (POST /api/v1/payments/card)

Card NumberBehavior3DS
4111111111111111Approved — instant successNo
40000000000032203DS Challenge — returns CUSTOMER_VERIFICATION + challengeUrlYes
42639826402692993DS Challenge (HPP) — challenge page with ACCEPT / DECLINE buttonsYes
4580271111111234Frictionless 3DS — redirects to success URL automaticallyYes
Any other numberDeclined — returns transactionStatus: FAILED

#Tokenize & Charge (POST /api/v1/payments/card/tokenize + /charge)

Use 4111111111111111 to tokenize successfully. Charging a valid token returns SUCCEED.

#Payouts (POST /api/v1/payouts/card)

Use 4111111111111111 as the recipient card. Payout returns PENDING then SUCCEED via webhook.


#APM Test Flows

For APM transactions, control the sandbox outcome using the customFields.flow field inside apmPayload:

ValueBehavior
"challenge"Redirects to a test page with APPROVE / DECLINE buttons
"frictionless"Transaction completes automatically without user interaction
{
  "apmPayload": {
    "paymentMethod": "SMART_QR",
    "paymentType": "E_WALLET",
    "customFields": {
      "flow": "challenge"
    }
  }
}

These customFields values are sandbox-only. In production, providers apply their own logic and may ignore this field.


#Testing Webhooks

Exirom sandbox sends real webhook callbacks to your callbackUrl:

  • Use webhook.site or ngrok to inspect callbacks during development
  • Verify your endpoint returns HTTP 200 immediately — Exirom retries on timeouts or non-200 responses
  • See Callback Retry Mechanism for the retry schedule

#Interactive Sandbox

Send a live request to the sandbox directly from the docs:

Sandbox·POSThttps://sandbox.api.exirom.com/api/v1/payments/card

#See Also

Was this helpful?