The sandbox
Updated 13 September 20263 min read
On this page
The sandbox is a complete copy of the Ledgerline API with simulated banks. Use it to build and test your integration without moving real money and without waiting for business verification. It is free on every plan.
Connecting
| Detail | Sandbox | Live |
|---|---|---|
| Base URL | https://sandbox.api.ledgerline.dev/v1 |
https://api.ledgerline.dev/v1 |
| Key prefixes | ll_test_sk_, ll_test_rk_ |
ll_live_sk_, ll_live_rk_ |
| Dashboard toggle | Test mode | Live mode |
| Data | Separate | Separate |
Sandbox and live share no data. An id created in one does not exist in the other, so a resource_not_found error right after creating something usually means the environment is wrong. Rate limits are the same: 600 requests per minute per key. See Rate limits.
What is simulated
- Banks and rails. ACH, wires, SEPA and instant networks are simulated. Nothing leaves Ledgerline.
- Time. ACH payouts settle in about 60 seconds instead of 1 to 2 business days, and cut-offs are not enforced.
- Verification. Business verification is approved automatically.
- Screening. Sanctions screening returns
clearfor every name except those described below. - Webhooks. Events are delivered to your endpoints exactly as in live, signed with the sandbox endpoint secret.
Test bank accounts
Create a counterparty bank account with routing number 110000000 and one of these account numbers to trigger a specific outcome. Bank account verification completes instantly for all of them.
| Account number | Outcome |
|---|---|
000111111116 |
The payout succeeds and reaches paid. |
000111111113 |
The payout is returned with ACH code R01, insufficient funds. |
000222222226 |
The payout failed with ACH code R02, account closed. |
Any other account number behaves like the first one.
curl https://sandbox.api.ledgerline.dev/v1/counterparties/cpt_01JA6B3M7V/bank_accounts \
-H "Authorization: Bearer $LEDGERLINE_API_KEY" \
-d account_number=000111111113 \
-d routing_number=110000000 \
-d currency=USD
Magic values for verification and screening
| Field | Value | Result |
|---|---|---|
| Business name in KYB | contains REVIEW |
Status becomes needs_info. |
| Business name in KYB | contains REJECT |
Status becomes rejected. |
| Counterparty name | contains SANCTION |
Screening returns blocked. |
| Counterparty name | contains MATCH |
Screening returns review. |
Controlling time
Real banks are slow, and tests should not be. Advance a payout manually:
curl -X POST https://sandbox.api.ledgerline.dev/v1/sandbox/payouts/pay_01JA6D4H2K/advance \
-H "Authorization: Bearer $LEDGERLINE_API_KEY"
Each call moves the payout to its next status, so you can step through scheduled, submitted and paid and watch the events arrive. The endpoint exists only in the sandbox.
To simulate money arriving, create a deposit with POST /v1/sandbox/virtual_accounts/{id}/deposit and an amount. It posts to the linked account as if an ACH credit had arrived.
Resetting
Open Developers > Sandbox in the dashboard and choose Reset sandbox to delete all test data and start fresh. Keys and webhook endpoints are kept. A reset cannot be undone.
Differences to remember
Note
The sandbox is faithful to the API shape and error codes, but not to timing. Cut-offs, settlement delays and weekend FX market closures are not simulated, so test those paths by reading the documented rules in Payment rails and FX quotes and conversions.
Other differences: statements are generated on demand instead of monthly, and reconciliation uses the simulated bank feed.
Next
When your integration passes, follow the going-live checklist.