How it works
Sandbox is test mode. Use a test key (sk_test_…) — every /v1/sandbox
endpoint refuses live keys, so production traffic can never create synthetic
data. Sandbox calls never consume your quota.
Nothing in the sandbox touches real data. Every account holder, number,
merchant and amount is fabricated, and a given scenario always returns the
same result.
Create a synthetic report
StatementReport (HTTP 201) — identical in shape to a real
parse — and persists it, so every report sub-endpoint works against the
returned report_id immediately:
Report scenarios
scenario | Profile |
|---|---|
salaried | Regular salary, stable growing balance, light EMI. |
thin_file | Very little history, no salary signal. |
high_risk | Declining balance, an overdraft, heavy EMI load. |
remittance | Foreign inward remittance is the main income source. |
Inject your own transactions
Append edge cases to any scenario:Force an error
To test your error handling, ask for anerror_* scenario — you get the exact
error envelope a real failure would return:
error_unsupported_bank, error_unsupported_document,
error_password_required, error_image_not_tamper_verified,
error_tamper_detected.
Fire a webhook
Trigger a delivery to your registered webhook endpoints on demand — no waiting for a real parse:{ "event": "report.failed", "error_code": "TAMPER_DETECTED" } to exercise
your failure path.