Sandbox
API Documentation · Zypher Global
The Sandbox lets you validate your entire integration (create a charge, receive the webhook, check status) WITHOUT moving real money. Nothing is actually confirmed, it is 100% isolated.
"sandbox": true field).Test Key (public)
Use these ready-to-go credentials, no need to generate anything. They are public on purpose (the sandbox moves no money).
X-Client-Id: xpagsandbox_00000000
X-Client-Secret: 202620262026202620262026
1) Create a test charge
POST /cashin · same route as production. Change currency to BRL · MXN to test each currency.
{
"currency": "BRL",
"amount": 100.00,
"external_id": "TESTE-001",
"webhook_url": "https://seusistema.com/webhooks/zypherglobal"
}
{
"sandbox": true,
"ok": true,
"status": "pending",
"currency": "BRL",
"amount": 100,
"fee": 3,
"request_number": "sbx_...",
"transaction_id": "SBX-...",
"copy_paste": "00020101...TEST...",
"expire_minutes": 30
}
Keep the transaction_id, you use it to simulate the payment in the next step. Each currency returns its matching payment instruction in the response (e.g. clabe for MXN, payee_data for COP).
2) Simulate the payment (fires the webhook)
POST /sandbox/simulate · confirms (or fails) the test charge and fires the webhook to your webhook_url, identical to production.
{
"transaction_id": "SBX-...",
"outcome": "paid"
}
outcome: paid · failed · expired — test every scenario of your handler.
{
"sandbox": true,
"type": "cashin",
"status": "confirmed",
"amount": 100,
"fee": 3,
"transaction_id": "SBX-...",
"external_id": "TESTE-001",
"e2e": "E...",
"provider": "Zypher Global"
}
Test balance and withdrawal
In the sandbox the /balance returns a high test balance, so you can test /cashout (withdrawal) without real funds. The test withdrawal also accepts /sandbox/simulate to simulate settlement.
