https://sandbox.javalibridge.com. Sandbox credentials are separate from production credentials and are issued at onboarding.
How it works
In production, validation, compliance, FX, Pix and time move your records from one status to the next. In the sandbox each record waits: you choose the next status with one endpoint,POST /v1/sandbox/simulations.
Errors of the simulation endpoint:
Every simulation is also available in the sandbox portal: open the record and use Simulate. It calls the same endpoint.
What you can simulate
Senders
POST /v1/senders creates the sender as PENDING. It stays PENDING until you simulate the compliance decision.
Any status can move to any other. The compliance level is calculated from the data you send, as in production: a sender without the
LEVEL_1 data is LEVEL_0 and cannot send, even when ACTIVE.
Beneficiaries and Pix keys
POST /v1/beneficiaries creates the beneficiary as PENDING and each Pix key as SCREENING. They are approved separately, as in production.
A remittance needs the beneficiary
ACTIVE and the Pix key APPROVED. Any Pix key is accepted at registration.
Quotes
POST /v1/fx/quotes returns a quote AVAILABLE with the standard validity. To test an expired quote without waiting, simulate QUOTE → EXPIRED.
Withdrawals
POST /v1/remittances/withdrawals creates the remittance as RECEIVED and sends the first remittance.status_changed. RECEIVED means the request was accepted and is waiting for validation. In the sandbox it stays RECEIVED until you simulate the next step.
The paths you will want to test:
Effects are the same as in production:
PROCESSINGreserves the credit limit, the prefunded balance or the Inventory volume.REJECTEDreleases what was reserved. The quote and the external ID are not released: use new ones to try again.COMPLETEDmakes the receipt available inGET /v1/remittances/{remittanceId}/receipt. ACREDITremittance enters the open settlement batch.FUNDS_HELD_BRLandREFUNDED_BY_USERreturn nothing to your wallets or to your credit line.
Simulating
PROCESSING runs the real validation. If the withdrawal has a real problem, such as a sender that is still PENDING, the remittance goes to REJECTED with the real code instead, and the response of the simulation shows it.Rejections
A rejection is a remittance that goes toREJECTED, with the cause in rejectedCode and a readable text in rejectedDescription. To test one, create a withdrawal and simulate REJECTED with the code you want:
GET /v1/remittances/{remittanceId} then return:
rejectedCode is required when you simulate REJECTED. rejectedDescription is filled with the standard text of the code: you do not send it.
From RECEIVED, these codes are accepted:
From
PROCESSING or ON_HOLD, the only code accepted is COMPLIANCE_REJECTED: compliance declined the remittance, and the reason is not detailed.
Errors in the response
Only errors about the request itself are returned in the HTTP response of the withdrawal. You reproduce them with a real request, without the simulation endpoint.Settlements
A batch opens when the firstCREDIT remittance of the day is COMPLETED. Time and the USDC payment are simulated.
CLOSED, DUE and OVERDUE follow this order. Batches do not send webhooks: read them in GET /v1/settlements.
Inventory lots
POST /v1/inventories creates the lot with status = ACTIVE and obligation.status = PENDING.
Not available in the sandbox
RATE_LIMITED (429), INTERNAL_ERROR (500) and SERVICE_UNAVAILABLE (503) cannot be reproduced on demand. Follow the retry rules in API conventions.
Balances and limits
The sandbox account starts with a prefunded USD balance, a credit line and the funding modes agreed for your account. Check them withGET /v1/wallets, GET /v1/credit-line and GET /v1/limits. No real money moves.
Before going live
Run each scenario below. A scenario is done when the API returned what is expected and every webhook shows a2xx delivery in GET /v1/webhooks/{webhookId}/deliveries.
Scenarios 15 to 17 apply only to the funding modes enabled for your account.

