For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Contact usLogin
GuidesAPI ReferenceFDX APIChangelog
GuidesAPI ReferenceFDX APIChangelog
  • Getting Started
    • Navigating the Docs
  • DAFpay
    • Overview
      • Overview
      • Donor Account Lifecycle
      • Grant Request Lifecycle
      • FAQ
  • Disbursements
    • Overview
    • How It Works
    • Disbursement Lifecycle
    • Compliance
    • Sandbox
    • How Chariot Compares
    • FAQ
  • Gift Processing
    • Overview
    • How It Works
    • Getting Started
    • FAQ
LogoLogo
Contact usLogin
On this page
  • Sequence
  • Step-by-step
  • 1. Build a code intake on your side
  • 2. Verify the token
  • 3. Decision the Grant Request
  • Sequence
  • Step-by-step
  • 1. Create the Donor Account
  • 2. Create an Authorization Token
  • 3. Surface the code to the donor
  • 4. Donor enters the code in DAFpay
DAFpayDonor Accounts (for DAFs)

Donor Account Lifecycle

How a Donor Account moves from pending to approved — and the two flows that get it there.

Was this page helpful?
Previous

Grant Request Lifecycle

How Grant Requests move from submission to completion.
Next
Built with

A Donor Account starts in pending status and must reach approved before any of its Grant Requests can be processed. Approval always happens by verifying an Authorization Token — a one-time code that ties the donor’s DAFpay identity to their DAF account.

Setup is a one-time process per donor

Approval happens once for each donor. After a Donor Account is approved, the same donor can submit future Grant Requests directly — no code exchange is required again. The donor authenticates to DAFpay at grant time to verify their identity, and the existing Donor Account is reused.

Both flows are available to any DAF — you can support one or both depending on your donor experience.

Donor-Initiated Verification
DAF-Initiated Setup

The donor uses DAFpay first. DAFpay issues an Authorization Token and emails the code to the donor. The donor passes the code to the DAF, and the DAF verifies it in one API call — which approves the Donor Account.

Works well when: donors give at the point of inspiration with no pre-setup required.

Sequence

Donor DAFpay DAF (you)
│ │ │
│ 1. Submit grant request │ │
│ ─────────────────────────▶│ │
│ 2. Email with code │ │
│ ◄─────────────────────────│ │
│ │ │
│ 3. Provide code to DAF │ │
│ ─────────────────────────────────────────────────────────▶│
│ │ │
│ │ 4. POST /authorization_tokens │
│ │ /verify { code } │
│ │ ◄──────────────────────────────│
│ │ │
│ │ 5. Account approved │
│ │ ──────────────────────────────▶│
│ │ │

Step-by-step

1. Build a code intake on your side

Add a form to your DAF portal — behind your existing donor authentication — with a single text input labeled “DAFpay verification code”. Alternatives include a support ticket form or a phone-call workflow where a CSR enters the code on the donor’s behalf.

2. Verify the token

When the donor submits the code, call Verify Authorization Token.

$curl -X POST https://api.givechariot.com/v1/authorization_tokens/verify \
> -H "Authorization: Bearer $CHARIOT_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "code": "DAFP-7K3X-9M4Q",
> "external_id": "ACME-DAF-DONOR-1042"
> }'

The response is the linked Donor Account in approved status. The token is now verified and cannot be re-verified. Store the returned Donor Account’s id against the donor record in your system — this is your link between the donor who handed you the code and their Donor Account for all future Grant Request processing.

Error handling

Unknown, expired, revoked, or already-verified codes return 404 Not Found or 410 Gone — intentionally indistinguishable to avoid leaking information about valid codes. Strict per-DAF rate limits apply. Repeated failures return 429 Too Many Requests. Surface a generic error to the donor and ask them to contact support after a small number of failures.

3. Decision the Grant Request

Once the Donor Account is approved, proceed to Grant Request Lifecycle.