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

# Set Up

### Overview

We're going to utilize Chariot's APIs to generate a CID (Connect Identifier) for a nonprofit organization. This CID is a crucial element needed to activate the DAFpay button.

To create a CID for an organization, we first need to [Search Chariot's Database](/api/organizations/search) to find the organization's ID using their Name or EIN (Employer Identification Number, Tax ID).
Following that, we proceed to create a Connect with the organization's ID.

> **Sandbox Testing**
>
> You can use any valid EIN for testing in sandbox (i.e., American Red Cross 53-0196605).

### Search Organization

The [Search Organization](/api/organizations/search) endpoint enables you to search for an organization by name or EIN within Chariot's verified nonprofit database.
If the organization you are looking for is not found, please contact [support@givechariot.com](mailto:support@givechariot.com) to request the organization be added.

Below are a few examples of different implementations. Modify the `user` object,  `ein` field, and access token from step 1 before making the request.

**`cURL`**

```curl cURL
curl --request GET \
     --url https://sandboxapi.givechariot.com/v1/organizations/search?ein=123456789 \
     --header 'accept: application/json' \
     --header 'authorization: Bearer API_KEY' \
```

**`JavaScript`**

```javascript JavaScript
const options = {
  method: 'GET',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer <API_KEY>'
  }
};

fetch('https://sandboxapi.givechariot.com/v1/organizations/search?ein=123456789', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Bravo! You have just searched for a nonprofit organization in Chariot's system. Now let's create a Connect for this organization.

### Create Connect

> **Nonprofit Contact Requirement**
>
> This route requires a contact email address for the organization. Ensure the email address provided is unique to the nonprofit and not a generic support email (e.g., [support@platform.com](mailto:support@platform.com)). This email will be used for important messaging related to the organization's Chariot account and can be updated later.

The [Create Connect](/api/connects/create) endpoint creates a Connect record or retrieves it if a Connect already exists for the organization in Chariot's system.

To create a Connect, the organization's `id` must be provided, which you should have from the previous step!

Below are a few examples of different implementations. Modify the `ORGANIZATION_ID` query parameter with the organization's `id`. Don't forget to add the api key!

**`cURL`**

```curl cURL
curl --request POST \
     --url 'https://sandboxapi.givechariot.com/v1/connects' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer API_KEY' \
     --header 'content-type: application/json' \
     -d '{
        "organization_id": "ORGANIZATION_ID",
        "contact": {
          "email": "me@example.com"
        }
      }'
```

**`JavaScript`**

```javascript JavaScript
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    authorization: 'Bearer API_KEY'
  },
  body: JSON.stringify({
    organization_id: 'ORGANIZATION_ID',
    contact: {
      email: 'me@example.com',
    }
  })
};

fetch('https://sandboxapi.givechariot.com/v1/connects', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Amazing! You can now start integrating DAFpay to build a front end and start receiving grants for this organization.

### Create a Launch Plan

For fundraising platforms with multiple organizations, the [Create Connect](/api/connects/create) needs to be called once for each organization on your platform.
As part of development, you should determine when and how these calls will be made for each organization.