Connect Raiser’s Edge NXT using the Fundraise Up API
Learn how to send donation data from Fundraise Up to Blackbaud Raiser's Edge NXT.
Fundraise Up’s native integration with Raiser’s Edge NXT is being phased out. If you’re already using it, you can continue doing so for now — but if you disconnect it, you won’t be able to reconnect. New organizations can no longer activate the integration.
To keep sending Fundraise Up data to Raiser’s Edge NXT, you can build a custom connection using the Fundraise Up API. This article explains how to set up a one-way sync to your Raiser’s Edge NXT account.
Before you begin
To build this connection, you'll need:
- Access to your Fundraise Up Dashboard with Organization Administrator role (required to manage API keys).
- Admin access to your Raiser’s Edge NXT environment.
Step 1: Create an API key
- Go to Dashboard > Settings > API keys.
- Click Create API key.
- Enter a descriptive name (for example, "RE NXT Integration").
- Choose Live data to sync real data. Use Test data if you’re testing.
- Select Retrieve donation data permission.
- Click Create API key.
If you're working with subaccounts, make sure you generate the API key from the correct subaccount.
Make authenticated requests
Include your API key in the Authorization header using Bearer authentication:
1curl -H "Authorization: Bearer YOUR_API_KEY" \
2 https://api.fundraiseup.com/v1/donations
3
All requests must use HTTPS. HTTP requests are not accepted.
Step 2: Understand the key data objects
Your CRM sync will use these Fundraise Up entities:
- Donations. Includes amount, currency, status, type, timestamp, and unique Fundraise Up identifiers.
- Supporters. Name, email, phone, mailing address, and preferences.
- Recurring plans. Frequency, status, start date, donation amount, and next installment date.
- Campaigns. Used to categorize donations.
- Designations. Specifies the program or fund selected by the supporter.
- Tributes. Optional tribute data (in honor or in memory of someone).
Each object is accessible through the API. Details on structure and fields can be found in the API reference.
Step 3: Retrieve data
Your integration service will need to periodically poll (query) the Fundraise Up API to check for new or updated records since the last sync.
Use GET requests to fetch data from these API endpoints.
Collection endpoints
GET /v1/donations
GET /v1/supporters
GET /v1/recurring_plans
GET /v1/campaigns
GET /v1/designations
GET /v1/tributes
Use limit
, starting_after
, and ending_before
for pagination.
Detail endpoints (by ID)
GET /v1/donations/{donation_id}
GET /v1/supporters/{supporter_id}
GET /v1/recurring_plans/{plan_id}
GET /v1/campaigns/{campaign_id}
GET /v1/designations/{designation_id}
GET /v1/tributes/{tribute_id}
These are useful for re-sync attempts or fetching full record detail after a list query.
Event-driven updates using Zapier
If you prefer event-based syncing over polling, you can use Zapier to listen for Fundraise Up triggers.
Trigger | Description |
---|---|
New Donation | Triggered when a new donation is created. |
Update Donation | Triggered when an existing donation is updated. |
New Recurring | Triggered when a new recurring plan is created. |
Update Recurring | Triggered when a recurring plan is updated. |
New Supporter | Triggered when a new supporter record is created. |
Update Supporter | Triggered when an existing supporter is updated. |
Zapier can then trigger a sync job in your system. Fundraise Up doesn’t support direct webhooks to external URLs. Learn more about Zapier integration →
Syncing historical data
To sync historical data when first setting up the integration or backfilling your CRM, you'll need to perform a historical data sync.
To load past records:
- Use
starting_after
andending_before
parameters with an existing object ID. - Fetch data in batches using
limit
. This parameter specifies the number of records to display per page, ranging from 1 to 100. - Process each batch sequentially.
Step 4: Choose field mapping strategy
Field mapping is a critical step where you define how Fundraise Up data fields correspond to fields in the Raiser’s Edge NXT. Correct field mapping ensures that Fundraise Up data is stored in the right places in your CRM and avoids sync errors.
Principles of effective field mapping
- Identify corresponding objects. Define which CRM objects correspond to Fundraise Up entities (for example, donation → gift, supporter → constituent).
- Match data types. Ensure the data types are compatible. Transform values as needed (for example, string to picklist).
- Handle required fields. Identify which fields are required in Raiser’s Edge NXT and ensure you supply values, using defaults if needed.
- Store Fundraise Up IDs. Always store Fundraise Up’s unique IDs in your CRM. These are essential for update logic and deduplication.
- Include custom fields. Map any custom fields you collect for supporters or donations.
Example: Fundraise Up to Raiser’s Edge NXT
Fundraise Up object | Fundraise Up Property | Raiser’s Edge NXT object | Raiser’s Edge NXT property |
---|---|---|---|
staticValue | FundraiseUp' | gift | batch_prefix |
staticValue | TRUE | gift | is_manual |
donation | ID | gift | ID |
donation | donation date | gift | date |
donation | amount | gift | amount |
donation | supporter is anonymous | gift | is_anonymous |
donation | status | gift | gift_status |
donation | gift post status | gift | post_status |
donation | default fund | gift | fundId |
donation | default campaign | gift | campaignId |
donation | default appeal | gift | appealId |
donation | default gift subtype | gift | subtype |
donation | has been acknowledged | gift | acknowledgement.status |
donation | comment | gift | comment |
donation | donation date | gift | acknowledgement.date |
donation | amount | gift | receipts.amount |
donation | status | gift | receipts.status |
donation | receipt sent date | gift | receipts.date |
recurring | default gift subtype | recurring gift | subtype |
recurring | created date | recurring gift | recurring_gift_schedule.start_date |
recurring | frequency | recurring gift | recurring_gift_schedule.frequency |
staticValue | Fundraise Up' | recurring gift | batch_prefix |
recurring | amount | recurring gift | amount |
recurring | status | recurring gift | status_status |
staticValue | DoNotPost' | recurring gift | post_status |
recurring | ID | recurring gift | ID |
staticValue | TRUE | recurring gift | is_manual |
recurring | supporter is anonymous | recurring gift | is_anonymous |
staticValue | Individual' | constituent | type |
donation | supporter title | constituent | title |
donation | supporter first name | constituent | first name |
donation | supporter last name | constituent | last name |
donation | supporter email | constituent | email.address |
donation | supporter address | constituent | address.address_lines |
donation | supporter phone number | constituent | phone.number |
donation | supporter mailing list subscribed | constituent | email.do_not_email |
donation | supporter address city | constituent | address.city |
donation | supporter address postal | constituent | address.postal_code |
donation | supporter address country | constituent | address.country |
donation | supporter address state | constituent | address.state |
This table is illustrative. Adapt field mappings to match your CRM configuration.
Step 5: Handle deduplication
Your CRM should prevent duplicate records by using Fundraise Up IDs as primary keys.
- On sync, check if a record already exists using the Fundraise Up ID (for example,
Donation ID
orSupporter ID
). - If found, update it. If not, create a new record.
- If IDs are missing, use fallback matching logic such as email address and full name.
Step 6: Monitor rate limits
Fundraise Up's API has usage limits. See the rate limit section for details.
Include retry handling and backoff logic in your integration.
Platform-specific behaviors and limitations
When sending data to Raiser’s Edge NXT using a custom integration, keep these platform-specific behaviors in mind:
- Receipt number: Fundraise Up’s
Receipt ID
cannot populate Raiser’s Edge NXT’s lockedReceipt Number
field. Map it to a custom field on the Gift record in Raiser’s Edge NXT (for example,Fundraise Up Receipt ID
). - Canceled recurring plans: ReNXT does not support reactivating canceled recurring plans. If a supporter resumes a plan, create a new recurring gift in Raiser’s Edge NXT.
- Direct debit donations sync: For direct debit methods like ACH and SEPA, donations only sync to Raiser’s Edge NXT after the payment settles — when the status in Fundraise Up changes to
succeeded
. This can take several days. - Refunds: When a donation is refunded in Fundraise Up, this does not automatically update the original gift record’s status to
refunded
in Raiser’s Edge NXT. Manually create a corresponding refund adjustment or update the gift's status in Raiser’s Edge NXT to reflect the refund accurately. - Batching: Fundraise Up doesn’t assign donations to batches in Raiser’s Edge NXT. Each donation is created as a separate gift record.
- Bulk sync: Raiser’s Edge NXT doesn’t support bulk inserts — each record must be synced individually. Manual re-syncs using the API will require custom logic.
- Deletions: Donations synced from Fundraise Up to Raiser’s Edge NXT may not be deletable through the web UI. Consult Raiser’s Edge NXT documentation for data modification and deletion policies.
- Failed donations: Donations with
failed
status aren’t synced to Raiser’s Edge NXT, since they aren’t completed gifts. You may choose to log these elsewhere based on your data policies.
Additional resources
For endpoint details, request formats, and examples, refer to our API documentation.
Alternatives
If building a custom integration isn't feasible, consider these alternatives:
- Omatic Cloud: Pre-built integration platform with special pricing for Fundraise Up customers.
- Zapier: Event-driven automation with Fundraise Up triggers.
- Importacular: Database-level integration for smaller organizations.
- Data exports: Manual CSV exports from Fundraise Up for periodic imports.
Each option has different levels of automation and technical complexity to match your organization’s needs.