REST API
Exchange data with Fundraise Up using REST API.
Introduction
We developed the Fundraise Up API to give you better control over your fundraising data. With this API, you can process donations collected from non-digital channels through your Fundraise Up account, combining them with your online donations. You can also access your data to ensure your CRM or other systems are always up to date with your fundraising activity.
The API lets you work with Donations, Recurring plans, Supporters, and Events. You can export data for all these resources to your systems. For Donations and Recurring plans, you can also create and update them, but updates are only allowed within 24 hours of their creation.
Additionally, two Donor Portal resources enable you to manage automatic supporter authentication within the Donor Portal.
Key features
- Architecture: Built on REST principles.
- URLs: Provides predictable resource-oriented URLs.
- Requests: Accepts JSON-encoded request bodies with
Content-Type: application/json
header. - Responses: Returns JSON-encoded responses.
- Standards: Uses standard HTTP response codes, authentication, and verbs.
Donations and recurring plans that are created using the API will have an “API” donation source and can be found using the “API” source filter in the Dashboard.
Use cases
There are a variety of use cases where you can integrate our API into your fundraising flow. In particular, you can use our API for:
- Ticketing and events
- Face-to-face fundraising
- Direct mail campaigns
- Telefundraising
- Fundraising galas and dinners
- Analytics integrations
API key
To use the Fundraise Up API, you need an API key. Go to Dashboard > Settings > API keys and click Create API key. You can create multiple keys for the same account.
Only users with the Organization Administrator role can perform this action.
Name
Enter a name for your key that will be displayed on the Dashboard. This is a required field.
You can create multiple keys with the same name and edit them later. To edit a key, click the three-dot menu next to it on the API keys page.
Permissions
When creating an API key, choose one or more permissions:
- Retrieve donation data from Fundraise Up
- Create new donations in our system
- Generate Donor Portal access links for the Seamless Donor Portal access.
At least one permission is required. You can edit permissions later by clicking the three-dot menu next to the key on the API Keys page.
API key management and test mode
You can create a key to use for either live mode or test data. Using the Fundraise Up API in test mode doesn’t affect your live data or interact with the banking networks.
Test mode keys have the prefix test_
. Live mode keys have no prefix.
Your key will be activated immediately. The key does not expire. To delete a key, click a three-dot menu in the list, and then click Remove.
Authentication
Authenticate to the API using HTTP Bearer authentication. Include your API key in the Authorization
header like this: curl -H "Authorization: Bearer test_…"
.
Ensure that all API requests are made over HTTPS. Requests made over HTTP will not be accepted. Requests without proper authentication will also be rejected.
Parent accounts and subaccounts
Each API key allows you to create donations only for the account to which it belongs. Parent accounts cannot create donations and generate Donor Portal access links for subaccounts using their parent API key. To create donations for a subaccount, you need to generate an API key within that specific subaccount and use it.
However, the parent account can still view and manage all API keys, including those for subaccounts. Additionally, a parent account’s API key can export data for both the parent account and its subaccounts. This makes it easy to keep track of both API key activity and export data across the parent account and its subaccounts.
Rate limits
To maintain stability and manage server load, the Fundraise Up API has safeguards in place to handle sudden spikes in traffic.
If you exceed these limits, you will receive a 429 Too Many Requests
error.
Please avoid generating excessive traffic. To prevent abuse, we may impose stricter limits if necessary.
Errors
Fundraise Up uses standard HTTP response codes to indicate the outcome of an API request:
2xx
codes indicate successful requests.4xx
codes indicate client-side errors, such as missing parameters or failed charges.5xx
codes, which are rare, indicate server-side issues with Fundraise Up.
Certain 4xx errors, such as a declined card, will include an error code with a brief explanation.
HTTP status codes
Code | Status | Explanation |
---|---|---|
200 | OK | Everything worked as expected. |
400 | Bad Request | The request was invalid, typically due to a missing required parameter. |
401 | Unauthorized | No valid API key provided. |
403 | Forbidden | The API key doesn’t have permissions to perform the request. |
404 | Not Found | The requested resource doesn’t exist. |
409 | Conflict | The request could not be completed due to a conflict with the current state of the resource. This usually indicates a concurrency issue. |
429 | Too Many Requests | Too many requests hit the API too fast. We recommend an exponential backoff of your requests. |
500, 502, 503, 504 | Server Errors | Something went wrong on the Fundraise Up side. (These are rare.) |
Attributes
code
: nullable string. Short error code for some errors that can be handled programmatically.message
: nullable string. Human-readable error description.parameter
: nullable string. Parameter associated with the error.stripe_error
: nullable dictionary. Stripe-specific error details (see Stripe API documentation.)
Error codes
Error code | Explanation |
---|---|
tokens_rate_limit_exceeded | Too many API tokens used within a time period. |
requests_rate_limit_exceeded | Organization has reached the limit for API requests per period. |
stripe_rate_limit_exceeded | Too many requests made to Stripe. |
stripe_error | Error related to Stripe payment processing. |
not_found | Requested resource could not be found. |
update_expired | Update attempted after the allowed time period. |
update_conflict | The request conflicts with another request. |
parameter_unexpected | Unexpected parameter provided in the request. |
parameter_required | Required parameter is missing from the request. |
parameter_invalid | Parameter provided is not valid. |
payment_account_required | Payment account setup is necessary. |
Error codes may change over time. We’ll update this article to reflect any changes.
Request IDs
Each API request includes response header Request-Id
with unique value.
To help us resolve issues faster, please include the Request-Id when contacting us about a specific request.
Changes in API
We prioritize stability and compatibility in our API. We aim to make all changes backwards-compatible within the current version to avoid disrupting your existing workflows. If a change requires incompatibility, we will release a new API version.
Detailed information about any changes will be posted to our changelog and added to the documentation.
Found a mistake? Is there a missing topic? Hard to read? Let us know