> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Fundraise Up

> Configure the Fundraise Up source in Integrate.io ETL to read donations, recurring plans, supporters, events, campaigns, and designations into your pipeline.

Use the Fundraise Up source component to read data from your Fundraise Up account into your [Integrate.io](http://integrate.io/) ETL pipeline. Fundraise Up is an online fundraising platform for nonprofits. The connector reads nine Fundraise Up objects, including donations, recurring plans, supporters, and the event log. Six objects support incremental loads.

Use this component instead of the generic [REST API source](https://www.integrate.io/docs/etl/using-components-rest-api-source.md). The native connector handles authentication, pagination, and live or test mode for you.

## Prerequisites

* A Fundraise Up account with permission to create API keys.
* A Fundraise Up API key, created in the Fundraise Up dashboard under **Settings → API keys**. Grant the key read permission for each object you want to load, in the mode (Live or Test) you want to read.

An API key from a parent account also returns records from its subaccounts. Each record includes an `account` field that identifies the subaccount.

## Connection setup

Create a Fundraise Up connection from **Connections → New connection → Fundraise Up**.

| Field | Description |
| :- | :- |
| Name | Display name for the connection inside Integrate.io. |
| API Key | Your Fundraise Up API key. Integrate.io sends it as a bearer token on every request. |
| Mode | **Live** (default) or **Test**. Selects whether the connection reads live data or test data. The API key needs read permission for the mode you select. |

After you fill in the form, click **Test connection**. The test reads the `supporters` object in the selected mode. Fundraise Up rejects the request with HTTP 403 if the key has no read permission for that mode.

### Live and test mode

Fundraise Up stores test data only for donations, recurring plans, supporters, and events. The `campaigns`, `fundraisers`, `designations`, `designation_groups`, and `designation_configurations` objects always read live data, even when **Mode** is set to **Test**. To read those objects, the API key needs live read permission.

## Source properties

The source component is configured in Step 02 of the component editor.

### Source table (object)

Select the Fundraise Up object to read data from:

| Object | Fundraise Up endpoint | Incremental load | Test mode |
| - | - | - | - |
| donations | `/v1/donations` | Supported | Supported |
| recurring\_plans | `/v1/recurring_plans` | Supported | Supported |
| supporters | `/v1/supporters` | Supported | Supported |
| events | `/v1/events` | Supported | Supported |
| fundraisers | `/v1/fundraisers` | Supported | Live only |
| designations | `/v1/designations` | Supported | Live only |
| campaigns | `/v1/campaigns` | Not supported | Live only |
| designation\_groups | `/v1/designation_groups` | Not supported | Live only |
| designation\_configurations | `/v1/designation_configurations` | Not supported | Live only |

All objects are read-only. Integrate.io reads 100 records per page and stops after 50,000 pages, which is 5 million records per object. Fundraise Up returns records newest first, so records beyond that limit are the oldest ones.

### Load type

Select how records are loaded on each pipeline run:

* **Full Load.** Fetches all records for the selected object on every run.
* **Incremental Load.** Fetches only records created before or after a reference date. Not available for `campaigns`, `designation_groups`, and `designation_configurations`. Campaigns and designation groups have no timestamp, and the designation configurations endpoint doesn't accept a date filter.

### Incremental load settings

When **Incremental Load** is selected, the following options appear:

**Sync date field.** Defaults to `created_at`. Keep this value. Fundraise Up filters list endpoints by creation time only. If you select any other date field, such as `succeeded_at` or `refunded_at`, Fundraise Up rejects the request with HTTP 400 `parameter_unexpected` and the preview or job fails.

**Load records.** Choose `newer than ( > )` or `older than ( < )` the reference date.

**Reference date.** Choose the source of the date value:

* **Last successful run.** Loads records since the last successful run of this pipeline, using the `$_PACKAGE_LAST_SUCCESSFUL_JOB_SUBMISSION_TIMESTAMP` system variable. Recommended for scheduled pipelines.
* **Fixed Date.** Pick a specific calendar date. Integrate.io sends a date such as `2025-10-21` to Fundraise Up as `2025-10-21T00:00:00Z` (midnight UTC).
* **Variable.** Use a custom package variable.

For example, an incremental load of live donations newer than October 1, 2026 filters the request like this:

```text theme={null}
GET https://api.fundraiseup.com/v1/donations?livemode=true&created[gt]=2026-10-01T00:00:00Z
```

> [!NOTE]
>
> Incremental loads pick up new records only. Fundraise Up has no "updated since" filter, so refunds and status changes on donations created before the reference date are not read again. To track changes to existing records, load the `events` object, or run a periodic full load.

### Rate limits

Fundraise Up allows three concurrent requests per account, shared by all API keys and both modes. When Fundraise Up returns HTTP 429, Integrate.io retries the request up to eight times with increasing backoff, for about two minutes in total. Avoid running several Fundraise Up sources in parallel against the same account.

## Source schema

After configuring the source properties, the **Schema** section (Step 03) displays the available fields with their detected data types. Use the field selector to choose which columns to include in your pipeline. You can rename fields with aliases and change data types as needed.

Nested JSON objects in Fundraise Up responses are flattened into individual columns with underscore-separated names. For example, `supporter.id` on a donation becomes `supporter_id`.

> [!WARNING]
>
> On October 30, 2026, Fundraise Up removes the top-level `donation` and `recurring_plan` fields from the `events` object and replaces them with a `payments` array. If your pipeline maps columns derived from those fields, update it to read donation and recurring plan IDs from `payments`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.