> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.givechariot.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.givechariot.com/_mcp/server.

# Sandbox

When building your application, you'll likely want to fully test functionality in the sandbox environment before going live.

All APIs in these docs are available in Sandbox.

Additionally, Chariot provides a set of [Simulation APIs](/api/sandbox-simulations), which are only available in Sandbox.
These APIs allow you to quickly test financial related events that might take long periods of time to occur in the real world (Production).

If you have a sandbox Event Subscription configured, calling these APIs will also result in the appropriate webhooks being sent to your endpoint.

## Testing disbursement payment rails

Which [payment rail](/guides/disbursements/disbursement-lifecycle#payment-rail-lifecycle) a disbursement settles on depends on whether the recipient
organization has a Chariot account. An organization without a Chariot account is paid by [mailed check](/guides/disbursements/disbursement-lifecycle#mailed-check);
an organization with one is paid electronically.

In Sandbox, an organization you disburse to has no Chariot account by default, so its disbursements settle as a check. To test the electronic rails,
onboard the organization first with the [Simulate Onboard Organization](/api/organizations/onboard) simulation. Onboarding provisions a Chariot account for the
organization and lets you choose which electronic rail its disbursements settle on:

| `settlement`                          | Payment rail                                                                      |
| ------------------------------------- | --------------------------------------------------------------------------------- |
| `SANDBOX_SETTLEMENT_ACCOUNT_TRANSFER` | [Account transfer](/guides/disbursements/disbursement-lifecycle#account-transfer) |
| `SANDBOX_SETTLEMENT_ACH`              | [ACH transfer](/guides/disbursements/disbursement-lifecycle#ach)                  |

### Request

POST [https://api.givechariot.com/v1/simulations/organizations/onboard/\{id}](https://api.givechariot.com/v1/simulations/organizations/onboard/\{id})

```curl
curl -X POST https://api.givechariot.com/v1/simulations/organizations/onboard/org_1LaXpKGUcADgqoEMl0Cx0Ygg \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "settlement": "SANDBOX_SETTLEMENT_ACCOUNT_TRANSFER"
}'
```

```typescript
import { ChariotClient } from "@chariot-giving/typescript-sdk";

async function main() {
    const client = new ChariotClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.organizations.onboard({
        id: "org_1LaXpKGUcADgqoEMl0Cx0Ygg",
        settlement: "SANDBOX_SETTLEMENT_ACCOUNT_TRANSFER",
    });
}
main();

```

To test the [check](/guides/disbursements/disbursement-lifecycle#mailed-check) rail, simply disburse to an organization you have not onboarded.

> **Note**
>
> The `settlement` is fixed the first time you onboard an organization. Once an organization has been onboarded, its disbursements settle on the chosen
> rail even if you later intend to test a different one. To exercise another rail, onboard a different organization.

> **Deprecated**
>
> Earlier versions of the Sandbox relied on a fixed set of pre-configured test organizations (EINs `752456162`, `861649851`, and `132555281`) to
> exercise the different payment rails. These are being deprecated in favor of onboarding organizations programmatically with the
> [Onboard Organization](/api/organizations/onboard) simulation, which works for any organization.