Skip to content
Ledgerline Help

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 clear for 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.