Fundraise Up Known Limitations
This document lists the architectural and operational restrictions subscribers should be aware of before installing the Fundraise Up integration. None of them are bugs — they reflect either deliberate design decisions, constraints of the Fundraise Up platform, or scope decisions made for the v1.0.0 release.
For each limitation we explain what it is, why it exists, and what this means for you (the subscriber).
Item | Value |
Integration name | Fundraise Up |
Integration version | v1.0.0 |
iPaaS.com integration_id | 12151 |
Remote platform API | Fundraise Up API v1 — |
Latest API changes tested |
|
The v1 segment in the base URL is Fundraise Up's API version marker. Fundraise Up publishes API changes in the release notes within their API documentation; if you observe unexpected behavior, check there for recent changes.
1. Source-only — Fundraise Up is the system of record for donations
What: The integration only reads data from Fundraise Up into iPaaS.com. There is no path to create, update, or delete records in Fundraise Up via iPaaS.com.
Why: Fundraise Up is the system of record for donations. Allowing outbound writes would introduce ambiguity about which side wins on conflicts, so the integration does not implement any outbound create / update / delete paths. Any attempt to push a record from iPaaS.com to Fundraise Up via this integration is rejected.
What this means for you:
Use Fundraise Up's native UI or campaign forms to create donations.
If you need to update a donation amount or status in iPaaS.com (e.g., to mark a refund), do it on the Fundraise Up side; the change will flow through to iPaaS.com on the next poll.
Two-way sync requires a different integration topology.
2. New donations are detected on a polling schedule
What: The integration does not subscribe to Fundraise Up webhooks. New donations and donor changes are detected via scheduled polling.
Why: Fundraise Up does not support delivery of webhooks to arbitrary external URLs. The integration polls Fundraise Up for new donations on a schedule instead.
What this means for you:
New donations appear in iPaaS.com on the next scheduled poll, not in real time. End-to-end latency from "donor clicks Donate" to "iPaaS.com Transaction created" is bounded by the poll interval, not network round-trip time.
Tune the poll interval based on your acceptable latency / API-call budget. The default is per the iPaaS.com scheduler defaults; consult your iPaaS.com administrator.
There is no
Webhooksubscription page on the iPaaS.com side for this integration and no "test webhook" workflow.
3. Ongoing polls cursor forward from the last donation imported
What: The integration tracks polled-vs-unpolled donations using an id cursor watermark, not a timestamp. After the initial run establishes the watermark, every subsequent scheduled poll cursors forward from that watermark.
Why: Fundraise Up's donation list cannot be filtered by a date range, so the integration uses a different mechanism: it remembers the id of the last donation it has already imported, and on the next poll asks Fundraise Up for any newer donations. The Donation Poll Days preset bounds the initial poll (how far back the first run reaches) on a new subscription; it does not apply to subsequent polls because the watermark drives them.
What this means for you:
The cursor advances forward only — once a donation has been processed, the next scheduled poll will not retrieve it again. The scheduled donation poll and Initialize Data are separate operations with different purposes: the scheduled poll runs on the configured cadence (and also on demand when triggered) and advances the watermark forward; Initialize (not supported here) paginates through historical donations (bounded by Donation Poll Days on the first run) and seeds the watermark with the newest record. Both are subscriber-controllable from the iPaaS.com Dashboard / Integration Monitoring / Events page — schedule the poll cadence, trigger an on-demand poll, or re-run initialization. Be aware that re-running initialization on a subscription that has already imported donations re-processes the available history (with the corresponding duplicate-handling cost). For a targeted historical refresh that does not re-process the entire history, the bulk sync using Postman pattern is the supported workflow.
See Connections and Settings — Donation Poll Days for the full preset description and the recommended values for different historical-import sizes.
4. Supporter data refreshes alongside each donation transfer
What: Supporters (Customer records) are fetched from Fundraise Up only as a prerequisite to a Donation transfer. There is no scheduled Supporter poll and no supporter/poll scope.
Why: Fundraise Up does not expose a way to detect supporters whose profile data has changed independently of donor activity. Each donation carries a reference to its supporter; the integration retrieves the supporter as part of processing the donation.
What this means for you:
Editing a supporter's email or name in Fundraise Up does not propagate to iPaaS.com until that supporter makes another donation. There is no "manual supporter refresh" path.
A donation from a brand-new email creates an iPaaS.com Customer; two donations from the same email link to the same Customer (deduplication is by email).
If your downstream workflow needs near-real-time donor profile updates, schedule a more frequent Donation poll — every Donation poll cascade-refreshes the supporters it touches.
5. Supporter Address and Payment data come from the parent records
What: Supporter Address and Donation Payment do not have their own Fundraise Up endpoints. They are extracted from the parent Supporter and Donation responses respectively.
Why: Fundraise Up returns address data as part of each supporter record and payment data as part of each donation record. There are no separate Fundraise Up resources for addresses or payments.
What this means for you:
Supporter Address's primary id is the parent Supporter id; addresses have no independent identifier on the Fundraise Up side. A supporter has at most one address.
Donation Payment's primary id is the payment object's id within the donation (typically the Stripe charge id for credit-card donations). A donation has at most one payment record.
If a Supporter has no address, no Customer Address record is produced (no error). If a Donation has no payment, no Transaction Payment is produced (no error).
6. Recurring donations are captured as individual installment Transactions
What: Recurring donations produce one iPaaS.com Transaction per installment. There is no separate "Recurring Plan" record in iPaaS.com.
Why: Each Fundraise Up recurring installment generates its own standalone Donation record, which is naturally captured by the donation poll. Recurring plan metadata (frequency, status, next payment date, plan amount, plan currency) is surfaced as readable fields on each Donation transferred to iPaaS.com.
What this means for you:
To group installments by plan, filter iPaaS.com Transactions by the
recurring_plan_idfield.To distinguish recurring from one-time donations, check
recurring_plan_idis non-null (recurring) versus null (one-time).The
recurring_plan_next_payment_atfield updates on every installment, so the most recent Transaction for a givenrecurring_plan_idhas the freshest value.
7. Livemode is a destructive setting once a subscription has imported donations
What: The Livemode subscription setting selects which Fundraise Up data tier the integration polls — true for live data, false for test data. The setting is configured once at install and must not be flipped on an existing subscription that has already imported donations.
Why: Fundraise Up's Live and Test environments are isolated namespaces. The same donation id can exist in both, referring to completely different records. iPaaS.com does not automatically wipe or reset external-id records when the Livemode value changes, so flipping Livemode mid-life leaves the integration in an inconsistent state:
The external-id records linking iPaaS Transactions to Fundraise Up donation ids remain in place, but the integration starts polling a different namespace where those ids may not exist or may refer to entirely different records.
The integration's record of the last donation it processed still points at the previous environment's most recent donation id, leading to duplicate Transaction creation, updates against the wrong Transactions, or silent stalls.
In the worst case, new donations from the swapped environment land as Updates against existing iPaaS Transactions that were originally created from the other environment, silently corrupting historical data.
A single Fundraise Up API key can grant permissions on both Live and Test data, so the API key itself is not the constraint — Livemode is the iPaaS-side flag that drives which data the integration retrieves, and it is the value that should not be changed casually.
What this means for you:
Set Livemode correctly at install (
truefor production,falsefor staging) and leave it alone for the life of the subscription.Use separate iPaaS.com subscriptions per environment. Create one subscription with
Livemode=truefor production donations and a separate subscription withLivemode=falsefor staging or UAT donations. iPaaS.com has no built-in staging-to-production-and-back cleanup on an existing subscription, so isolating environments at the subscription level is the cleanest path.Flag records so downstream live destination integrations can filter test transactions out by content. A Static field mapping or a tag applied to each Transaction (e.g., setting a custom field to
Teston the staging subscription's Donation mapping, or appending a recognizable suffix to a free-text field) lets the destination side identify and exclude test records by content rather than relying on subscription-level state — useful when both environments share downstream consumers or when records have already been imported and a clean cutover is not feasible.If you are unsure whether your situation calls for a Livemode change, treat this as a destructive setting and do not change it. Consult your MiSP (Managed Integration Service Provider) or implementation partner before proceeding. The recovery cost if the flip is wrong significantly outweighs the cost of a short consultation.
8. Refunds are reflected on the original Transaction
What: When a donation is refunded in Fundraise Up, the integration updates the existing iPaaS.com Transaction's status to Refunded via the Status mapping. The integration does not create a separate refunded offsetting Transaction record alongside the original.
Why: This mirrors how Fundraise Up itself records refunds — they are not stored as a separate donation record in Fundraise Up; the original donation's status changes to refunded. The integration faithfully reflects that shape on the iPaaS.com side, keeping the donation history aligned between the two systems.
What this means for you:
Downstream systems that interpret
Status = Refundedon the original Transaction as the offsetting event work out of the box — no additional action required.If your accounting workflow specifically requires a separate offsetting Transaction record (a "-R" copy alongside the original), you have two paths:
Detect the status flip on the iPaaS.com side and create the offsetting Transaction yourself via a downstream workflow or integration step that fires when a Transaction's status changes to Refunded.
Submit a feature request to your iPaaS.com partner channel describing your accounting system's specific requirement — input like this informs future enhancement releases of the Fundraise Up integration.
9. Donations are represented as Transaction + Transaction Payment
What: Every Fundraise Up donation lands in iPaaS.com as one iPaaS.com Transaction record with one child Transaction Payment record. The Transaction Payment carries the donation amount, payment method, and the Fundraise Up payment identifier (the Stripe charge id for credit-card donations).
Why: Each Fundraise Up donation has exactly one payment associated with it — typically a single credit-card charge or PayPal transaction. iPaaS.com's Transaction Payment collection is the right shape for this kind of single-payment record, and the parent Transaction carries the donation amount, currency, and status. (Transaction Lines, by contrast, fit sources such as e-commerce carts or multi-product invoices.)
What this means for you:
Downstream systems that read the donation amount, currency, and status directly from the Transaction work out of the box, with the payment detail (Stripe charge id, payment method) available on the child Transaction Payment.
If your accounting or ERP workflow specifically needs to see one Transaction Line per Transaction (a common shape in classic ERP order tables), you have two paths:
Synthesize a single line from the Transaction's
totalon the consuming side via a downstream workflow or integration step.Submit a feature request to your iPaaS.com partner channel describing the requirement — input like this informs future enhancement releases of the Fundraise Up integration.
10. Country codes arrive lowercase
What: Fundraise Up emits country values as lowercase ISO 3166-1 alpha-2 codes — us, ca, gb, etc. — and the integration writes those values to the iPaaS.com Customer Address country field verbatim.
Why: This matches how Fundraise Up records country values on its donations and supporters. Lowercase codes are uncommon in downstream donor / accounting systems, which typically expect either uppercase US/CA/GB or fully spelled-out country names (United States, Canada, United Kingdom).
What this means for you:
If your downstream system (CRM, accounting, donor database) expects uppercase ISO codes or full country names, normalize the value before it leaves iPaaS.com. The easiest path is to replace the Country mapping in the Supporter Address collection with a Lookup Translation that maps lowercase codes to the form your downstream system wants.
Alternatively, normalize at the destination side if that system supports inbound transformation rules.
If you do nothing, expect downstream reports to show
us/ca/gbrather than the more familiar uppercase or full-name forms.
11. Placeholder defaults to review before going live
The shipped mapping collections include a small number of static-value defaults that are reasonable starting points but should be reviewed (and often changed) before the integration goes live in production. Subscribers or their MiSP should walk the list below during onboarding and decide whether each default matches the destination system's reporting conventions.
At a glance — defaults grouped by mapping collection:
Add/Update Fundraise Up Donation TO iPaaS.com
Donation Type (Static)
Donation EmailAddress (Dynamic Formula — anonymous-donation fallback)
Donation Total (Field)
Donation TestName1 (Custom Field, Field-type) — sample
Donation Livemode (Custom Field, Dynamic Formula) — sample
Add/Update Fundraise Up Payment TO iPaaS.com (child of the Donation collection)
Payment Amount (Dynamic Formula)
Payment Method (Lookup Translation)
Payment Status (Static)
Defaults in Add/Update Fundraise Up Donation TO iPaaS.com
Donation Type (Static)
Collection: Add/Update Fundraise Up Donation TO iPaaS.com
Shipped default:
OrderWhy it's a placeholder: Treats every donation as an iPaaS Transaction Type of
Order. Subscribers reporting in iPaaS.com may preferDonation,Gift, or a Lookup Translation against a Fundraise Up field.Suggested action: Confirm the value matches the desired Transaction Type for downstream reporting; change inline if needed.
Donation EmailAddress (Dynamic Formula — anonymous-donation fallback)
Collection: Add/Update Fundraise Up Donation TO iPaaS.com
Shipped default:
email@email.comfor anonymous donationsWhy it's a placeholder: iPaaS.com Transactions require at least one of
customer_id,company_id, oremail_address. When a Fundraise Up donation has no Supporter (anonymous), the integration substitutes a placeholder email so the Transaction can be created. The placeholder is not a real address.Suggested action: Decide whether to keep the fallback (route anonymous donations to a downstream "no-donor" bucket) or remove it (let anonymous donations fail visibly so the operator handles them manually).
Donation Total (Field)
Collection: Add/Update Fundraise Up Donation TO iPaaS.com
Shipped default: Source field
Amount_in_default_currencyWhy it's a placeholder: Maps the donation amount converted to the Fundraise Up account's default currency, so every iPaaS.com Transaction lands in a uniform currency basis. Multi-currency organizations that want the donor's submitted currency on the Transaction need to swap the source.
Suggested action: Decide whether default-currency uniformity or donor-currency fidelity matters more for your reporting; change the source to
Amountif donor-currency fidelity is required.
Donation TestName1 (Custom Field, Field-type) — sample
Collection: Add/Update Fundraise Up Donation TO iPaaS.com
Shipped default: Sample mapping demonstrating the Pattern 1 (Direct 1:1) custom-field transfer shape
Why it's a placeholder: Exists only as a worked example of the Field-type custom-field mapping pattern. Has no production purpose on a real subscription.
Suggested action: Delete the row, or repurpose it to point at a real Fundraise Up custom field used by your organization.
Donation Livemode (Custom Field, Dynamic Formula) — sample
Collection: Add/Update Fundraise Up Donation TO iPaaS.com
Shipped default: Sample formula
return GetValueFromCustomField(AdditionalProperties, "livemode");demonstrating the Pattern 2 (Dynamic Formula) custom-field transfer shapeWhy it's a placeholder: Worked example of the Dynamic Formula pattern for surfacing a Fundraise Up donation custom field via the
GetValueFromCustomFieldhelper. The shipped formula reads a custom field namedlivemodefrom Fundraise Up and writes its value to an iPaaS.com Transaction custom field namedLivemode. Companion to the TestName1 (Pattern 1) example.Suggested action: Delete the row, or repurpose it by changing the formula's field-name argument to one of your own Fundraise Up custom fields (the argument is case-sensitive and must match the Name entered in the Fundraise Up dashboard verbatim).
Defaults in Add/Update Fundraise Up Payment TO iPaaS.com (child of the Donation collection)
Payment Amount (Dynamic Formula)
Collection: Add/Update Fundraise Up Payment TO iPaaS.com (child of the Donation collection)
Shipped default:
Amount_in_default_currencyfrom the parent DonationWhy it's a placeholder: Same multi-currency consideration as the Donation Total mapping above. The default-currency value provides a uniform reporting basis.
Suggested action: Decide whether default-currency uniformity or donor-currency fidelity matters more for your reporting; change the source to
Amountif donor-currency fidelity is required (apply consistently to both DonationTotaland PaymentAmount).
Payment Method (Lookup Translation)
Collection: Add/Update Fundraise Up Payment TO iPaaS.com (child of the Donation collection)
Shipped default: Every Fundraise Up payment method → iPaaS.com
OtherWhy it's a placeholder: The shipped translation collection currently maps every Fundraise Up method (
credit_card,paypal,apple_pay, all 16 values) to the catch-all iPaaS.comOtherMethod. The actual payment method is lost on the iPaaS.com Transaction Payment unless subscribers update the translation.Suggested action: Walk the translation table and remap each Fundraise Up value to the specific iPaaS.com Method value that matches the subscription's reporting needs (typical pattern:
credit_card→Credit Card,paypal→PayPal, leave rare methods atOther).
Payment Status (Static)
Collection: Add/Update Fundraise Up Payment TO iPaaS.com (child of the Donation collection)
Shipped default:
CompletedWhy it's a placeholder: Hard-coded literal that does not reflect the actual outcome of any specific payment. Subscribers who want the Payment status to follow the Donation outcome (Completed / Failed / Refunded) need to swap to a Lookup Translation against the Donation
status.Suggested action: Replace the Static with a Lookup Translation against the Donation status field (
succeeded→Completed,failed→Failed,refunded→Refunded, etc.).
(More placeholder defaults may be added to this list as additional review identifies them.)
12. Fundraise Up server-side rate limit (concurrency-based)
What: Fundraise Up enforces a concurrency-based API rate limit, not a throughput limit. The integration must be configured to respect it.
Why: Fundraise Up's published policy is 3 parallel API requests per account, across all endpoints and all API keys (live and test combined). Requests beyond the third in flight are rejected immediately with HTTP 429 and the error code concurrent_requests_limit_exceeded. There is no per-second quota, no per-minute quota, and no fixed reset window — a slot frees the moment a prior request completes. (Fundraise Up updated this policy in June 2025; prior per-second / per-minute thresholds are no longer enforced.) Parent accounts and subaccounts are counted separately.
What this means for you:
The integration must be kept single-threaded or near-single-threaded to comply with Fundraise Up's published guidance. In the subscription's Connections and Settings, the Concurrent Connections preset must be set to
1(recommended, the default) or2(still safe), and never above2.The API Throttle Limit and API Throttle Seconds presets enforce a per-second request rate and cannot defend against a concurrency limit — leave them at their defaults (Unlimited / Unlimited).
If multiple iPaaS.com subscriptions target the same Fundraise Up account (e.g., staging and production using test-mode and live-mode keys), the sum of their Concurrent Connections values must stay at or below
3. Subscriptions targeting distinct Fundraise Up subaccounts each have their own 3-parallel allowance.When the limit is hit, the integration receives HTTP 429, raises a quota exception, and the iPaaS.com scheduler reschedules the affected transfer for the next poll cycle. The subscriber sees no direct error; the transfer simply reappears on the next run. With Concurrent Connections at
1or2and the integration as the only consumer of the account, this scenario does not arise in normal operation.For authoritative platform details, see Fundraise Up: Rate limits in Fundraise Up's API documentation.
13. iPaaS.com platform-standard limitations
The Fundraise Up integration inherits the following platform-standard limitations from iPaaS.com:
Workflow-style outbound automation requires manual setup of mappings on each subscription.
Custom-field mappings created via the iPaaS.com Subscription UI are not portable between subscriptions without re-creation or export.
The integration's "Concurrent Connections" setting controls outgoing HTTP concurrency only; it does not parallelize per-record processing.
These are not Fundraise Up–specific and are documented in the general iPaaS.com platform documentation.
Reporting an issue
If you encounter a behavior not covered above and suspect it is a bug:
Capture the iPaaS.com Subscription ID, the Fundraise Up donation id (if applicable), and the iPaaS.com error log entry (which includes the Fundraise Up
Request-Idresponse header).Open a support ticket via https://support.ipaas.com/en/ referencing integration_id 12151.
For Fundraise Up–side anomalies, escalate to https://fundraiseup.com/support/ with the
Request-Idvalue attached.
