https://api-sandbox.therius.io/v1, prv_sandbox_... keys) is a fully isolated environment. Requests are handled by the built-in Therius sandbox provider, which simulates responses without touching a card network — no real money moves. This page lists the test data that drives each simulated outcome.
The card numbers below apply to the built-in Therius sandbox provider. If you have configured a real provider in sandbox/test mode (for example Stripe test keys), that provider’s own test-card set applies instead — use the numbers from their documentation.
Using the test cards
- Send the request with a
prv_sandbox_...key, or add the headerX-Environment: sandbox. - Use any future expiry (for example
12/29) and any 3-digit CVV (for example123). - American Express requires a 4-digit CVV (for example
1234).
Approvals
Declines
Each of these card numbers returns adeclined status with a matching refusalCode — see Declined Payments for the full code reference.
3D Secure
3DS is enabled per route, not per card — the step-up decision is made by a 3D Secure step in the routing pipeline. The default seeded sandbox route sends the BINs below through the built-in 3DS simulator and then to the sandbox gateway, so these cards work out of the box.Walking through the challenge card
1
Submit the purchase
Charge
4000002500003155. The response is:2
Send the shopper to the challenge URL
Redirect to
actionRequired.url. The sandbox simulator treats the challenge as instantly completed — no interaction is required.3
Resume the payment
Call
POST /payment/resume with { "sessionId": "..." } and your Authorization: Bearer prv_sandbox_... header — the prv_sandbox_ prefix routes to the sandbox. Sessions are single-use and expire after 15 minutes. A successful resume returns the final PaymentResponse with status: "captured".The sandbox gateway refuses the two 3DS BINs (
40000032200, 40000025000) if they arrive without ECI/CAVV data — so an approval proves the 3DS handoff actually happened, rather than the step being silently skipped.Alternative payment methods
Send anapm block instead of card. No card number is needed. Each method returns a deterministic sandbox response:
Subscriptions in the sandbox
- Create a subscription with any approval card above. It is stored on the sandbox database, fully separate from production.
- The dunning worker processes sandbox subscriptions on the sandbox schedule.
- Webhook deliveries for sandbox events are written to the sandbox delivery log and are marked with
"environment": "sandbox"in the payload.
Idempotency in the sandbox
TheIdempotency-Key header is optional in the sandbox but behaves exactly as it does in production — retrying with the same key returns the cached first response. Build the habit here so your production code is already correct. See Idempotency.
