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

# How It Works

## Platform Onboarding

#### 1. Set up account

Create a

Chariot Deposit Account

#### 2. Fund your account

Add funds to your

Chariot Deposit Account

#### 3. Send a payment

Send your first disbursement to a verified nonprofit

To get started with

Chariot Disbursements

, you’ll need to register for an account with Chariot, open a Chariot Deposit Account, and go through the onboarding processes for both.

After you are approved and verified, you'll be given access to a dashboard where you will be able to manage and create `API Keys`.

## Send a Disbursement

This section provides the steps required to send a disbursement via API. Note, you can also initiate and send disbursements directly from your dashboard.

### Fund your account

Fund your Chariot Deposit Account with the amount of money you'd like to send in disbursements.

You can do this by creating an [Inbound Transfer](/api/inbound-transfers/create) or by sending an ACH credit to your Chariot Deposit Account.
You can use the [GET Financial Account Balance](/api/financial-accounts/get-balance) endpoint to check the balance of the account.

> **Note**
>
> You can create disbursements before your account is funded, but they will remain in `awaiting_balance` status until sufficient funds are available. Alternatively, you can use [Just-In-Time (JIT) funding](/guides/disbursements/disbursement-lifecycle#just-in-time-jit-disbursements) to have Chariot automatically fund disbursements when they are approved.

### Request

POST [https://api.givechariot.com/v1/inbound\_transfers](https://api.givechariot.com/v1/inbound_transfers)

```curl
curl -X POST https://api.givechariot.com/v1/inbound_transfers \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "amount": 10000
}'
```

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

async function main() {
    const client = new ChariotClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.inboundTransfers.create({
        amount: 10000,
    });
}
main();

```

### Find an Organization

Next, search for the nonprofit organization using their name or EIN:

### Request

GET [https://api.givechariot.com/v1/organizations/search](https://api.givechariot.com/v1/organizations/search)

```curl
curl -G https://api.givechariot.com/v1/organizations/search \
     -H "Authorization: Bearer <token>" \
     -d q=q
```

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

async function main() {
    const client = new ChariotClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.organizations.search({
        q: "q",
    });
}
main();

```

If the organization cannot be found through Chariot's search, you can submit a [Verification Request](/api/verification-requests/create) to have Chariot's compliance team review and verify the organization. See [Disbursing to Unlisted Organizations](#disbursing-to-unlisted-organizations) below.

### Create a Disbursement

Finally, create a `Disbursement` to the Organization with the amount that you want to send.

You can create multiple `Transactions` for a single `Disbursement` to attribute multiple individual donations to the same `Disbursement`.

### Request

POST [https://api.givechariot.com/v1/disbursements](https://api.givechariot.com/v1/disbursements)

**`Disbursement with DAF grant transactions`**

```curl Disbursement with DAF grant transactions
curl -X POST https://api.givechariot.com/v1/disbursements \
     -H "Authorization: Bearer <token>"
```

**`Disbursement with DAF grant transactions`**

```typescript Disbursement with DAF grant transactions
import { ChariotClient } from "@chariot-giving/typescript-sdk";

async function main() {
    const client = new ChariotClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.disbursements.create({});
}
main();

```

Once you receive a successful response, Chariot will use the funds in your account to push a payment to the organization.
You can call the [GET Disbursement](/api/disbursements/get) endpoint to see the status of the submission.

To learn more about how to handle errors, please refer to the [FAQ](/guides/disbursements/faq).

## Disbursing to Unlisted Organizations

If the organization you want to disburse to is not found through Chariot's [Search Organizations](/api/organizations/search) endpoint,
you can use the **Verification Request** API to request that Chariot's compliance team verify the organization.

### Create a Verification Request

Submit a verification request with the organization's EIN, name, and mailing address. You can track the status of the request using the [GET Verification Request](/api/verification-requests/get) endpoint.

### Request

POST [https://api.givechariot.com/v1/verification\_requests](https://api.givechariot.com/v1/verification_requests)

```curl
curl -X POST https://api.givechariot.com/v1/verification_requests \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "ein": "123456789",
  "organization_name": "Local Community Foundation",
  "recommended_mailing_address": {
    "line1": "123 Main St",
    "city": "San Francisco",
    "state": "CA",
    "zip_code": "94105"
  }
}'
```

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

async function main() {
    const client = new ChariotClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.verificationRequests.create({
        ein: "123456789",
        organizationName: "Local Community Foundation",
        recommendedMailingAddress: {
            line1: "123 Main St",
            city: "San Francisco",
            state: "CA",
            zipCode: "94105",
        },
    });
}
main();

```

### Create a Disbursement

Use the `organization_id` from the verification request response to create a disbursement. By default, the disbursement will wait for Chariot's compliance team to verify the organization before proceeding. You can optionally set `bypass_chariot_organization_verification` to override this behavior:

* **`false`** (default): The disbursement will remain in the `awaiting_verification` status until Chariot's compliance team has verified the nonprofit.
* **`true`**: The disbursement will proceed through its normal lifecycle without waiting for Chariot to verify the organization. Only set this if you have independently verified the organization and do not want to wait for or rely on Chariot's verification.

### Monitor Verification Status

You can track the progress of the verification by polling the [GET Verification Request](/api/verification-requests/get) endpoint or by subscribing to `verification_request.updated` [webhook events](/api/webhooks). The status will transition through:

| Status         | Description                                                                        |
| -------------- | ---------------------------------------------------------------------------------- |
| `needs_review` | The request has been submitted and is awaiting review by Chariot's compliance team |
| `verified`     | The organization has been verified as tax-exempt and eligible for disbursements    |
| `failed`       | The compliance team determined the organization is not eligible                    |

Disbursements without bypass\_chariot\_organization\_verification enabled will remain in awaiting\_verification until the verification request status is verified.

Once the verification request is verified, eligible disbursements will progress as usual. However, some disbursements may not move out of awaiting\_verification immediately, as additional review steps may be required on a per-disbursement basis.

## Chariot Disbursements for Nonprofits

Chariot provides a service to nonprofits to facilitate receiving disbursements from grantmakers and other platforms.

If a nonprofit has a Chariot Deposit Account, Chariot is able to present a consolidated view of all payments received by the nonprofit in their dashboard across all grantmakers. In this case, a payment should settle instantly.

If a nonprofit does not have a Chariot Deposit Account, they can still receive payments via Chariot's Disbursements. In this case, Chariot will mail a paper check to the nonprofit's verified postal address.