Developer API

Connect your data to anything.

A free, included REST API. Pull your donations, contacts, events and transactions into QuickBooks, your CRM, a data warehouse or your website — and push contacts back in. JSON in, JSON out. No extra cost, no separate plan.

Authentication

Create a key in your dashboard under Integrations → Developer API. Send it on every request in the X-API-Key header. Keys are shown once — store them securely. Every key is scoped to your organization only.

curl https://charityfundraiser.com/api/v1/donations \
  -H "X-API-Key: cf_live_your_key_here"

All requests are HTTPS. Rate limit: 120 requests/minute per key.

Endpoints

Base URL: https://charityfundraiser.com/api/v1

MethodPathDescription
GET/meConfirm your key and see which organization it belongs to.
GET/donationsList donations. Params: status (paid|all), since (ISO date), limit, offset.
GET/transactionsList payment transactions (donations, tickets, POS, etc.).
GET/contactsList CRM contacts/donors. Params: search, tier, limit, offset.
GET/eventsList your events.
POST/contactsCreate or update a contact (upsert by email). Body: name, email, phone, tags.
PATCH/contacts/{id}Update a contact's name, phone or tags.

Example: pull paid donations for accounting

Incremental sync — only donations since your last pull:

curl "https://charityfundraiser.com/api/v1/donations?status=paid&since=2026-01-01T00:00:00Z&limit=100" \
  -H "X-API-Key: cf_live_your_key_here"

Response:

{
  "data": [
    {
      "id": "a1b2…",
      "amount": 250.00,
      "currency": "usd",
      "donor_name": "Jane Donor",
      "donor_email": "jane@example.com",
      "payment_status": "paid",
      "created_at": "2026-02-14T18:22:05Z",
      "paid_at": "2026-02-14T18:22:09Z"
    }
  ],
  "pagination": { "limit": 100, "offset": 0, "total": 1 }
}

Example: push a contact into the CRM

curl -X POST https://charityfundraiser.com/api/v1/contacts \
  -H "X-API-Key: cf_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"name":"New Supporter","email":"new@example.com","tags":["website"]}'

Upserts by email — if the contact already exists, its tags are merged.

Need real-time events instead of polling?

Use outbound webhooks — subscribe to donation.paid,ticket.purchased, recurring.charged and more, and we'll POST signed JSON to your URL the moment they happen. This is the Zapier / Make / n8n bridge.

Set up webhooks

Built by Web-Tech Services