{"openapi":"3.0.0","paths":{"/v1/campaigns":{"get":{"description":"This request allows you to read your Fundraise Up campaign records. Only base campaign types are supported.","operationId":"GetCampaigns","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Campaigns only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}},{"name":"created","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"account","required":false,"in":"query","description":"The ID of the account to filter by, formatted as [A-Z\\d]{8}.","schema":{"type":"string"}},{"name":"designation","required":false,"in":"query","description":"The ID of the designation to filter by, formatted as E[A-Z\\d]{7}.","schema":{"type":"string"}}],"responses":{"200":{"description":"On success, the API returns the list of campaigns.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access campaigns."}},"security":[{"bearer":[]}],"summary":"Get campaigns","tags":["Campaigns"]}},"/v1/campaigns/{id}":{"get":{"description":"This request allows you to read your Fundraise Up campaign record. Only base campaign types are supported.","operationId":"GetCampaign","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the campaign, formatted as FUN[A-Z\\d]{8}.","schema":{"example":"FUNXXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Campaigns only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the campaign object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDetailResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access campaigns."},"404":{"description":"Resource not found."},"422":{"description":"Campaign type not supported."}},"security":[{"bearer":[]}],"summary":"Get a campaign","tags":["Campaigns"]}},"/v1/campaigns/{id}/designations/assign":{"post":{"description":"This request allows you to assign designations to a campaign. Each item is processed independently; the response reports the per-item outcome. Only base campaign types are supported.","operationId":"AssignDesignationsToCampaign","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the campaign, formatted as FUN[A-Z\\d]{8}.","schema":{"example":"FUNXXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignDesignationsRequest"}}}},"responses":{"200":{"description":"On success, the API returns the overall status and a per-item result array describing which designations were assigned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to manage campaigns."},"404":{"description":"Resource not found."},"422":{"description":"Duplicated ids: The request contains duplicated ids.\nCampaign type not supported.\nAssign-mode limit exceeded: assign-mode campaigns support a maximum of 2 designations per request.\nDesignation frequency conflict: in assign mode, a frequency cannot be assigned to more than one designation."}},"security":[{"bearer":[]}],"summary":"Assign designations to a campaign","tags":["Campaigns"]}},"/v1/campaigns/{id}/designations/unassign":{"post":{"description":"This request allows you to unassign designations from a campaign. Each item is processed independently; the response reports the per-item outcome. Only base campaign types are supported.","operationId":"UnassignDesignationsFromCampaign","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the campaign, formatted as FUN[A-Z\\d]{8}.","schema":{"example":"FUNXXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignDesignationsRequest"}}}},"responses":{"200":{"description":"On success, the API returns the overall status and a per-item result array describing which designations were detached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to manage campaigns."},"404":{"description":"Resource not found."},"422":{"description":"Duplicated ids: The request contains duplicated ids.\nCampaign type not supported.\nLast designation for frequency: at least one designation must remain for every active frequency.\n"}},"security":[{"bearer":[]}],"summary":"Unassign designations from a campaign","tags":["Campaigns"]}},"/v1/designation_configurations":{"get":{"description":"Use this request to retrieve a paginated list of designation configurations from your Fundraise Up account. Each configuration represents a relationship between a designation and a campaign, and specifies which payment frequencies are allowed.","operationId":"GetDesignationConfigurations","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designation configurations only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"campaign","required":false,"in":"query","description":"The ID of the campaign to filter by.","schema":{"type":"string"}},{"name":"designation","required":false,"in":"query","description":"The ID of the designation to filter by.","schema":{"type":"string"}},{"name":"repeat","required":false,"in":"query","description":"Indicates payment types accepted for this designation-campaign combination.","schema":{"example":"all","type":"string","enum":["recurring","one-time","all"]}}],"responses":{"200":{"description":"On success, the API returns a list of designation configurations. The response includes an array of configuration objects and a boolean indicating whether more records are available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignationConfigurationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access designations."}},"security":[{"bearer":[]}],"summary":"Get designation configurations","tags":["Designation configurations"]}},"/v1/designation_configurations/{id}":{"get":{"description":"This request lets you retrieve a single designation configuration. The configuration represents a relationship between a designation and a campaign and includes allowed payment frequencies.","operationId":"GetDesignationConfiguration","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation configuration, formatted as M[A-Z\\d]{7}.","schema":{"example":"MXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designation configurations only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the designation configuration object. If the provided identifier is invalid, the request returns an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignationConfigurationResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access designations."}},"security":[{"bearer":[]}],"summary":"Get a designation configuration","tags":["Designation configurations"]}},"/v1/designations":{"get":{"description":"This request lets you retrieve a paginated list of designations from your Fundraise Up account, including designations inherited from the parent account.","operationId":"GetDesignations","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"created","required":false,"in":"query","description":"Filters results by the record creation date. Accepts a single date or a date range in RFC 3339 format.","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"campaign","required":false,"in":"query","description":"The ID of the campaign to filter by. Returns designations assigned to the specified campaign.","schema":{"type":"string"}}],"responses":{"200":{"description":"On success, the API returns the array of designation objects. If the parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access designations."}},"security":[{"bearer":[]}],"summary":"Get designations","tags":["Designations"]},"post":{"description":"Use this request to create a new designation in your account. Provide a name and an optional code. The designation is created in the account associated with the API key and returned with its details.","operationId":"CreateDesignation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDesignationRequest"}}}},"responses":{"200":{"description":"On success, the API returns the created designation object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Designation"}}}},"403":{"description":"Forbidden. The API key does not have permission to create designations."}},"security":[{"bearer":[]}],"summary":"Create a designation","tags":["Designations"]}},"/v1/designations/{id}":{"get":{"description":"Use this request to retrieve a single designation by its unique identifier. Returns designation details including account, name, code, and default status.","operationId":"GetDesignation","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","schema":{"example":"EXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the designation object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Designation"}}}},"403":{"description":"Forbidden. The API key does not have permission to access designations."},"404":{"description":"Resource not found."}},"security":[{"bearer":[]}],"summary":"Get a designation","tags":["Designations"]},"post":{"description":"Use this request to update a designation. Only the provided fields are updated; omitted fields keep their current values.","operationId":"UpdateDesignation","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","schema":{"example":"EXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDesignationRequest"}}}},"responses":{"200":{"description":"On success, the API returns the updated designation object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Designation"}}}},"403":{"description":"Forbidden. The API key does not have permission to update designations."},"404":{"description":"Resource not found."}},"security":[{"bearer":[]}],"summary":"Update a designation","tags":["Designations"]},"delete":{"description":"Use this request to delete a designation by its unique identifier. A designation cannot be deleted if it is the default designation of the account or is in use by donations, recurring plans, campaigns, or gift catalogs.","operationId":"DeleteDesignation","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","schema":{"example":"EXXXXXXX","type":"string"}}],"responses":{"200":{"description":"On success, the API returns the identifier of the deleted designation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedDesignation"}}}},"403":{"description":"Forbidden. The API key does not have permission to delete designations."},"404":{"description":"Resource not found."},"409":{"description":"The designation cannot be deleted because it is the default designation of the account or is in use by donations, recurring plans, or gift catalogs."}},"security":[{"bearer":[]}],"summary":"Delete a designation","tags":["Designations"]}},"/v1/designations/batch/create":{"post":{"description":"Use this request to create up to 100 designations in your account in a single call. Each item is processed individually, and the response contains a per-item result with either the created designation or an error.","operationId":"BatchCreateDesignations","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCreateDesignationsRequest"}}}},"responses":{"200":{"description":"On success, the API returns the overall status of the bulk operation and an array with the result for each item in the request, in the same order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCreateDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to create designations."}},"security":[{"bearer":[]}],"summary":"Create multiple designations","tags":["Designations"]}},"/v1/designations/batch/update":{"post":{"description":"Use this request to update up to 100 designations in your account in a single call. Only the provided fields are updated; omitted fields keep their current values. Each item is processed individually, and the response contains a per-item result with either the updated designation or an error.","operationId":"BatchUpdateDesignations","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUpdateDesignationsRequest"}}}},"responses":{"200":{"description":"On success, the API returns the overall status of the bulk operation and an array with the result for each item in the request, in the same order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUpdateDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to update designations."},"422":{"description":"The request contains duplicated ids."}},"security":[{"bearer":[]}],"summary":"Update multiple designations","tags":["Designations"]}},"/v1/designations/batch/delete":{"post":{"description":"Use this request to delete multiple designations at once. Each designation is processed independently. A designation cannot be deleted if it is the default designation of the account or is in use.","operationId":"BatchDeleteDesignations","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDeleteDesignationsRequest"}}}},"responses":{"200":{"description":"Returns the result of the batch delete operation, including the status of each designation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDeleteDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to delete designations."},"422":{"description":"The request contains duplicated ids."}},"security":[{"bearer":[]}],"summary":"Delete multiple designations","tags":["Designations"]}},"/v1/designation_groups":{"get":{"description":"Use this request to retrieve a paginated list of designation groups from your Fundraise Up account. A designation group is a container for related designations and other designation groups.","operationId":"GetDesignationGroups","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designation groups only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"created","required":false,"in":"query","description":"Filters results by the record creation date. Accepts a single date or a date range in RFC 3339 format.","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"designation","required":false,"in":"query","description":"The ID of the designation to filter by. Returns groups containing the specified designation.","schema":{"example":"EXXXXXXX","type":"string"}}],"responses":{"200":{"description":"On success, the API returns a list of designation groups. The response includes an array of designation group objects and a boolean indicating whether more records are available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignationGroupsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access designation groups."}},"security":[{"bearer":[]}],"summary":"Get designation groups","tags":["Designation groups"]}},"/v1/designation_groups/{id}":{"get":{"description":"This request lets you retrieve a single designation group from your Fundraise Up account. A designation group is a container for related designations and other designation groups.","operationId":"GetDesignationGroup","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation group, formatted as L[A-Z\\d]{7}.","schema":{"example":"LXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designation groups only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the designation group object. If the provided identifier is invalid or no matching group exists for the current account, the request returns an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesignationGroupResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access designation groups."},"404":{"description":"Resource not found."}},"security":[{"bearer":[]}],"summary":"Get a designation group","tags":["Designation groups"]}},"/v1/designation_groups/{id}/designations/assign":{"post":{"description":"Use this request to attach one or more designations to a designation group. Each item is processed independently; the response reports the per-item outcome.","operationId":"AssignDesignationsToGroup","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation group, formatted as L[A-Z\\d]{7}.","schema":{"example":"LXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAssignDesignationsRequest"}}}},"responses":{"200":{"description":"On success, the API returns the overall status and a per-item result array describing which designations were attached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAssignDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to manage designation groups."},"404":{"description":"Resource not found."},"422":{"description":"The request contains duplicated ids."}},"security":[{"bearer":[]}],"summary":"Assign designations to a designation group","tags":["Designation groups"]}},"/v1/designation_groups/{id}/designations/unassign":{"post":{"description":"Use this request to detach one or more designations from a designation group. Each item is processed independently; the response reports the per-item outcome.","operationId":"UnassignDesignationsFromGroup","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the designation group, formatted as L[A-Z\\d]{7}.","schema":{"example":"LXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUnassignDesignationsRequest"}}}},"responses":{"200":{"description":"On success, the API returns the overall status and a per-item result array describing which designations were detached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUnassignDesignationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to manage designation groups."},"404":{"description":"Resource not found."},"422":{"description":"The request contains duplicated ids."}},"security":[{"bearer":[]}],"summary":"Unassign designations from a designation group","tags":["Designation groups"]}},"/v1/donations":{"post":{"description":"This request allows you to create either a one-time donation or a recurring plan.\n\nTo create a recurring plan, you must include a `recurring_plan` object with the `frequency` parameter. If the object is not provided, a one-time donation will be created.\n\nAll fields and values must meet the requirements of your campaign. Otherwise, an error will be returned.\n\nWe do not format or verify addresses and emails that were sent through the API.\n\n<p class=\"callout callout--warning\">A Stripe payment method ID is required. For more details on how to create a payment method, refer to the <a href=\"https://docs.stripe.com/api/payment_methods\" target=\"_blank\">Stripe Payment Methods documentation</a>.</p>\n\n### Prerequisites\n\nMake sure you have:\n\n- A Stripe account that is connected to your Fundraise Up account and [activated](https://fundraiseup.com/docs/step-1/#creating-a-new-stripe-account).\n\n- An active campaign with a money-based payment method.\n\n- An API key with permission to create new donations.\n\n- Access to the Stripe API for the same Stripe account used as the Fundraise Up payment method, with the ability to [create Payment Methods](https://docs.stripe.com/api/payment_methods).\n\n Nonprofit organizations must meet PCI compliance requirements to ensure the secure processing of payment card data. Fundraise Up complies with these standards, but if an organization or its vendor uses direct API integration with Stripe to send raw card data (such as card numbers, expiration dates, and CVV codes), that organization or vendor is responsible for meeting broader PCI DSS requirements, such as SAQ D for merchants or higher.\n\n When using [Stripe Elements](https://docs.stripe.com/payments/elements), organizations remain responsible for PCI compliance, but the scope is reduced, typically to SAQ A, due to Stripe handling sensitive card data processing. If a third-party vendor manages card details (for example, in face-to-face or direct mail solutions), they must maintain their own PCI compliance (SAQ D or applicable), and the organization should document them as their third-party service provider.","operationId":"CreateDonation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationRequest"}}}},"responses":{"200":{"description":"On success, the API returns the donation object. If the parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access donations."},"422":{"description":"`employment_status is required for political organizations` — The account has Political Organization (US) enabled, but `employment_status` was not provided.\n`occupation is required when employment status is employed` — Employment status is `employed`, but `occupation` was not provided.\n`employer is required when employment status is employed` — Employment status is `employed`, but `employer` was not provided."}},"security":[{"bearer":[]}],"summary":"Create a donation","tags":["Donations"]},"get":{"description":"This request lets you access donation records in your Fundraise Up account. Note that we do not support webhooks.\n\nThe supporter data will be displayed as it appears on the Donation page in your Dashboard.","operationId":"GetDonations","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"created","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"include","required":false,"in":"query","description":"Comma-separated list of additional fields to include in the response. Supported values: upgrade_link.","schema":{"type":"string","enum":["upgrade_link"]}}],"responses":{"200":{"description":"On success, the API returns the array of donation objects. If the parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access donations."}},"security":[{"bearer":[]}],"summary":"Get donations","tags":["Donations"]}},"/v1/donations/{id}":{"post":{"description":"This request allows you to update the details of a donation that was made through an API call.\n\nYou can make updates to:\n\n* Enrich data.\n* Modify parameter values.\n* Remove parameter values.\n<p class=\"callout callout--warning\">This action is only available within 24 hours of the donation being created.<br/><br/>Donations created outside of the API, such as through the Checkout modal, Campaign Page, or Virtual Terminal, cannot be edited through the API.</p>\n\nThe donation ID must belong to the account associated with the API key.\n\nDonations from subaccounts cannot be updated using the API key of the parent account. Attempting to do so will result in an error. To update a donation in a subaccount, you must use the API key of that subaccount.\n\nFor the update to be successful, the donation object must match the current campaign settings, otherwise the operation will fail with a validation error.\n\nParallel requests to update one object are not allowed and will result in an error.\n\nAny parameters or child parameters that are not provided will remain unchanged.\n\nA successful update will modify the donation receipt, but no emails will be sent as a result.\n\nIf you update recurring plan, the changes will apply to both the specific installment and all future installments.","operationId":"UpdateDonation","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the donation, formatted as D[A-Z]{7}.","schema":{"example":"DXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDonationRequest"}}}},"responses":{"200":{"description":"On success, the API returns the donation object. If the parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to update donations."},"422":{"description":"`employment_status is required for political organizations` — The account has Political Organization (US) enabled, but `employment_status` was not provided.\n`occupation is required when employment status is employed` — Employment status is `employed`, but `occupation` was not provided.\n`employer is required when employment status is employed` — Employment status is `employed`, but `employer` was not provided."}},"security":[{"bearer":[]}],"summary":"Update a donation and its associated recurring plan","tags":["Donations"]},"get":{"description":"This request lets you access donation records in your Fundraise Up account. Note that we do not support webhooks.\n\nThe supporter data will be displayed as it appears on the Donation page in your Dashboard.","operationId":"GetDonation","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the donation, formatted as D[A-Z]{7}.","schema":{"example":"DXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}},{"name":"include","required":false,"in":"query","description":"Comma-separated list of additional fields to include in the response. Supported values: upgrade_link.","schema":{"type":"string","enum":["upgrade_link"]}}],"responses":{"200":{"description":"On success, the API returns the donation object. If the parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access donations."}},"security":[{"bearer":[]}],"summary":"Get a donation","tags":["Donations"]}},"/v1/donations/fee":{"get":{"operationId":"GetDonationFee","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}},{"name":"currency","required":true,"in":"query","description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","schema":{"example":"usd","type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sle","sos","srd","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw"]}},{"name":"amount","required":true,"in":"query","description":"Donation amount in the selected currency. Must be a decimal string in the format {NNN}[.nn]. Examples: 9.99 (for USD), 200 (for JPY).","schema":{"example":"99.99","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDonationFeeResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access donations."}},"security":[{"bearer":[]}],"summary":"Get donation fee","tags":["Donations"]}},"/v1/events":{"get":{"description":"This request helps you track updates and changes in your account in the same way as in the [Audit Log](https://fundraiseup.com/docs/audit-log/). While the `Donations` endpoint shows the current state of a donation when queried, it doesn't reflect changes that happen after the initial creation (for example, finalized fees or status updates). The `Events` endpoint logs all updates as they occur, giving you the most current view of activity when you query it.\n\n### Use cases\n- **Retrieving finalized fees**. The `platform_fee` field in a donation will initially show 0 until Stripe finalizes the fee data. To get the updated fee values, use the `Events` endpoint to track the `donation.success` event, which confirms that the finalized fees have been updated.\n- **Monitoring donation status changes**. Donations can move through multiple statuses — `pending`, `success`, `failed`, and more. Use the `Events` endpoint to track status changes. For example, a donation might be `pending` while awaiting payment processor confirmation and later transition to `success` or `failed`.\n- **Tracking refunds and disputes**. If a donation is refunded or disputed, you'll receive corresponding events like `donation.refunded`, `donation.success_dispute_created`, or `donation.success_dispute_won`. This helps keep your records accurate without manually checking each donation.\n- **Handling recurring plan updates**. Recurring donations generate events like `recurring_plan.activated`, `recurring_plan.failed`, or `recurring_plan.canceled`. Monitoring these events allows you to track subscription activities and take appropriate actions if a recurring payment fails or is canceled.\n- **Updating supporter information**. When a supporter updates their information or requests personal data deletion, events like `supporter.updated` or `supporter.personal_data_deleted` are triggered. This is especially important for maintaining compliance with data protection regulations.\n- **Monitoring tribute activity**. Use events like `tribute.created` or `tribute.updated` to keep track of tribute donations and ensure that tribute cards are sent as expected (`tribute.shared`).","operationId":"GetEvents","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}},{"name":"created","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"types","required":true,"in":"query","description":"An optional array of up to 10 strings containing specific event types. The response will include only events with a matching type. Passing more than 10 values results in an error. Not passing this parameter will return all event types.\n\nAvailable event types include donation events (for example, `donation.created`), recurring plan events (for example, `recurring_plan.activated`), transaction attempt events (for example, `transaction_attempt.success`), benefit events (for example, `donation_benefit.updated`), tribute events (for example, `tribute.created`), and supporter events (for example, `supporter.created`).\n\n[Event types explained](https://fundraiseup.com/support/api-event-types/).","schema":{"example":["donation.created","donation.success","donation.failed"],"type":"array","items":{"type":"string","enum":["donation.created","donation.success","donation.pending","donation.failed","donation.updated","donation.refunded","donation.success_early_fraud_warning","donation.pending_ach_verification_required","donation.pending_incomplete","donation.pending_scheduled","donation.pending_waiting_for_transfer","donation.pending_paypal_action_required","donation.pending_retrying","donation.personal_data_deleted","donation_benefit.updated","donation.success_dispute_created","donation.success_dispute_lost","donation.success_dispute_won","donation.success_dispute_in_review","recurring_plan.activated","recurring_plan.scheduled","recurring_plan.failed","recurring_plan.completed","recurring_plan.canceled","recurring_plan.terms_updated","recurring_plan.paused","recurring_plan.retrying","recurring_plan.details_updated","recurring_plan.personal_data_deleted","transaction_attempt.pending","transaction_attempt.success","transaction_attempt.failed","tribute.created","tribute.updated","tribute.shared","tribute.personal_data_deleted","supporter.created","supporter.personal_data_deleted","supporter.updated"]}}}],"responses":{"200":{"description":"On success, the API returns the list of events. The response includes the event data array and a boolean indicating if more records are available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access events."}},"security":[{"bearer":[]}],"summary":"Get events","tags":["Events"]}},"/v1/fundraisers":{"post":{"description":"This request allows you to create a Fundraiser — a supporter-led fundraising page connected to a specific campaign. Learn more about [how Fundraisers work](https://fundraiseup.com/docs/fundraiser/) in Fundraise Up.","operationId":"CreateFundraiser","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundraiserRequest"}}}},"responses":{"200":{"description":"On success, the API returns the created Fundraiser object. If any parameters are invalid, the request returns an error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFundraiserResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to create Fundraisers."}},"security":[{"bearer":[]}],"summary":"Create a Fundraiser","tags":["Fundraisers"]},"get":{"description":"This request allows you to retrieve Fundraiser records from your Fundraise Up account. Webhooks are not supported.","operationId":"GetFundraisers","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Fundraisers only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}},{"name":"created","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}}],"responses":{"200":{"description":"On success, the API returns an array of Fundraiser objects. If parameters are invalid, the request returns an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundraisersResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access Fundraisers."}},"security":[{"bearer":[]}],"summary":"Get Fundraisers","tags":["Fundraisers"]}},"/v1/fundraisers/{id}":{"post":{"description":"This request allows you to update the details of a Fundraiser.\n\nYou can make updates to:\n\n* Enrich data.\n* Modify parameter values.\n* Remove parameter values.\n\nThe Fundraiser ID must belong to the account associated with the API key.\n\nFundraisers from subaccounts cannot be updated using the API key of the parent account. Attempting to do so will result in an error. To update a Fundraiser in a subaccount, you must use the API key of that subaccount.\n\nFor the update to succeed, the Fundraiser object must match the current campaign settings; otherwise, the operation will fail with a validation error.\n\nParallel requests to update the same object are not allowed and will result in an error.\n\nAny parameters or child parameters that are not included will remain unchanged.","operationId":"UpdateFundraiser","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the Fundraiser, formatted as N[A-Z]{7}.","schema":{"example":"NXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFundraiserRequest"}}}},"responses":{"200":{"description":"On success, the API returns the Fundraiser object. If parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFundraiserResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to update Fundraisers."}},"security":[{"bearer":[]}],"summary":"Update a Fundraiser","tags":["Fundraisers"]},"get":{"description":"This request allows you to retrieve a Fundraiser record from your Fundraise Up account. Webhooks are not supported.","operationId":"GetFundraiser","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the Fundraiser, formatted as N[A-Z]{7}.","schema":{"example":"NXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Fundraisers only exist in live mode — set this to `true`.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the Fundraiser object. If parameters are invalid, the call will return an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFundraiserResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access Fundraisers."}},"security":[{"bearer":[]}],"summary":"Get a Fundraiser","tags":["Fundraisers"]}},"/v1/recurring_plans":{"get":{"description":"This request allows you to read your Fundraise Up recurring plan records. The supporter data will be displayed as it appears on the Recurring plan page in your Dashboard.","operationId":"GetRecurringPlans","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}},{"name":"created","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CreatedQuery"}}],"responses":{"200":{"description":"On success, the API returns the list of recurring plans. The response includes the recurring plan data array and a boolean indicating if more records are available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringPlansResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access recurring plans."}},"security":[{"bearer":[]}],"summary":"Get recurring plans","tags":["Recurring plans"]}},"/v1/recurring_plans/{id}":{"get":{"description":"This request allows you to read your Fundraise Up recurring plan record. The supporter data will be displayed as it appears on the Recurring plan page in your Dashboard.","operationId":"GetRecurringPlan","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the recurring plan, formatted as R[A-Z]{7}.","schema":{"example":"RXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the recurring plan object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringPlanResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access recurring plans."}},"security":[{"bearer":[]}],"summary":"Get a recurring plan","tags":["Recurring plans"]}},"/v1/supporters":{"get":{"description":"Use this request to retrieve a paginated list of supporter records from your Fundraise Up account. Each record includes the latest contact details and other supporter-level fields, matching the data shown in the Supporters view in the Dashboard.\n\n## About supporter contact data\n\nThe `address`, `phone`, and `employer` fields in supporter records reflect the most recent information provided by the supporter.\n\nThese fields are updated automatically when:\n\n* The supporter makes a new donation using the same email address.\n* A donation or recurring plan is edited in the Dashboard.\n* The supporter updates their details in the Donor Portal.\n\nInstallments do not update supporter-level contact data.\n\nYou can't edit supporter contact fields through the API. To change them, update the associated donation or recurring plan — in the Dashboard at any time, or through the API within 24 hours of creation. The supporter record will reflect the updated values automatically.\n\nThis behavior applies only to changes made after June 2, 2025. Data collected earlier is not updated retroactively.\n\n### Tracking updates using the Events endpoint\n\nTo monitor changes to supporter contact data, use the [Events endpoint](https://api.fundraiseup.com/v1/docs/#/operations/GetEvents). The following events may indicate a change to supporter contact fields:\n\n* `supporter.updated` — supporter-level data has changed.\n* `donation.updated` — contact fields on a donation were modified.\n* `recurring_plan.details_updated` — a recurring plan was edited.\n\nWhen you receive one of these events, use the corresponding endpoints to retrieve updated data:\n\n* `GET /supporters/{id}` — get supporter-level contact information.\n* `GET /donations/{id}` — get contact details specific to a donation.\n* `GET /recurring_plans/{id}` — get contact details specific to a recurring plan.","operationId":"GetSupporters","parameters":[{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}},{"name":"created","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CreatedQuery"}},{"name":"starting_after","required":false,"in":"query","description":"A cursor for pagination. Returns records older than the specified object ID.","schema":{"type":"string"}},{"name":"ending_before","required":false,"in":"query","description":"A cursor for pagination. Returns records newer than the specified object ID.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"This parameter specifies the number of records to display per page, ranging from 1 to 100","schema":{"default":10,"type":"number"}}],"responses":{"200":{"description":"On success, the API returns the list of supporters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportersResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access supporters."}},"security":[{"bearer":[]}],"summary":"Get supporters","tags":["Supporters"]}},"/v1/supporters/{id}":{"get":{"description":"Use this request to retrieve a specific supporter record by its unique ID. The response includes all supporter-level fields available in the Dashboard, such as name, email, language, mailing address, phone number, employer, and others.\n\n ## About supporter contact data\n\nThe `address`, `phone`, and `employer` fields in supporter records reflect the most recent information provided by the supporter.\n\nThese fields are updated automatically when:\n- The supporter makes a new donation using the same email address.\n- A donation or recurring plan is edited in the Dashboard.\n- The supporter updates their details in the Donor Portal.\n\nInstallments do not update supporter-level contact data.\n\nYou can't edit supporter contact fields through the API. To change them, update the associated donation or recurring plan. The supporter record will reflect the updated values automatically.\n\nThis behavior applies only to changes made after June 2, 2025. Data collected earlier is not updated retroactively.\n\n### Tracking updates using the Events endpoint\n\nTo monitor changes to supporter contact data, use the [Events endpoint](https://api.fundraiseup.com/v1/docs/#/operations/GetEvents). The following events may indicate a change to supporter contact fields:\n\n- `supporter.updated` — supporter-level data has changed.\n- `donation.updated` — contact fields on a donation were modified.\n- `recurring_plan.details_updated` — a recurring plan was edited.\n\nWhen you receive one of these events, use the corresponding endpoints to retrieve updated data:\n- `GET /supporters/{id}` — get supporter-level contact information.\n- `GET /donations/{id}` — get contact details specific to a donation.\n- `GET /recurring_plans/{id}` — get contact details specific to a recurring plan.","operationId":"GetSupporter","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the supporter, formatted as S[A-Z]{7}.","schema":{"example":"SXXXXXXX","type":"string"}},{"name":"livemode","required":false,"in":"query","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","schema":{"example":true,"type":"boolean"}}],"responses":{"200":{"description":"On success, the API returns the supporter object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupporterResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to access supporters."}},"security":[{"bearer":[]}],"summary":"Get a supporter","tags":["Supporters"]}},"/v1/donor_portal/access_links/supporters/{id}":{"post":{"description":"This request generates a link that allows a specific supporter to access their Fundraise Up Donor Portal page without logging in. Read more about [integrating Fundraise Up Donor Portal with your platform](https://fundraiseup.com/docs/seamless-donor-portal/).","operationId":"CreateDonorAuthLinkBySupporterId","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the supporter, formatted as S[A-Z]{7}.","schema":{"example":"SXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDonorAuthLinkByCustomerKeyBody"}}}},"responses":{"200":{"description":"Donor Portal authentication link retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorAuthLinkResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to perform this operation."}},"security":[{"bearer":[]}],"summary":"Create a Donor Portal access link for a supporter","tags":["Access links"]}},"/v1/donor_portal/access_links/recurring_plans/{id}":{"post":{"description":"This request generates a link that allows a supporter to view and edit a specific recurring plan. Access to other sections of the Fundraise Up Donor Portal is restricted.\n\nParent accounts cannot use their API keys to create Donor Portal access links for subaccounts. To create access links for a subaccount, generate an API key within that specific subaccount and use it.\n\nRead more about [integrating Fundraise Up Donor Portal with your platform](https://fundraiseup.com/docs/seamless-donor-portal/).","operationId":"CreateDonorAuthLinkBySubscriptionId","parameters":[{"name":"id","required":true,"in":"path","description":"Unique identifier of the recurring plan in the format R[A-Z]{7}.","schema":{"example":"RXXXXXXX","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDonorAuthLinkBySubscriptionKeyBody"}}}},"responses":{"200":{"description":"Successful response containing the generated donor portal access link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorAuthLinkResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to perform this operation."}},"security":[{"bearer":[]}],"summary":"Create a Donor Portal access link for a recurring plan","tags":["Access links"]}},"/v1/upgrade_links/donations/{id}":{"post":{"description":"Generates a one-time Upgrade Link for a specific one-time donation. The link directs the supporter to a page where they can start a recurring plan based on their original donation. Links are permanent and signature-authenticated — no login required.\n\nTo call this endpoint, your API key must have the **Upgrade Links — Write** permission.\n\nParent accounts cannot use their API keys to create upgrade links for subaccounts. To create upgrade links for a subaccount, generate an API key within that specific subaccount and use it.","operationId":"CreateUpgradeLink","parameters":[{"name":"id","required":true,"in":"path","description":"One-time donation ID in the format D[A-Z]{7}. The donation must be eligible for upgrade.","schema":{"example":"DXXXXXXX","type":"string"}}],"responses":{"200":{"description":"Upgrade link generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpgradeLinkResponse"}}}},"403":{"description":"Forbidden. The API key does not have permission to perform this operation."}},"security":[{"bearer":[]}],"summary":"Create an upgrade link for a one-time donation","tags":["Upgrade links"]}}},"info":{"title":"Fundraise Up API","description":"1. [Overview](#/#overview)\n2. [Limitations](#/#limitations)\n3. [Key features](#/#key-features)\n4. [Use cases](#/#use-cases)\n5. [How to get API key](#/#how-to-get-api-key)\n6. [Managing API keys](#/#managing-api-keys)\n7. [Authentication](#/#authentication)\n8. [Parent accounts and subaccounts](#/#parent-accounts-and-subaccounts)\n9. [Rate limits](#/#rate-limits)\n10. [Errors](#/#errors)\n11. [Pagination](#/#pagination)\n12. [Request IDs](#/#request-ids)\n13. [Changes in API](#/#changes-in-api)\n\n## Overview\n\nThe Fundraise Up API gives you more control over your fundraising data. Use it to process offline donations through your Fundraise Up account and keep your CRM or other systems up to date with your fundraising activity.\n\nWith the API, you can interact with these resources:\n\n- Donations — Create and update donations and their associated recurring plans (within 24 hours of creation, API-created only).\n- Recurring plans — Read recurring donation schedules.\n- Supporters — Access supporter details.\n- Events — Retrieve events from your Audit Log.\n- Donor Portal access links — Authenticate supporters in the Donor Portal.\n- Donor Portal recurring plan access links — Provide direct access to recurring plan settings.\n- Campaigns — List and retrieve campaign details, assign and unassign designations.\n- Designations — Create, update, delete, and list designations, including batch operations.\n- Designation groups — List and retrieve designation groups, assign and unassign designations.\n- Designation configurations — Access relationships between designations and campaigns.\n- Upgrade links — Generate upgrade links for one-time donations to convert them into recurring plans.\n\n## Limitations\n\n- Most endpoints operate on a single object per request. Designation endpoints support batch operations for up to 100 items.\n- Updates to Donations and Recurring plans are restricted to the first 24 hours and apply only to API-created donations.\n\n- You can retrieve and export data only for Donations, Recurring plans, Supporters, Events, Campaigns, Designations, Designation groups, and Designation configurations.\n\n- The API supports the following payment methods: credit cards, debit cards, Apple Pay, Google Pay, ACH US Direct Debit, and BACS Direct Debit.\n\n## Key features\n\n- Architecture — Built on REST principles.\n- URLs — Provides predictable, resource-oriented URLs.\n- Requests — Accepts JSON-encoded request bodies with `Content-Type: application/json` header.\n- Responses — Returns JSON-encoded responses.\n- Standards — Uses standard HTTP response codes, authentication, and verbs.\n\n## Use cases\n\nThere are a variety of use cases where you can integrate our API into your fundraising flow. In particular, you can use our API for:\n\n- Ticketing and events.\n- Face-to-face fundraising.\n- Direct mail campaigns.\n- Telefundraising.\n- Fundraising galas and dinners.\n- Analytics integrations.\n\nThe API is not intended for migrating subscriptions from legacy systems. For migration purposes, please refer to our [Migration service](https://fundraiseup.com/docs/migration/).\n\n## How to get API key\n\nTo use the Fundraise Up API, you first need to generate an API key. Only users with the [Organization Administrator](https://fundraiseup.com/docs/team-settings/#organization-administrator) role can create and manage API keys.\n\nFollow these steps to create your API key:\n\n1. Go to **[Dashboard](https://dashboard.fundraiseup.com/)** > **Settings** > **API keys**.\n\n2. Click **Create API key**.\n\n3. Enter a descriptive name for your API key. This name helps you identify different keys when you have multiple integrations.\n\n4. Set permissions for your key. You can assign different permissions for Live and Test data independently:\n\n**Live data permissions:**\n\n- **Donations** — Read: access donation information; Write: create and update donations\n- **Recurring plans** — Read: access recurring donation schedules\n- **Supporters** — Read: access supporter information\n- **Events** — Read: retrieve events from your Audit Log\n- **Fundraisers** — Read: access supporter-created Fundraisers; Write: create and update Fundraisers\n- **Donor Portal access links** — Write: generate secure login links for your supporters\n- **Campaigns** — Read: list and retrieve campaigns; Write: assign and unassign designations\n- **Designations** — Read: list and retrieve designations; Write: create, update, and delete designations\n- **Designation groups** — Read: list and retrieve designation groups; Write: assign and unassign designations\n- **Designation configurations** — Read: access relationships between designations and campaigns\n- **Upgrade links** — Write: generate upgrade links for one-time donations\n\n**Test data permissions:**\n\n- **Donations** — Read: access test donation information; Write: create and update test donations\n- **Recurring plans** — Read: access test recurring donation schedules\n- **Supporters** — Read: access test supporter information\n- **Events** — Read: retrieve test events from your Audit Log\n\nYou must select at least one permission in either Live or Test data. You can modify permissions later using the three-dot menu next to the key.\n\n5. Click **Create API key**.\n\n6. Copy and securely store your API key. You will only see it once and cannot retrieve it later.\n\nYour key is activated immediately and does not expire.\n\n![Name.png](https://ucarecdn.com/ada1a533-786f-48af-9816-0b37aeb16417/newapikey.png)\n\n## Managing API keys\n\nYou can view all your API keys on the [API keys page](http://dashboard.fundraiseup.com/settings/api-keys). For each key, click the three-dot menu to manage its settings. You can edit the key name, modify its permissions, or delete it if you no longer need it.\n\n**Note for API keys created before [30th January 2026]**: These keys cannot be edited through Dashboard. To update permissions, create a new API key. Keys created before this release will be deactivated 6 months after the release date.\n\nIf you're using a third-party provider to manage your donations, they must have permission to create [Payment Method](https://docs.stripe.com/api/payment_methods) entities in the same Stripe account as Fundraise Up.\n\n<p class=\"callout callout--danger\">If you suspect that your API key has been compromised, delete it immediately and generate a new key.</p>\n\n## Authentication\n\nAuthenticate to the API using HTTP Bearer authentication. Include your API key in the `Authorization` header like this: `curl -H \"Authorization: Bearer test_…\"`.\n\nEnsure that all API requests are made over HTTPS. Requests made over HTTP will not be accepted. Requests without proper authentication will also be rejected.\n\n## Parent accounts and subaccounts\n\nEach 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](https://fundraiseup.com/docs/seamless-donor-portal/) 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.\n\nHowever, 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.\n\n![Parent accounts and subaccounts.png](https://ucarecdn.com/07b2584a-7a8d-43f9-9be6-832b02d2f04a/api-2.png)\n\n## Rate limits\n\nTo maintain stability and ensure reliable performance, the Fundraise Up API uses a concurrency-based request limit.\n\n### Concurrency limit\n\nEach account can send up to 3 API requests in parallel. This applies to all endpoints and all API keys associated with the same account, whether test or live.\n\nWhen more than 3 requests are sent in parallel, only 3 will be processed. Any additional requests will be rejected with a `429 Too Many Requests` error and the code `concurrent_requests_limit_exceeded`.\n\nTo avoid hitting the limit:\n\n- Keep your integration single-threaded and run requests sequentially — one after another.\n- If you use parallel requests, implement a queue to control concurrency.\n\n### Subaccounts\n\nThe limit applies to each account individually. Parent and subaccounts are counted separately. If your setup requires more parallel processing, you can distribute requests across multiple subaccounts.\n\n## Errors\n\nFundraise Up uses standard HTTP response codes to indicate the outcome of an API request:\n\n- `2xx` codes indicate successful requests.\n- `4xx` codes indicate client-side errors, such as missing parameters or failed charges.\n- `5xx` codes, which are rare, indicate server-side issues with Fundraise Up.\n\nCertain 4xx errors, such as a [declined card](https://docs.stripe.com/declines), will include an error code with a brief explanation.\n\n## HTTP status codes\n\n| Code               | Status            | Explanation                                                                                                                               |\n| ------------------ | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |\n| 200                | OK                | Everything worked as expected.                                                                                                            |\n| 400                | Bad Request       | The request was invalid, typically due to a missing required parameter.                                                                   |\n| 401                | Unauthorized      | No valid API key provided.                                                                                                                |\n| 403                | Forbidden         | The API key doesn't have permissions to perform the request.                                                                              |\n| 404                | Not Found         | The requested resource doesn't exist.                                                                                                     |\n| 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.  |\n| 429                | Too Many Requests | Your organization has exceeded the allowed number of concurrent requests. Reduce the number of simultaneous requests to avoid this error. |\n| 500, 502, 503, 504 | Server Errors     | Something went wrong on the Fundraise Up side. (These are rare.)                                                                          |\n\n### Attributes\n\n- `code`**: nullable string.** Short error code for some errors that can be handled programmatically.\n- `message`**: nullable string.** Human-readable error description.\n- `parameter`**: nullable string.** Parameter associated with the error.\n- `stripe_error`**: nullable dictionary.** Stripe-specific error details (see [Stripe API documentation](https://docs.stripe.com/api/errors).)\n\n### Error codes\n\n| Error code                           | Explanation                                                     |\n| ------------------------------------ | --------------------------------------------------------------- |\n| `tokens_rate_limit_exceeded`         | Too many API tokens used within a time period.                  |\n| `requests_rate_limit_exceeded`       | Organization has reached the limit for API requests per period. |\n| `concurrent_requests_limit_exceeded` | Account has too many parallel requests.                         |\n| `stripe_rate_limit_exceeded`         | Too many requests made to Stripe.                               |\n| `stripe_error`                       | Error related to Stripe payment processing.                     |\n| `not_found`                          | Requested resource could not be found.                          |\n| `update_expired`                     | Update attempted after the allowed time period.                 |\n| `update_conflict`                    | The request conflicts with another request.                     |\n| `parameter_unexpected`               | Unexpected parameter provided in the request.                   |\n| `parameter_required`                 | Required parameter is missing from the request.                 |\n| `parameter_invalid`                  | Parameter provided is not valid.                                |\n| `payment_account_required`           | Payment account setup is necessary.                             |\n\nError codes may change over time. We'll update this article to reflect any changes.\n\n## Pagination\n\nAll API endpoints that list records display them in reverse chronological order and use cursor-based navigation for browsing through the list.\n\nTo maintain consistent sorting and navigation, especially when entities have the same creation date, records are also sorted by identifier in reverse alphabetical order. This means that records are first sorted by creation date (newest to oldest), and then by identifier (Z to A).\n\n| **Parameter**    | **Type**                    | **Description**                                                                                                                                                                                                                                                                                                                                     |\n| ---------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `limit`          | **optional**, 10 by default | This parameter specifies the number of records to display per page, ranging from 1 to 100.                                                                                                                                                                                                                                                          |\n| `starting_after` | **optional object ID**      | A cursor for pagination. The `starting_after` parameter uses an existing object ID to define your position in the list. For example, if you fetch a list of items and receive 100 results, you can use the ID of the last object in that list as the `starting_after` parameter in your subsequent request to retrieve the next page of results.    |\n| `ending_before`  | **optional object ID**      | A cursor for pagination. The `ending_before` parameter uses an existing object ID to define your position in the list. For example, if you fetch a list of items and receive 100 results, you can use the ID of the first object in that list as the `ending_before` parameter in your subsequent request to retrieve the previous page of results. |\n\nThe parameters `starting_after` and `ending_before` are mutually exclusive.\n\n| **List response format** | **Type**    | **Description**                                                                                                                                                                                        |\n| ------------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `data`                   | **array**   | An array containing the entity records, paginated by any request parameters.                                                                                                                           |\n| `has_more`               | **boolean** | Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records. |\n\n## Request IDs\n\nEach API request includes response header `Request-Id` with unique value.\n\nTo help us resolve issues faster, please include the `Request-Id` when contacting us about a specific request.\n\n## Changes in API\n\nWe 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.\n\nDetailed information about any changes will be posted on this page and added to the documentation.\n\n### June 2026\n\n#### Added employment information to donations, recurring plans, and supporters\n\nDonation and recurring plan responses now include `employment_status` and `occupation` fields in the `supporter` object. Supporter responses include the same fields at the top level.\n\nThese fields are collected for US political organizations as required by FEC regulations. For other organizations, these fields return `null`.\n\n`POST /v1/donations` and `POST /v1/donations/{id}` now accept `employment_status` and `occupation` in the `supporter` object. For political organizations, `employment_status` is required; when set to `employed`, `occupation` and `employer` are also required.\n\n#### Added campaign and designation management endpoints\n\nNew endpoints for managing designations, designation groups, and campaigns via the API. The endpoints support programmatic creation, update, and deletion of designations, assignment to campaigns and designation groups, and campaign discovery.\n\n#### Added campaigns endpoints\n\n- `GET /v1/campaigns` — list campaigns with pagination and filtering by account or designation.\n- `GET /v1/campaigns/{id}` — retrieve a single campaign by ID.\n\n#### Added designations management endpoints\n\n- `GET /v1/designations` — list designations with pagination and filtering by campaign or creation date.\n- `GET /v1/designations/{id}` — retrieve a single designation.\n- `POST /v1/designations` — create a designation.\n- `POST /v1/designations/{id}` — update a designation.\n- `DELETE /v1/designations/{id}` — delete a designation.\n- `POST /v1/designations/batch/create` — create up to 100 designations in a single request.\n- `POST /v1/designations/batch/update` — update up to 100 designations in a single request.\n- `POST /v1/designations/batch/delete` — delete up to 100 designations in a single request.\n\nBatch operations process each item independently and return per-item results, allowing partial success.\n\n#### Added designation groups endpoints\n\n- `GET /v1/designation_groups` — list designation groups with full tree hierarchy (designations and nested groups).\n- `GET /v1/designation_groups/{id}` — retrieve a single designation group with its children.\n- `POST /v1/designation_groups/{id}/designations/assign` — assign designations to a group (up to 100 per request).\n- `POST /v1/designation_groups/{id}/designations/unassign` — remove designations from a group (up to 100 per request).\n\n#### Added campaign designation assignment endpoints\n\n- `POST /v1/campaigns/{id}/designations/assign` — assign designations to a campaign (up to 100 per request).\n- `POST /v1/campaigns/{id}/designations/unassign` — remove designations from a campaign (up to 100 per request).\n\n#### Updated `POST /v1/donations`\n\n`POST /v1/donations` now supports BACS Direct Debit. Pass a Stripe `bacs_debit` payment method in `payment_method.stripe.id` together with `payment_method.stripe.setup_intent_id`. BACS is available only for UK organizations and donations in GBP, supports recurring donations only (not one-time), and does not support the daily frequency.\n\n### May 2026\n\n#### Added endpoint for one-time Upgrade Links\n\nThe new `POST /v1/upgrade_links/donations/{id}` endpoint returns a permanent Upgrade Link for a specific one-time donation. The link directs the supporter to a page where they can start a recurring plan based on their original donation.\n\nThe donation must be eligible for upgrade. If it isn't (for example, tribute donation, inactive payment method, already upgraded), the endpoint returns a `422` error.\n\nTo call this endpoint, your API key must have the **Upgrade Links — Write** permission. You can add this permission to a new API key or to an existing one in [**Dashboard > Settings > API keys**](https://dashboard.fundraiseup.com/settings/api-keys).\n\n#### Added `one_time_to_recurring_upgrade_link` field to donation responses\n\nThe `GET /v1/donations` and `GET /v1/donations/{id}` endpoints now accept the `include=upgrade_link` query parameter. When you pass it, the response includes a `one_time_to_recurring_upgrade_link` field with the upgrade URL. The field is null for non-eligible donations.\n\n### April 2026\n\n#### GET /v1/events — `payments` field added; `donation` and `recurring_plan` deprecated\n\n`transaction_attempt.*` events now include a `payments` array. Each item in the array has `donation` and `recurring_plan` fields and represents one donation or recurring plan in the transaction. This replaces the top-level `donation` and `recurring_plan` fields, which are now deprecated.\n\n**What to do:** Switch from reading the top-level `donation` and `recurring_plan` fields to reading each object in `payments[]`. See the [migration guide](https://fundraiseup.com/support/migrating-deprecated-api-fields/).\n\n**Deadline:** The deprecated fields will be removed on **2026-10-30**.\n\n#### Added fee calculation endpoint\n\n- `GET /v1/donations/fee` — calculates the processing fee for a given donation amount and currency. Returns the fee amount and the total amount including the fee.\n\n#### Updated `POST /v1/donations`\n\n- Added optional `fee_amount` field. When provided, the fee amount is added to the donation total and recorded as supporter-covered fee. Use `GET /v1/donations/fee` to calculate the correct fee before submitting the donation.\n\nTo use these endpoints, your API key must have the **Donations — Write** permission enabled.\n\n#### Added hide_amount to the tribute sharing in donation and recurring plan responses\n\nAdded `hide_amount` to the `tribute.sharing` object in responses for `GET /v1/donations` and `GET /v1/recurring_plans`.\nThe field indicates whether the donation amount should be hidden in the tribute notification sent to the recipient.\n\n#### Updated `POST /v1/donations`\n\nAdded optional `payment_method.stripe.setup_intent_id` field. Required for ACH US Direct Debit payments.\n\n### March 2026\n\n#### Added grouped_donation_id to donation and recurring plan responses\n\nAdded `grouped_donation_id` to responses for `GET /v1/donations`, `POST /v1/donations`, and `GET /v1/recurring_plans`.\nThe field indicates the donation group identifier and can be used to correlate multiple donation items processed in the same payment.\n\nThe field can be `null` when not applicable.\n\n#### Added source_of_funds to donation and recurring plan responses\n\nAdded `source_of_funds` to responses for `GET /v1/donations`, `POST /v1/donations`, and `GET /v1/recurring_plans`. The field indicates the source of funds for the donation and is used to determine Gift Aid eligibility.\n\nPossible values: `own_money`, `on_behalf_of`, `fundraising_or_collection`.\n\n### February 2026\n\n#### Updates to the designation field\n\nThe `designation` field now has stricter behavior across the API. When creating a donation, this field is required and must contain the ID of an existing designation in your account. Default values are no longer applied, and the API returns an error if the field is missing.\n\nIn all responses of `/donations` and `/recurring_plans`, the designation field is now always populated and never null.\n\n#### Added designation configuration API endpoints:\n\n- `GET /v1/designation_configurations`\n- `GET /v1/designation_configurations/{id}`\n\nThese endpoints allow you to read designation configurations. Each configuration represents a relationship between a designation and a campaign:\n\n- Configuration identifier and creation date\n- `repeat` field (enum: `one-time`, `recurring`, `all`) indicating which payment types are accepted for this designation-campaign combination\n- Account, campaign, and designation details\n\nThe list endpoint supports filtering by `repeat`, `designation`, and `campaign`.\n\nTo use these endpoints, your API key must have the **Designation configurations — Read** permission enabled. You can add this permission when creating a new API key or by updating an existing key in **Dashboard > Settings > API keys**.\n\n#### Added donation_benefit.updated event type to GET /api/v1/events\n\nThe `types` field now includes a new allowed value: `donation_benefit.updated`.\n\nThis event triggers when the recipient name or shipping details are updated on a benefit. Previously, these edits did not generate an API event, which caused data to fall out of sync between Fundraise Up and connected CRMs.\n\n### January 2026\n\n**Granular API key permissions**\n\n**Breaking Changes:**\n\n- Removed support for generating Donor Portal access links in Test mode. Requests with test supporter or recurring plan IDs will return `Resource not found` error.\n- All new API keys require explicit `livemode` parameter in all GET and POST requests, regardless of whether they have permissions for one mode or both.\n- Legacy API keys (created before this release) cannot be edited through Dashboard.\n\n**New Features:**\n\n- Granular API key permissions: assign independent read/write permissions for each resource (donations, supporters, events, recurring plans, fundraisers).\n- Dual-mode API keys: a single key can have different permissions for Live and Test data simultaneously.\n\n### December 2025\n\n#### Added user agent field to device object for donation API endpoints:\n\n- `GET /api/v1/donations`\n- `GET /api/v1/recurring_plans`\n\n`user_agent` field contains the raw user agent string from the browser and can be `null` if not provided.\n\n#### Enhanced device information in recurring plans\n\nThe `device` object has been enhanced for `GET /api/v1/recurring_plans` endpoint. Now it includes:\n\n- `ip` - Contains details about the IP address from which the donation was made.\n- `browser` — Browser name, can be `null` if not detected\n- `os` — Operating system name, can be `null` if not detected\n- `type` — Device type, can be `null` if not detected\n\n### November 2025\n\n#### Added benefit data to donation API endpoints:\n\n- `GET /api/v1/donations`\n- `GET /api/v1/recurring_plans`\n\nBoth endpoints now return a `benefit` object with different states:\n\n- `state: \"not_shown\"` — benefits were not displayed during checkout\n- `state: \"shown_not_selected\"` — benefits were displayed but not selected\n- `state: \"selected\"` — a benefit was selected, includes full benefit details\n\n#### Added date filtering capabilities to API exports:\n\n- Introduced `created` parameter with `gt`, `gte`, `lt`, and `lte` operators for filtering donations, fundraisers, and other entities by creation date\n- Date values must be provided in RFC 3339 date-time format (ISO 8601 profile) with timezone\n- Added `created_at` field to fundraiser responses in `GET /v1/fundraisers` and `GET /v1/fundraisers/{id}` endpoints\n- Date filters can be used independently or in combination with existing parameters such as `ending_before`, `starting_after`, and `limit`\n\n### July 2025\n\n#### Bank account details now included in payment object\n\nThe payment object in the `/v1/donations` response now includes a new `bank_account` object. This object is returned when the payment method is a bank transfer (such as ACH or SEPA Direct Debit) and includes a `last4` field with the last four digits of the bank account number.\n\nThis addition mirrors the existing `credit_card` object and provides more complete data for reconciliation and reporting. No changes are required on your end unless you wish to make use of the new field.\n\n#### New field: supporter_covered_fee_in_default_currency\n\nA new field, `supporter_covered_fee_in_default_currency`, has been added to the `/v1/donations` response. It represents the equivalent of `supporter_covered_fee` in the organization’s default currency, providing better clarity for cross-currency donations.\n\nThe description of `supporter_covered_fee` was also updated to clarify that the amount is in the donation’s currency.\n\n### June 2025\n\n#### New concurrency limit for API requests\n\nWe’ve updated how rate limits work in the API. Instead of per-second or per-minute thresholds, the API now enforces a concurrency-based limit: each account can have up to 3 active requests at the same time. If this limit is exceeded, additional requests are rejected with a `429 Too Many Requests` error.\n\n#### Automatic updates for supporter contact data\n\nThe address, phone, and employer fields in the `/v1/supporters` and `/v1/supporters/{id}` responses now reflect the latest data submitted through donations and recurring plans.\n\nTo track changes, use the `supporter.updated`, `donation.updated`, and `recurring_plan.details_updated` events from the `/v1/events endpoint`.\n\n### May 2025\n\n#### Expanded data in recurring_plan object\n\nThe `recurring_plan` object in the `/v1/donations` response now includes `created_at`, `ended_at`, and `next_installment_at` fields. This helps reduce the need for separate API calls to `/v1/recurring_plans/{id}`.\n\n### April 2025\n\n#### New endpoint: Fundraisers\n\nWe’ve added a new `fundraisers` endpoint to the API. This endpoint lets you create, update, and retrieve supporter-created Fundraisers linked to your campaigns.\n","version":"1.0.0","contact":{}},"tags":[{"name":"Access links","description":"The Access link object represents link that grant supporter access to their Donor Portal."},{"name":"Campaigns","description":"The Campaign object represents a fundraising campaign. Every donation connects to a campaign. It includes settings such as enabled donation frequencies, designation mode, and status."},{"name":"Designation configurations","description":"The Designation configuration object represents a single designation configuration."},{"name":"Designation groups","description":"The Designation group object represents a container for related designations and other designation groups in your Fundraise Up account."},{"name":"Designations","description":"The Designation object represents a fund allocation for a donation, such as restricted or unrestricted giving."},{"name":"Donations","description":"The Donation object represents a single donation. It can be either a one-time donation or an installment as part of a recurring plan.\n\nYou can create donations, update donations and associated recurring plans sourced from the API, and read donations from your account."},{"name":"Events","description":"The Event object represents each entry in your Audit Log, allowing you to track changes in your account."},{"name":"Fundraisers","description":"The Fundraiser object represents a supporter-created fundraising page linked to a campaign. You can create Fundraisers through the API, update them, and retrieve Fundraisers from your account."},{"name":"Recurring plans","description":"The Recurring Plan object represents a single recurring donation plan. It includes supporter data, which is displayed as it appears on the Recurring Plan page in your Dashboard."},{"name":"Supporters","description":"The Supporter object represents a single supporter record. It includes data as displayed on the Supporter page in your Dashboard."},{"name":"Upgrade links","description":"The Upgrade link object represents a one-time link that directs a supporter to a page where they can start a recurring plan based on their original one-time donation."}],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"API key","type":"http"}},"schemas":{"AccountResponse":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Custom identifier for the organization, set as the Account code in the Fundraise Up account.","example":"Code-1"},"id":{"type":"string","description":"Unique identifier of the organization in the format A[A-Z]{7}.","example":"AXXXXXXX"},"name":{"type":"string","description":"The name of the organization as set in the Fundraise Up account.","example":"Example Account"}},"description":"Organization account information.","required":["id","code","name"]},"AddressResponse":{"type":"object","properties":{"city":{"type":"string","nullable":true,"description":"City name","example":"Nashville"},"country":{"type":"string","description":"[Two-letter country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), in lowercase.","example":"us"},"line1":{"type":"string","nullable":true,"description":"First address line.","example":"123 Example St."},"line2":{"type":"string","nullable":true,"description":"Second address line.","example":"Apt. 1"},"postal_code":{"type":"string","nullable":true,"description":"Postal or ZIP code.","example":"111111"},"region":{"type":"string","nullable":true,"description":"Can refer to a region, state, or province.","example":"Tennessee"}},"description":"Contains the mailing address details.","required":["country","city","postal_code","region","line1","line2"]},"AssignDesignationError":{"type":"object","properties":{"code":{"type":"string","enum":["designation_not_found","designation_already_attached","frequency_not_active"],"description":"Error code.","example":"designation_not_found"},"message":{"type":"string","description":"Error message.","example":"Designation not found."}},"description":"Describes the error that prevented assigning a single designation.","required":["code","message"]},"AssignDesignationItem":{"type":"object","properties":{"frequencies":{"type":"array","description":"Donation frequencies to assign this designation to.","example":["once","monthly"],"items":{"type":"string","enum":["once","daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"]}},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Contains the parameters for a single designation to assign to a campaign.","required":["id","frequencies"]},"AssignDesignationResultItem":{"type":"object","properties":{"error":{"nullable":true,"description":"Error object. `null` on success.","type":"object","allOf":[{"$ref":"#/components/schemas/AssignDesignationError"}]},"frequencies":{"type":"array","description":"Donation frequencies from the request.","example":["once","monthly"],"items":{"type":"string","enum":["once","daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"]}},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Provides the result of assigning a single designation within a batch request.","required":["id","frequencies","error"]},"AssignDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to assign.","type":"array","items":{"$ref":"#/components/schemas/AssignDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","example":true}},"description":"Contains the request parameters required for assigning designations to a campaign.","required":["items"]},"AssignDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/AssignDesignationResultItem"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"complete"}},"description":"Provides the per-item results of a batch designation assignment request.","required":["status","results"]},"BankAccountResponse":{"type":"object","properties":{"last4":{"type":"string","nullable":true,"description":"Last four digits of the bank account number.","example":"1234"}},"description":"Contains information about the bank account used for the payment.","required":["last4"]},"BatchAssignDesignationItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"A single designation to attach to the designation group.","required":["id"]},"BatchAssignDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to assign to the designation group.","type":"array","items":{"$ref":"#/components/schemas/BatchAssignDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designation groups only exist in live mode — set this to `true`.","example":true}},"description":"Contains the designations to attach to a designation group.","required":["items"]},"BatchAssignDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/BatchAssignResultItem"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"partial"}},"description":"Per-item result of attaching designations to a designation group.","required":["status","results"]},"BatchAssignResultItem":{"type":"object","properties":{"error":{"nullable":true,"description":"Error object. `null` on success.","type":"object","allOf":[{"$ref":"#/components/schemas/DesignationGroupAssignDesignationError"}]},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Result of attaching a single designation to the designation group.","required":["id","error"]},"BatchCreateDesignationItem":{"type":"object","properties":{"name":{"type":"string","description":"Designation name.","example":"My Designation"},"code":{"type":"string","nullable":true,"description":"Designation code.","example":"Code-1"}},"description":"Contains the parameters for a single designation in a batch create request.","required":["name"]},"BatchCreateDesignationResultItem":{"type":"object","properties":{"designation":{"nullable":true,"description":"Created designation object on success, `null` on failure.","type":"object","allOf":[{"$ref":"#/components/schemas/Designation"}]}},"description":"Provides the result of creating a single designation within a batch request.","required":["designation"]},"BatchCreateDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to create.","type":"array","items":{"$ref":"#/components/schemas/BatchCreateDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","example":true}},"description":"Contains the request parameters required for creating multiple designations.","required":["items"]},"BatchCreateDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/BatchCreateDesignationResultItem"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"complete"}},"description":"Provides the per-item results of a batch designation create request.","required":["status","results"]},"BatchDeleteDesignationError":{"type":"object","properties":{"code":{"type":"string","enum":["designation_not_found","designation_is_default","designation_in_use"],"description":"Error code.","example":"designation_not_found"},"message":{"type":"string","description":"Error message.","example":"Designation not found."}},"description":"Error details for a single designation in the batch delete operation.","required":["code","message"]},"BatchDeleteDesignationItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"A single designation to delete.","required":["id"]},"BatchDeleteDesignationResult":{"type":"object","properties":{"error":{"nullable":true,"description":"Error object. `null` on success.","type":"object","allOf":[{"$ref":"#/components/schemas/BatchDeleteDesignationError"}]},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"The result of a single designation in the batch delete operation.","required":["id","error"]},"BatchDeleteDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to delete.","type":"array","items":{"$ref":"#/components/schemas/BatchDeleteDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","example":true}},"description":"Contains the request parameters for deleting multiple designations.","required":["items"]},"BatchDeleteDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/BatchDeleteDesignationResult"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"complete"}},"description":"The result of a batch delete designations operation.","required":["status","results"]},"BatchUnassignDesignationItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"A single designation to detach from the designation group.","required":["id"]},"BatchUnassignDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to unassign from the designation group.","type":"array","items":{"$ref":"#/components/schemas/BatchUnassignDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designation groups only exist in live mode — set this to `true`.","example":true}},"description":"Contains the designations to detach from a designation group.","required":["items"]},"BatchUnassignDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/BatchUnassignResultItem"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"partial"}},"description":"Per-item result of detaching designations from a designation group.","required":["status","results"]},"BatchUnassignResultItem":{"type":"object","properties":{"error":{"nullable":true,"description":"Error object. `null` on success.","type":"object","allOf":[{"$ref":"#/components/schemas/DesignationGroupBatchItemError"}]},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Result of detaching a single designation from the designation group.","required":["id","error"]},"BatchUpdateDesignationItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"},"code":{"type":"string","nullable":true,"description":"Designation code.","example":"Code-1"},"name":{"type":"string","description":"Designation name.","example":"My Designation"}},"description":"Contains the parameters for a single designation in a batch update request.","required":["id"]},"BatchUpdateDesignationResultItem":{"type":"object","properties":{"designation":{"nullable":true,"description":"Updated designation object on success, `null` on failure.","type":"object","allOf":[{"$ref":"#/components/schemas/Designation"}]},"error":{"nullable":true,"description":"Error object. `null` on success.","type":"object","allOf":[{"$ref":"#/components/schemas/UpdateDesignationError"}]},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Provides the result of updating a single designation within a batch request.","required":["id","designation","error"]},"BatchUpdateDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to update.","type":"array","items":{"$ref":"#/components/schemas/BatchUpdateDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","example":true}},"description":"Contains the request parameters required for updating multiple designations. Only the provided fields are updated.","required":["items"]},"BatchUpdateDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/BatchUpdateDesignationResultItem"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"complete"}},"description":"Provides the per-item results of a batch designation update request.","required":["status","results"]},"BenefitNotShownResponse":{"type":"object","properties":{"state":{"type":"string","enum":["not_shown"],"description":"Defines if the benefit was displayed or selected."}},"description":"Benefit was not displayed to the supporter.","required":["state"]},"BenefitOption":{"type":"object","properties":{"code":{"type":"string","description":"Code of the selected option.","nullable":true,"example":"SIZE-M"},"name":{"type":"string","description":"Name of the selected option.","example":"Size"},"value":{"type":"string","description":"Value of the selected option.","example":"M"}},"description":"Benefit option selected by the supporter.","required":["name","value","code"]},"BenefitSelectedResponse":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Benefit code, as set in the Dashboard.","example":"TSHIRT-001"},"fair_market_value":{"type":"string","description":"Fair market value (FMV) at the time of payment. If an option was selected, this is the value of that option. Displayed in the organization’s default currency.","example":"25.99"},"fair_market_value_currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) of the fair market value (FMV) currency, in lowercase.","example":"usd"},"id":{"type":"string","description":"Unique identifier for the benefit.","example":"GXXXXXXX"},"name":{"type":"string","description":"Benefit name, as set in the Dashboard.","example":"T-shirt"},"option":{"nullable":true,"description":"Selected benefit option.","type":"object","allOf":[{"$ref":"#/components/schemas/BenefitOption"}]},"shipping":{"nullable":true,"description":"Shipping details for the benefit.","type":"object","allOf":[{"$ref":"#/components/schemas/BenefitShipping"}]},"state":{"type":"string","enum":["selected"],"description":"Defines if the benefit was displayed or selected."}},"description":"Benefit was selected by the supporter.","required":["id","state","code","name","fair_market_value","fair_market_value_currency","option","shipping"]},"BenefitShipping":{"type":"object","properties":{"address":{"description":"Contains the mailing address details.","allOf":[{"$ref":"#/components/schemas/AddressResponse"}]},"recipient_first_name":{"type":"string","description":"Recipient first name.","example":"Alex"},"recipient_last_name":{"type":"string","description":"Recipient last name.","example":"Garcia"}},"description":"Shipping data of the benefit.","required":["recipient_first_name","recipient_last_name","address"]},"BenefitShownNotSelectedResponse":{"type":"object","properties":{"state":{"type":"string","enum":["shown_not_selected"],"description":"Defines if the benefit was displayed or selected."}},"description":"Benefit was displayed to the supporter but not selected.","required":["state"]},"CampaignDesignation":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Designation code.","example":"GEN-01"},"frequencies":{"type":"array","description":"Donation frequencies accepted for this designation in this campaign.","example":["once","monthly"],"items":{"type":"string","enum":["once","daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"]}},"id":{"type":"string","description":"Unique designation identifier.","example":"EXXXXXXX"},"is_default":{"type":"boolean","description":"Indicates whether this is the pre-selected default designation in this campaign.","example":true},"name":{"type":"string","description":"Designation name.","example":"General Fund"},"type":{"type":"string","enum":["designation"],"description":"Item type discriminator.","example":"designation"}},"description":"A designation assigned to the campaign.","required":["type","id","name","code","frequencies","is_default"]},"CampaignDesignationGroup":{"type":"object","properties":{"children":{"type":"array","description":"Designations or nested designation groups.","items":{"oneOf":[{"$ref":"#/components/schemas/CampaignDesignation"},{"$ref":"#/components/schemas/CampaignDesignationGroup"}],"discriminator":{"propertyName":"type","mapping":{"designation":"#/components/schemas/CampaignDesignation","designation_group":"#/components/schemas/CampaignDesignationGroup"}}}},"id":{"type":"string","description":"Unique designation group identifier.","example":"LXXXXXXX"},"name":{"type":"string","description":"Designation group name.","example":"Education Programs"},"type":{"type":"string","enum":["designation_group"],"description":"Item type discriminator.","example":"designation_group"}},"description":"A designation group assigned to the campaign.","required":["type","id","name","children"]},"CampaignDetailResponse":{"type":"object","properties":{"account":{"description":"Organization account information.","allOf":[{"$ref":"#/components/schemas/AccountResponse"}]},"campaign_page_url":{"type":"string","nullable":true,"description":"Public URL of the campaign page.","example":"https://org.fundraiseup.com/page/FUNXXXXXXXX"},"code":{"type":"string","nullable":true,"description":"Campaign code, as set in the Dashboard.","example":"Code-1"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"},"designation_mode":{"type":"string","enum":["select","assign"],"description":"Designation selection mode.","example":"select"},"designations":{"type":"array","description":"Ordered list of designations and designation groups assigned to this campaign. Polymorphic array discriminated by `type` field.","items":{"oneOf":[{"$ref":"#/components/schemas/CampaignDesignation"},{"$ref":"#/components/schemas/CampaignDesignationGroup"}],"discriminator":{"propertyName":"type","mapping":{"designation":"#/components/schemas/CampaignDesignation","designation_group":"#/components/schemas/CampaignDesignationGroup"}}}},"end_date":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating when the campaign ends in UTC. `null` if no end date is set.","example":"2026-12-31T00:00:00.000Z"},"frequencies":{"description":"Active donation frequencies for the campaign.","type":"array","items":{"$ref":"#/components/schemas/CampaignFrequencyResponse"}},"id":{"type":"string","description":"Unique campaign identifier.","example":"FUNXXXXXXXX"},"name":{"type":"string","description":"Campaign name.","example":"My Campaign"},"status":{"type":"string","enum":["active","disabled","auto_archive"],"description":"Current status of the campaign.","example":"active"},"tags":{"description":"Campaign tags, as set in the Dashboard.","example":["annual","general"],"type":"array","items":{"type":"string"}}},"description":"Contains campaign record with full details.","required":["id","account","code","name","status","end_date","tags","currency","frequencies","designation_mode","designations","campaign_page_url"]},"CampaignFrequencyResponse":{"type":"object","properties":{"minimum_amount":{"type":"string","description":"Minimum donation amount in the campaign currency.","example":"5.00"},"type":{"type":"string","enum":["once","daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"],"description":"Frequency.","example":"monthly"}},"description":"Frequency configuration for the campaign.","required":["type","minimum_amount"]},"CampaignResponse":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Campaign code, as set in the Dashboard.","example":"Code-1"},"id":{"type":"string","description":"Unique campaign identifier.","example":"FUNXXXXXXXX"},"name":{"type":"string","description":"Campaign name.","example":"My Campaign"}},"description":"Provides details about the campaign.","required":["id","code","name"]},"CampaignsResponse":{"type":"object","properties":{"data":{"description":"An array containing the campaign records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/CampaignDetailResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for campaigns.","required":["data","has_more"]},"ChargePaymentResponse":{"type":"object","properties":{"bank_account":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/BankAccountResponse"}]},"credit_card":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/CreditCardResponse"}]},"email":{"type":"string","nullable":true,"description":"Email associated with the payment method.","example":"example@example.com"},"error_message":{"type":"string","nullable":true,"description":"Most recent payment error message. Returned only if the status is `failed` or `retrying`. Otherwise, returns `null`.","example":"Something went wrong"},"id":{"type":"string","nullable":true,"description":"For PayPal: Capture ID.\n\nFor Stripe: Charge ID or Payment Intent ID.\n\nFor other processors: payment ID.","example":"ch_1I9nHHHUtU5Pnu8b93DuxyzE"},"method":{"type":"string","enum":["credit_card","apple_pay","google_pay","click_to_pay","ach","paypal","venmo","becs_direct_debit","bacs_direct_debit","pad","sepa_direct_debit","ideal","crypto","stock","link","twint","eps"],"description":"Payment method, in lowercase underscore. `stock` is deprecated but may still appear in retrieved data.\n\nThe value of `us_bank_account` maps to `ach`. The value of `plaid` also maps to `ach`.","example":"paypal"},"processor":{"type":"string","enum":["stripe","paypal","gemini","manual_brokerage","coinbase_commerce"],"description":"Payment processor, in lowercase. `coinbase_commerce` is deprecated but may still appear in retrieved data.","example":"stripe"}},"description":"Provides details about the payment processing.","required":["id","email","error_message","method","processor","credit_card","bank_account","daf_tracking_id","daf_external_id"]},"ChildDesignation":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Designation code.","example":"SCH-01"},"id":{"type":"string","description":"Unique designation identifier.","example":"EXXXXXXX"},"name":{"type":"string","description":"Designation name.","example":"Scholarship Fund"},"type":{"type":"string","enum":["designation"],"description":"Item type discriminator. Always `designation`.","example":"designation"}},"description":"A designation that belongs to a designation group.","required":["type","id","name","code"]},"ChildGroup":{"type":"object","properties":{"children":{"type":"array","description":"Child items: designations or nested designation groups (up to 3 levels deep).","items":{"oneOf":[{"$ref":"#/components/schemas/ChildDesignation"},{"$ref":"#/components/schemas/ChildGroup"}],"discriminator":{"propertyName":"type","mapping":{"designation":"#/components/schemas/ChildDesignation","designation_group":"#/components/schemas/ChildGroup"}}}},"id":{"type":"string","description":"Unique designation group identifier.","example":"LXXXXXXX"},"name":{"type":"string","description":"Designation group name.","example":"Regional Programs"},"type":{"type":"string","enum":["designation_group"],"description":"Item type discriminator. Always `designation_group`.","example":"designation_group"}},"description":"A designation group nested inside another designation group.","required":["type","id","name","children"]},"CommunicationConsentResponse":{"type":"object","properties":{"customized":{"$ref":"#/components/schemas/CustomizedCommunicationConsentResponse"},"general":{"type":"string","description":"Indicates overall communication consent.\n\n`opted_in` if the supporter agreed to receive communications.\n\n`opted_out` if the supporter declined communications.\n\n`not_submitted` if no consent data is available.","enum":["not_submitted","opted_in","opted_out"],"example":"opted_in"}},"description":"Stores the supporter's [communication consent type](https://fundraiseup.com/docs/marketing-consent/) associated with a donation."},"CreateDesignationRequest":{"type":"object","properties":{"name":{"type":"string","description":"Designation name.","example":"My Designation"},"code":{"type":"string","nullable":true,"description":"Designation code.","example":"Code-1"},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","example":true}},"description":"Contains the request parameters required for creating a designation.","required":["name"]},"CreateDonationRequest":{"type":"object","properties":{"amount":{"type":"string","description":"Donation amount in the selected currency. Must be a decimal string in the format `{NNN}[.nn]`. Examples: 9.99 (for USD), 200 (for JPY).\n\nThe amount must be greater than $1 or its equivalent in other currencies. If a minimum amount is set for the campaign, the donation must meet or exceed that value.","example":"99.99"},"campaign":{"type":"string","description":"Campaign ID. Must belong to the account that owns the API key, otherwise an error will occur. Must be active and accept money-based donations, otherwise an error will occur.","example":"FUNXXXXXXXX"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sle","sos","srd","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"},"designation":{"type":"string","nullable":false,"description":"The ID of the fund, program, or initiative the donation goes to. You can use the ID of any designation created in your account, whether or not it is linked to a campaign.\nOnly one designation can be set for a single donation. To create multiple donations with different designations, make separate API calls.\nYou can find the ID in the [Designations section of the Dashboard](https://dashboard.fundraiseup.com/designations).","example":"EXXXXXXX"},"payment_method":{"$ref":"#/components/schemas/PaymentMethodPostRequest"},"supporter":{"$ref":"#/components/schemas/SupporterPostRequest"},"comment":{"type":"string","nullable":true,"description":"Optional comment, maximum 256 characters."},"custom_fields":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldPostRequest"}},"fee_amount":{"type":"string","description":"Optional amount of fees covered by the supporter. Must be a positive decimal string in the format `{NNN}[.nn]`. Use `GET /v1/donations/fee` to retrieve the calculated fee to pass here.","example":"5.00"},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","example":true},"questions":{"type":"array","items":{"$ref":"#/components/schemas/QuestionPostRequest"}},"recurring_plan":{"$ref":"#/components/schemas/RecurringPostRequest"},"skip_thank_you_email":{"type":"boolean","description":"`false` (default) will send a donation receipt email for the first installment.\n\n`true` will prevent the donation receipt email from being sent for the first installment.\n\nAvailable for recurring plans only.\n\nTo use this parameter, you must also include the `email` parameter.\n\nSending this parameter for a one-time donation will return an error."}},"description":"Contains the request parameters required for creating a donation.","required":["campaign","payment_method","currency","amount","supporter","designation"]},"CreateFundraiserRequest":{"type":"object","properties":{"campaign":{"type":"string","description":"Campaign ID. Must belong to the account that owns the API key, otherwise an error will occur. The campaign must be active and accept money-based donations, otherwise an error will occur.","example":"FUNXXXXXXXX"},"description":{"type":"string","description":"Description of the Fundraiser","example":"I'm raising money to help protect penguins and their habitat. Join me!"},"name":{"type":"string","description":"The title of the Fundraiser, used as its main heading.","example":"Run for hope"},"code":{"type":"string","description":"Identifier of up to 150 characters. Does not need to be unique.","example":"Winter appeal"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sle","sos","srd","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"},"designation":{"type":"string","description":"Designation ID.","example":"EXXXXXXX"},"goal":{"$ref":"#/components/schemas/GoalPostRequest"},"image":{"$ref":"#/components/schemas/FundraiserImageRequest"},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Fundraisers only exist in live mode — set this to `true`.","example":true},"slug":{"type":"string","description":"Unique identifier for the Fundraiser within the account or subaccount. The slug is not shared across accounts or subaccounts and must be unique within each. Can include up to 25 letters, numbers, underscores, or hyphens.","example":"5003-000000D8cu_IQAA"},"status":{"type":"string","enum":["active","paused"]}},"description":"Contains the request parameters required for creating a Fundraiser.","required":["campaign","name","description"]},"CreatedQuery":{"type":"object","properties":{"created[gt]":{"type":"string","format":"date-time","description":"Minimum creation date (exclusive). Returns records after this timestamp.","example":"2025-01-01T12:30:00+02:00"},"created[gte]":{"type":"string","format":"date-time","description":"Minimum creation date (inclusive). Returns records from and after this timestamp.","example":"2025-01-01T12:30:00+02:00"},"created[lt]":{"type":"string","format":"date-time","description":"Maximum creation date (exclusive). Returns records before this timestamp.","example":"2025-01-01T12:30:00+02:00"},"created[lte]":{"type":"string","format":"date-time","description":"Maximum creation date (inclusive). Returns records up to and including this timestamp.","example":"2025-01-01T12:30:00+02:00"}},"description":"Filters results by the record creation date. Accepts a single date or a date range in RFC 3339 format."},"CreditCardResponse":{"type":"object","properties":{"exp_month":{"type":"string","nullable":true,"description":"Two-digit expiration month (`01` to `12`).","example":"12"},"exp_year":{"type":"string","nullable":true,"description":"Four-digit expiration year.","example":"2023"},"last4":{"type":"string","nullable":true,"description":"Last four digits of the credit card number.","example":"1234"},"type":{"type":"string","nullable":true,"description":"Credit card type. Possible values: `Visa`, `MasterCard`, `American Express`, `Diners Club`, `Discover`, `JCB`, `UnionPay`, `Cartes Bancaires`, `Unknown`.","example":"Visa"}},"description":"Contains information about the credit card used for the payment.","required":["last4","exp_month","exp_year","type"]},"CustomFieldPostRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the custom field.","example":"Field1"},"value":{"type":"string","description":"Value of the custom field.","example":"Value1"}},"description":"Represents custom fields populated according to the campaign settings.\n\nMissing fields will be populated with default non-blank values from the campaign settings.","required":["name","value"]},"CustomFieldPutRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the custom field.","example":"Field1"},"value":{"type":"string","description":"Value of the custom field.","example":"Value1"}},"description":"Represents custom fields populated according to the campaign settings.\n\nMissing fields will be populated with default non-blank values from the campaign settings.","required":["name","value"]},"CustomFieldResponse":{"type":"object","properties":{"name":{"type":"string","description":"Name of the custom field.","example":"Field1"},"value":{"type":"string","description":"Value of the custom field.","example":"Value1"}},"description":"Represents custom fields populated according to the campaign settings.\n\nMissing fields will be populated with default non-blank values from the campaign settings.","required":["name","value"]},"CustomizedCommunicationConsentResponse":{"type":"object","properties":{"email":{"type":"string","description":"Indicates email communication consent.\n\n`opted_in` if the supporter agreed to receive emails.\n\n`opted_out` if the supporter declined email communication.\n\n`not_submitted` if no email consent data is available.","enum":["not_submitted","opted_in","opted_out"],"example":"opted_in"},"phone_calls":{"type":"string","description":"Indicates phone call communication consent.\n\n`opted_in` if the supporter agreed to receive phone calls.\n\n`opted_out` if the supporter declined to receive phone calls.\n\n`not_submitted` if no phone call consent data is available.","enum":["not_submitted","opted_in","opted_out"],"example":"opted_out"},"postal_mail":{"type":"string","description":"Indicates postal mail communication consent.\n\n`opted_in` if the supporter agreed to receive postal mail.\n\n`opted_out` if the supporter declined to receive postal mail.\n\n`not_submitted` if no postal mail consent data is available.","enum":["not_submitted","opted_in","opted_out"],"example":"opted_in"},"sms":{"type":"string","description":"Indicates SMS communication consent.\n\n`opted_in` if the supporter agreed to receive SMS messages.\n\n`opted_out` if the supporter declined SMS communication.\n\n`not_submitted` if no SMS consent data is available.","enum":["not_submitted","opted_in","opted_out"],"example":"opted_in"},"social_media":{"type":"string","description":"Indicates social media communication consent.\n\n`opted_in` if the supporter agreed to receive messages through social media.\n\n`opted_out` if the supporter declined social media communication.\n\n`not_submitted` if no social media consent data is available.","enum":["not_submitted","opted_in","opted_out"],"example":"opted_out"}},"description":"Specifies consent values for individual communication channels.","required":["email","phone_calls","sms","postal_mail","social_media"]},"DeletedDesignation":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the deleted designation.","example":"EXXXXXXX"}},"description":"The result of a designation deletion.","required":["id"]},"Designation":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AccountResponse"},"code":{"type":"string","nullable":true,"description":"Designation code.","example":"Code-1"},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the designation was created in UTC.","example":"2024-01-01T00:00:00.000Z"},"id":{"type":"string","description":"Unique designation identifier.","example":"EXXXXXXX"},"is_default":{"type":"boolean","description":"Indicates whether this is the default designation for the account.","example":true},"name":{"type":"string","nullable":true,"description":"Designation name.","example":"My Designation"},"updated_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the designation was last updated in UTC.","example":"2024-01-31T00:00:00.000Z"}},"description":"A designation represents a fund allocation category for donations.","required":["id","account","name","code","is_default","created_at","updated_at"]},"DesignationConfigurationResponse":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AccountResponse"},"campaign":{"$ref":"#/components/schemas/CampaignResponse"},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the configuration was created in UTC.","example":"2024-12-20T00:00:00.000Z"},"designation":{"$ref":"#/components/schemas/DesignationResponse"},"id":{"type":"string","description":"Unique identifier for the designation configuration.","example":"MXXXXXXX"},"repeat":{"type":"string","enum":["recurring","one-time","all"],"description":"Indicates payment types accepted for this designation-campaign combination.","example":"all"}},"description":"Contains designation configuration record with full details.","required":["id","created_at","repeat","frequencies","campaign","designation","account"]},"DesignationConfigurationsResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/DesignationConfigurationResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for designation configurations.","required":["data","has_more"]},"DesignationGroupAssignDesignationError":{"type":"object","properties":{"code":{"type":"string","enum":["designation_not_found","designation_already_attached"],"description":"Error code.","example":"designation_not_found"},"message":{"type":"string","description":"Error message.","example":"Designation not found."}},"description":"Error describing why a single batch item could not be processed.","required":["code","message"]},"DesignationGroupBatchItemError":{"type":"object","properties":{"code":{"type":"string","enum":["designation_not_found","designation_not_attached"],"description":"Error code.","example":"designation_not_attached"},"message":{"type":"string","description":"Error message.","example":"Designation is not attached to this group."}},"description":"Error describing why a single batch item could not be processed.","required":["code","message"]},"DesignationGroupResponse":{"type":"object","properties":{"children":{"type":"array","description":"Designations or nested designation groups.","items":{"oneOf":[{"$ref":"#/components/schemas/ChildDesignation"},{"$ref":"#/components/schemas/ChildGroup"}],"discriminator":{"propertyName":"type","mapping":{"designation":"#/components/schemas/ChildDesignation","designation_group":"#/components/schemas/ChildGroup"}}}},"id":{"type":"string","description":"Unique identifier of the designation group.","example":"LXXXXXXX"},"name":{"type":"string","description":"Designation group name.","example":"Education Programs"}},"description":"Contains designation group record with full details.","required":["id","name","children"]},"DesignationGroupsResponse":{"type":"object","properties":{"data":{"description":"An array containing the designation group records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/DesignationGroupResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for designation groups.","required":["data","has_more"]},"DesignationResponse":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Designation code.","example":"Code-1"},"id":{"type":"string","description":"Unique designation identifier.","example":"EXXXXXXX"},"name":{"type":"string","nullable":true,"description":"Designation name.","example":"My Designation"}},"description":"Contains information about the designation.","required":["id","code","name"]},"DesignationsResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/Designation"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for designations.","required":["data","has_more"]},"DeviceResponse":{"type":"object","properties":{"browser":{"type":"string","nullable":true,"description":"Browser name. Can be `null` if not detected.","example":"Chrome"},"ip":{"$ref":"#/components/schemas/IpResponse"},"os":{"type":"string","nullable":true,"description":"Operating system name. Can be `null` if not detected.","example":"MacOS"},"type":{"type":"string","nullable":true,"enum":["desktop","mobile","tablet"],"description":"Device type. Can be `null` if not detected.","example":"desktop"},"user_agent":{"type":"string","nullable":true,"description":"Raw user agent string. Can be `null` if not provided.","example":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"}},"description":"Provides information about the device being used.","required":["browser","os","type","user_agent","ip"]},"DonationRecurringPlanResponse":{"type":"object","properties":{"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the recurring plan was created in UTC.","example":"2024-12-20T00:00:00.000Z"},"ended_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating when the recurring plan ended in UTC.","example":"2024-12-20T00:00:00.000Z"},"frequency":{"type":"string","enum":["daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"],"description":"Donation frequency.","example":"monthly"},"id":{"type":"string","description":"Unique identifier for the recurring donation plan.","example":"RXXXXXXX"},"next_installment_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating the next scheduled donation installment in UTC.","example":"2024-12-20T00:00:00.000Z"},"status":{"type":"string","enum":["active","scheduled","paused","retrying","completed","failed","canceled"],"description":"Current status of the recurring plan.","example":"active"}},"description":"Defines the attributes of a recurring donation plan.","required":["id","status","frequency","created_at","ended_at","next_installment_at"]},"DonationResponse":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AccountResponse"},"amount":{"type":"string","description":"Donation amount in the transaction currency.","example":"99.99"},"amount_before_fees_covered":{"type":"string","description":"Amount before fees were covered by supporter.","example":"99.99"},"amount_before_fees_covered_in_default_currency":{"type":"string","description":"Donation amount before any fees were covered by the supporter. Displayed in the organization's default currency at the time of donation.","example":"59.99"},"amount_in_default_currency":{"type":"string","description":"Donation amount converted to the organization's default currency.","example":"59.99"},"anonymous":{"type":"boolean","description":"Indicates if the donation was made anonymously (`true`) or not (`false`).","example":false},"benefit":{"oneOf":[{"title":"BenefitNotShownResponse","allOf":[{"$ref":"#/components/schemas/BenefitNotShownResponse"}],"type":"object","description":"Represents the benefit associated with a donation."},{"title":"BenefitShownNotSelectedResponse","allOf":[{"$ref":"#/components/schemas/BenefitShownNotSelectedResponse"}],"type":"object","description":"Represents the benefit associated with a donation."},{"title":"BenefitSelectedResponse","allOf":[{"$ref":"#/components/schemas/BenefitSelectedResponse"}],"type":"object","description":"Represents the benefit associated with a donation."}],"discriminator":{"propertyName":"state","mapping":{"not_shown":"#/components/schemas/BenefitNotShownResponse","shown_not_selected":"#/components/schemas/BenefitShownNotSelectedResponse","selected":"#/components/schemas/BenefitSelectedResponse"}}},"campaign":{"$ref":"#/components/schemas/CampaignResponse"},"comment":{"type":"string","nullable":true,"description":"Optional comment provided by the supporter at the time of donation.","example":"Comment example."},"consent":{"$ref":"#/components/schemas/CommunicationConsentResponse"},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the donation was created in UTC.","example":"2024-12-20T00:00:00.000Z"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"},"custom_fields":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldResponse"}},"designation":{"$ref":"#/components/schemas/DesignationResponse"},"device":{"$ref":"#/components/schemas/DeviceResponse"},"element":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ElementResponse"}]},"failed_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating when the donation failed in UTC.","example":"2024-12-20T00:00:00.000Z"},"fundraiser":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/FundraiserResponse"}]},"gift_aid":{"$ref":"#/components/schemas/GiftAidResponse"},"id":{"type":"string","description":"Unique identifier for the donation.","example":"DXXXXXXX"},"installment":{"type":"string","nullable":true,"description":"Indicates the installment number for recurring donations. Returns `null` for one-time donations.","example":"3"},"livemode":{"type":"boolean","description":"Test mode indicator. `true` for live mode donations, `false` for test mode donations.","example":true},"on_behalf_of":{"type":"string","nullable":true,"description":"Name of the organization the donation was made on behalf of.","example":"Example Inc."},"payment":{"$ref":"#/components/schemas/ChargePaymentResponse"},"payout":{"$ref":"#/components/schemas/PayoutResponse"},"platform_fee":{"$ref":"#/components/schemas/PlatformFeeResponse"},"processing_fee":{"$ref":"#/components/schemas/ProcessingFeeResponse"},"questions":{"type":"array","items":{"$ref":"#/components/schemas/QuestionResponse"}},"receipt_id":{"type":"string","nullable":true,"description":"Unique identifier for the donation receipt."},"recurring_plan":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/DonationRecurringPlanResponse"}]},"refunded_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating when the donation was refunded in UTC.","example":"2024-12-20T00:00:00.000Z"},"source":{"type":"string","enum":["website","campaign_page","virtual_terminal","donor_portal","dashboard","recurring_migration","api","gift_cart","tap2pay"],"description":"Indicates the source of the donation.","example":"website"},"source_of_funds":{"type":"string","nullable":true,"enum":["own_money","on_behalf_of","fundraising_or_collection"],"description":"Indicates the source of funds for the donation in the context of Gift Aid eligibility."},"status":{"type":"string","enum":["succeeded","failed","refunded","pending","retrying","scheduled"],"description":"Current status of the donation.","example":"succeeded"},"succeeded_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating when the donation succeeded in UTC.","example":"2024-12-20T00:00:00.000Z"},"supporter":{"$ref":"#/components/schemas/EmbeddedSupporterResponse"},"supporter_covered_fee":{"type":"string","description":"Amount of fees covered by the supporter.","example":"99.9"},"supporter_covered_fee_in_default_currency":{"type":"string","description":"Amount of fees covered by the supporter and converted to the organization's default currency.","example":"99.9"},"tribute":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/TributeResponse"}]},"url":{"type":"string","nullable":true,"description":"URL from which the donation was made.","example":"https://example.com/DXXXXXXX"},"utm":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/UtmResponse"}]},"one_time_to_recurring_upgrade_link":{"type":"string","nullable":true,"description":"A permanent, pre-authenticated link that the supporter can use to upgrade this donation to a recurring plan. Returned only when the request includes include=upgrade_link and the donation is eligible."}},"description":"Contains donation record with all donation details.","required":["id","created_at","comment","account","anonymous","livemode","status","amount","amount_in_default_currency","amount_before_fees_covered","amount_before_fees_covered_in_default_currency","campaign","designation","element","currency","custom_fields","installment","recurring_plan","refunded_at","succeeded_at","failed_at","fundraiser","on_behalf_of","platform_fee","processing_fee","supporter","supporter_covered_fee","supporter_covered_fee_in_default_currency","source","tribute","device","utm","url","payment","payout","receipt_id","questions","gift_aid","consent","benefit","source_of_funds","grouped_donation_id"]},"DonationsResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/DonationResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for donations.","required":["data","has_more"]},"DonorAuthLinkResponse":{"type":"object","properties":{"url":{"type":"string","description":"Authentication link for the Donor Portal. Must be a valid URL starting with `http://` or `https://`. If invalid, a `400 Bad Request error` will occur.\n\nThis URL appears as the \"← Back to home\" link in the Donor Portal. The supporter can click this link or the portal logo to return to your organization's portal.\n\nIf not provided, the \"← Back to home\" button will not appear and the portal logo will not be clickable.","example":"https://example.demo-donorsupport.com/-/XXXXXXXX?member=YYYYYYYY"}},"description":"Contains the response for a generated Donor Portal authentication link.","required":["url"]},"ElementResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique element identifier.","example":"XXXXXXXX"},"name":{"type":"string","description":"Name of the element.","example":"My Element"},"type":{"type":"string","description":"Type of element used for the donation.","example":"donationForm","enum":["reminder","donateButton","stickyButton","imageCard","textLink","donationForm","simpleForm","goalMeter","statCounter","impactSlider","donationLevels","buttonGroup","floatingButton","messageBar","topSupporters","topLocations","socialProof","qrCode","recentDonations","p2pButton","p2pLink","p2pFundraisingButton","p2pFundraisingLink","topFundraisers","donorMap","lightbox","zakatCalculator","p2pFundraiserGallery","fundraisingPageLink","fundraisingPageInviteLink","link","direct","debugPanel","testModePanel","aiAssistant","splitTesting","jsApi"]}},"description":"Represents the element through which the donation was made.","required":["id","type","name"]},"EmbeddedSupporterResponse":{"type":"object","properties":{"address":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/AddressResponse"}]},"email":{"type":"string","nullable":true,"description":"Supporter's email address.","example":"example@example.com"},"employer":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/EmployerResponse"}]},"employment_status":{"type":"string","nullable":true,"description":"The supporter's employment status at the time of the donation. Possible values: `employed`, `unemployed`, `retired`. Returns `null` if not collected. Only collected for US political organizations.","enum":["employed","unemployed","retired"],"example":"employed"},"first_name":{"type":"string","nullable":true,"description":"Supporter's first name.","example":"Alex"},"id":{"type":"string","description":"Unique supporter identifier.","example":"SXXXXXXXX"},"language":{"type":"string","enum":["en-US","en-GB","en-CA","fr-CA","fr-FR","es","nl","no","de","de-x-informal","fi-FI","ar-001","sv","it","pt-PT","pt-BR","zh-CN","zh-TW","ja","ko","hu","da","ru-RU","es-US","pl-PL"],"description":"Supporter's locale.","example":"en-CA"},"last_name":{"type":"string","nullable":true,"description":"Supporter's last name.","example":"Garcia"},"occupation":{"type":"string","nullable":true,"description":"The supporter's occupation at the time of the donation. Returns `null` if not collected or if employment status is `unemployed` or `retired`. Max 200 characters.","example":"Software Engineer"},"phone":{"type":"string","nullable":true,"description":"Supporter's phone number.","example":"+1 (111) 111111"},"title":{"type":"string","nullable":true,"description":"Supporter's title. Returns `null` if empty.","enum":["m","mme","mlle","autre","mx","mr","mrs","miss","ms","sir","dame","lord","lady","dr","prof","rev","fr","dcn","br","sr","frau","herr","frau dr.","herr dr.","frau prof.","herr prof."],"example":"mr"}},"description":"Represents the supporter data as displayed on the Donation page in your Dashboard.","required":["id","email","first_name","last_name","title","phone","employer","employment_status","occupation","address","language"]},"EmployerResponse":{"type":"object","properties":{"name":{"type":"string","description":"Employer's name.","example":"Fundraise Up Inc."}},"description":"Represents the employer information.","required":["name"]},"EventPaymentItem":{"type":"object","properties":{}},"EventResponse":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AccountResponse"},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the event was created in UTC.","example":"2024-12-20T00:00:00.000Z"},"donation":{"type":"string","nullable":true,"deprecated":true,"description":"Deprecated. This field is kept for backward compatibility and will be removed after 2026-10-30. Use the payments array instead. See the migration guide.","example":"DXXXXXXX"},"id":{"type":"string","description":"Unique identifier for the event.","example":"66911bb67616b5001045cccc"},"livemode":{"type":"boolean","description":"Test mode indicator. `true` for live mode donations, `false` for test mode donations.","example":true},"payments":{"description":"An array of donations and recurring plans associated with the event.  Example: [{ \"donation\": \"DXXXXXXX\", recurring_plan: \"RXXXXXXX\" }].\"","nullable":false,"example":[{"donation":"DXXXXXXX","recurring_plan":"RXXXXXXX"}],"type":"array","items":{"$ref":"#/components/schemas/EventPaymentItem"}},"recurring_plan":{"type":"string","nullable":true,"deprecated":true,"description":"Deprecated. This field is kept for backward compatibility and will be removed after 2026-10-30. Use the payments array instead. See the migration guide.","example":"RXXXXXXX"},"supporter":{"type":"string","nullable":true,"description":"Unique ID of the related supporter. Example events: `donation.personal_data_deleted`.","example":"SWXXXXXX"},"type":{"type":"string","enum":["donation.created","donation.success","donation.pending","donation.failed","donation.updated","donation.refunded","donation.success_early_fraud_warning","donation.pending_ach_verification_required","donation.pending_incomplete","donation.pending_scheduled","donation.pending_waiting_for_transfer","donation.pending_paypal_action_required","donation.pending_retrying","donation.personal_data_deleted","donation_benefit.updated","donation.success_dispute_created","donation.success_dispute_lost","donation.success_dispute_won","donation.success_dispute_in_review","recurring_plan.activated","recurring_plan.scheduled","recurring_plan.failed","recurring_plan.completed","recurring_plan.canceled","recurring_plan.terms_updated","recurring_plan.paused","recurring_plan.retrying","recurring_plan.details_updated","recurring_plan.personal_data_deleted","transaction_attempt.pending","transaction_attempt.success","transaction_attempt.failed","tribute.created","tribute.updated","tribute.shared","tribute.personal_data_deleted","supporter.created","supporter.personal_data_deleted","supporter.updated"],"description":"Type of event that occurred in the system. Include donation events (for example, `donation.created`), recurring plan events (for example, `recurring_plan.activated`), transaction attempt events (for example, `transaction_attempt.success`), tribute events (for example, `tribute.created`), and supporter events (for example, `supporter.created`).\n\n[Event types explained](https://fundraiseup.com/support/api-event-types/)","example":"donation.created"}},"description":"Provides detailed information about a specific event that occurred in the system, such as donation creation or recurring plan updates.","required":["id","created_at","account","livemode","type","donation","recurring_plan","supporter","payments"]},"EventsResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/EventResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Contains the response for a list of events, including paginated event data and metadata indicating if more records are available.","required":["data","has_more"]},"FundraiserGoalResponse":{"type":"object","properties":{"amount":{"type":"string","description":"Target amount for the fundraiser."},"end_date":{"type":"string","description":"End date for the fundraiser goal."}},"description":"Goal details for the Fundraiser, if set.","required":["amount","end_date"]},"FundraiserImageRequest":{"type":"object","properties":{"upload_url":{"type":"string","description":"The URL of the fundraiser's image. The image must be accessible with no authentication and validation.","example":"https://example.com/image.jpg"}},"description":"Image of the Fundraiser.","required":["upload_url"]},"FundraiserImageResponse":{"type":"object","properties":{"preview_url":{"type":"string","description":"URL for the preview image."}},"description":"Image details for the Fundraiser, if available.","required":["preview_url"]},"FundraiserResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the fundraiser.","example":"NXXXXXXX"},"name":{"type":"string","description":"The title of the Fundraiser, used as its main heading.","example":"Run for hope"}},"description":"Contains information about the fundraiser.","required":["id","name"]},"FundraisersResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/GetFundraiserResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for fundraisers.","required":["data","has_more"]},"GetDonationFeeResponse":{"type":"object","properties":{"amount":{"type":"string","example":"99.99","description":"Donation amount in the selected currency."},"amount_with_fee":{"type":"string","example":"103.19","description":"Total amount including the fee in the selected currency."},"fee_amount":{"type":"string","example":"3.20","description":"Processing fee amount in the selected currency.  Pass this value as fee_amount in POST /v1/donations together with amount to record the fee as supporter-covered."}},"required":["amount","fee_amount","amount_with_fee"]},"GetDonorAuthLinkByCustomerKeyBody":{"type":"object","properties":{"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","example":true}}},"GetDonorAuthLinkBySubscriptionKeyBody":{"type":"object","properties":{"back_url":{"description":"Back URL","allOf":[{"$ref":"#/components/schemas/URL"}]},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","example":true}}},"GetFundraiserResponse":{"type":"object","properties":{"campaign":{"$ref":"#/components/schemas/CampaignResponse"},"code":{"type":"string","nullable":true,"description":"Code for the fundraiser, if applicable."},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the fundraiser was created in UTC.","example":"2024-12-20T00:00:00.000Z"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sle","sos","srd","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"},"description":{"type":"string","description":"Description of the Fundraiser."},"designation":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/DesignationResponse"}]},"goal":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/FundraiserGoalResponse"}]},"id":{"type":"string","description":"Unique identifier for the Fundraiser."},"image":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/FundraiserImageResponse"}]},"name":{"type":"string","description":"The title of the Fundraiser, used as its main heading.","example":"Run for hope"},"slug":{"type":"string","nullable":true,"description":"Slug for the Fundraiser, if set."},"status":{"type":"string","enum":["active","paused"],"description":"Current status of the Fundraiser."}},"description":"Represents a Fundraiser entry in the API.","required":["id","slug","status","campaign","name","description","currency","code","goal","designation","image","created_at"]},"GiftAidResponse":{"type":"object","properties":{"claimed":{"type":"boolean","description":"Indicates whether the Gift Aid was claimed (`true`) or not (`false`).","example":true,"nullable":true},"legal_text":{"type":"string","description":"Legal text associated with Gift Aid.","example":"I am a UK taxpayer and want to claim Gift Aid."}},"description":"Provides details about Gift Aid, available only for organizations based in Great Britain.","required":["claimed","legal_text"]},"GoalPostRequest":{"type":"object","properties":{"amount":{"type":"string","description":"Donation amount in the selected currency. Must be a decimal string in the format `{NNN}[.nn]`. Examples: 9.99 (for USD), 200 (for JPY).\n\nThe amount must be greater than $10 or its equivalent in other currencies.","example":"99.99"},"end_date":{"type":"string","description":"Date when the goal ends. Must be in YYYY-MM-DD format and set to a future date.","example":"2025-01-01"}},"description":"Goal for the Fundraiser.","required":["amount","end_date"]},"IpResponse":{"type":"object","properties":{"address":{"type":"string","nullable":true,"description":"IP address.","example":"111.111.111.111"},"city":{"type":"string","nullable":true,"description":"City name.","example":"Nashville"},"country_name":{"type":"string","nullable":true,"description":"Full country name.","example":"United States"},"region":{"type":"string","nullable":true,"description":"Region name.","example":"Tennessee"}},"description":"Contains details about the IP address from which the donation was made.","required":["address","country_name","region","city"]},"PaymentMethodPostRequest":{"type":"object","properties":{"stripe":{"$ref":"#/components/schemas/PaymentMethodStripePostRequest"}},"description":"Provides details about the payment method used.","required":["stripe"]},"PaymentMethodStripePostRequest":{"type":"object","properties":{"id":{"type":"string","description":"The [PaymentMethod ID](https://docs.stripe.com/api/payment_methods/object#payment_method_object-id) within the organization's Stripe account. Supported payment methods are credit cards, debit cards, Apple Pay, and Google Pay.","example":"pm_card_visa"},"setup_intent_id":{"type":"string","description":"The Stripe SetupIntent ID associated with the payment method. Required for ACH US Direct Debit and BACS Direct Debit payments. Not applicable for card-based payment methods.","example":"seti_1OsI2pHUtU5Pnu8bXXXXXXXX"}},"description":"Contains information about the Stripe payment method used for the transaction.\n\nWhen writing test code, use a `payment_method.stripe.id` such as `pm_card_visa` from the list of [Stripe test cards](https://docs.stripe.com/testing?testing-method=payment-methods#cards). For more information on using test cards, see the [Stripe documentation](https://docs.stripe.com/testing?testing-method=payment-methods#use-test-cards).","required":["id"]},"PayoutResponse":{"type":"object","properties":{"amount":{"type":"string","description":"Payout amount in the donation's currency.","example":"99.99"},"amount_in_default_currency":{"type":"string","description":"Payout amount in the organization's default currency at the time of donation.","example":"59.99"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"}},"description":"Contains information about the payout details.","required":["amount","amount_in_default_currency","currency"]},"PlatformFeeResponse":{"type":"object","properties":{"amount":{"type":"string","description":"Platform fee amount in the donation's currency.","example":"99.99"},"amount_in_default_currency":{"type":"string","description":"Platform fee amount converted to the organization's default currency at the time of the donation.","example":"59.99"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"}},"description":"Provides details about the platform fee charged by Fundraise Up.\n\nThe `platform_fee` field will return 0 until Stripe provides the finalized fee data, which may take some time after a successful donation. To retrieve the finalized fee values, use the `Events` endpoint. Look for the `donation.success` event, which confirms that the calculated fees have been updated by Stripe.","required":["amount","amount_in_default_currency","currency"]},"ProcessingFeeResponse":{"type":"object","properties":{"amount":{"type":"string","description":"Processing fee amount in the donation's currency.","example":"99.99"},"amount_in_default_currency":{"type":"string","description":"Platform fee amount converted to the organization’s default currency at the time of the donation.","example":"59.99"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"}},"description":"Contains information about the processing fee charged by the payment processor.\n\nThe `processing_fee` field will return 0 until Stripe provides the finalized fee data, which may take some time after a successful donation. To retrieve the finalized fee values, use the `Events` endpoint. Look for the `donation.success` event, which confirms that the calculated fees have been updated by Stripe.","required":["amount","amount_in_default_currency","currency"]},"QuestionPostRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the question, formatted as Q[A-Z]{7}. Located in [Settings > Questions](https://dashboard.fundraiseup.com/settings/questions).","example":"QXXXXXXX"},"checked":{"type":"boolean","description":"Indicates whether the checkbox is checked. Required for questions with the type “Single checkbox.”.","example":true},"date":{"type":"string","description":"Answer for the question in date format (YYYY-MM-DD). Required for questions with the type “Date”.","example":"1990-05-15"},"options":{"description":"List of selected options. Required for question types “Multiple checkboxes”.","example":["Option 1","Option 2"],"type":"array","items":{"type":"string"}},"text":{"type":"string","description":"Answer for the question, maximum 256 characters. Required for questions with types “Text box”, “Text line”, “Select one option”, and “Dropdown menu”.","example":"Example answer"}},"description":"Represents an answer to a question in the donation process. Required if the campaign settings include mandatory questions.","required":["id"]},"QuestionPutRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the question, formatted as Q[A-Z]{7}. Located in [Settings > Questions.](https://dashboard.fundraiseup.com/settings/questions).","example":"QXXXXXXX"},"checked":{"type":"boolean","description":"Indicates whether the checkbox is selected. Required for question types “Checkbox”.","example":true},"date":{"type":"string","description":"Answer for the question in date format (YYYY-MM-DD). Required for questions with the type “Date”.","example":"1990-05-15"},"options":{"description":"List of selected options. Required for question types “Select multiple options” or “Checkbox”.","example":["Option 1","Option 2"],"type":"array","items":{"type":"string"}},"text":{"type":"string","description":"Answer for the question, maximum 256 characters. Required for questions with types “Text box”, “Text line”, “Select one option”, and “Dropdown menu”.","example":"Example answer"}},"description":"Represents an update to an answer in the donation process. Required if the campaign settings include mandatory questions.\n\nSubmitting a new request erases all previous answers to all questions and sets the answers to the new values.","required":["id"]},"QuestionResponse":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Question code, as set in the Dashboard.","example":"Code-1"},"id":{"type":"string","description":"Unique identifier of the question, formatted as Q[A-Z]{7}. Located in [Settings > Questions](https://dashboard.fundraiseup.com/settings/questions).","example":"QXXXXXXX"},"checked":{"type":"boolean","description":"Indicates whether the checkbox is selected. Required for questions with the type \"Single checkbox\".","example":true},"options":{"type":"array","items":{"type":"string"},"description":"List of selected options. Required for questions with the type \"Multiple checkboxes\".","example":["OK","Good"]},"text":{"type":"string","description":"Answer for the question. This field is returned only for question types \"Text box\", \"Text line\", \"Select one option\", and \"Dropdown menu\".","example":"Example answer"}},"description":"Provides information about a question used in the donation process.\n\nEach item must include an `id` and, depending on the question type, one of the following fields: `text`, `options`, or `checked`.","required":["id","code"]},"RecipientAddressResponse":{"type":"object","properties":{"city":{"type":"string","nullable":true,"description":"City name","example":"Nashville"},"country":{"type":"string","description":"[Two-letter country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), in lowercase.","example":"us"},"line1":{"type":"string","nullable":true,"description":"First address line.","example":"123 Example St."},"line2":{"type":"string","nullable":true,"description":"Second address line.","example":"Apt. 1"},"postal_code":{"type":"string","nullable":true,"description":"Postal or ZIP code.","example":"111111"},"region":{"type":"string","nullable":true,"description":"Can refer to a region, state, or province.","example":"Tennessee"}},"description":"Provides the postal address for the tribute recipient.","required":["country","city","postal_code","region","line1","line2"]},"RecurringPaymentResponse":{"type":"object","properties":{"bank_account":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/BankAccountResponse"}]},"credit_card":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/CreditCardResponse"}]},"email":{"type":"string","nullable":true,"description":"Email associated with the payment method.","example":"example@example.com"},"error_message":{"type":"string","nullable":true,"description":"Most recent payment error message. Returned only if the status is `failed` or `retrying`. Otherwise, returns `null`.","example":"Something went wrong"},"method":{"type":"string","enum":["credit_card","apple_pay","google_pay","click_to_pay","ach","paypal","venmo","becs_direct_debit","bacs_direct_debit","pad","sepa_direct_debit","ideal","crypto","stock","link","twint","eps"],"description":"Payment method, in lowercase underscore. `stock` is deprecated but may still appear in retrieved data.\n\nThe value of `us_bank_account` maps to `ach`. The value of `plaid` also maps to `ach`.","example":"paypal"},"processor":{"type":"string","enum":["stripe","paypal","gemini","manual_brokerage","coinbase_commerce"],"description":"Payment processor, in lowercase. `coinbase_commerce` is deprecated but may still appear in retrieved data.","example":"stripe"}},"description":"Provides details about the payment processing.","required":["email","error_message","method","processor","credit_card","bank_account"]},"RecurringPlanResponse":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AccountResponse"},"amount":{"type":"string","description":"Donation amount for each recurring installment, in the plan's currency.","example":"99.99"},"amount_before_fees_covered":{"type":"string","description":"Amount before fees were covered by supporter.","example":"99.99"},"amount_before_fees_covered_in_default_currency":{"type":"string","description":"Amount before fees were covered by supporter, converted to the organization's default currency at the time of the donation.","example":"59.99"},"amount_in_default_currency":{"type":"string","description":"Donation amount for each recurring installment, converted to the organization's default currency at the time of the donation.","example":"59.99"},"anonymous":{"type":"boolean","description":"Indicates if the recurring donations are made anonymously (`true`) or not (`false`).","example":false},"benefit":{"oneOf":[{"title":"BenefitNotShownResponse","allOf":[{"$ref":"#/components/schemas/BenefitNotShownResponse"}],"type":"object","description":"Represents the benefit associated with a recurring plan."},{"title":"BenefitShownNotSelectedResponse","allOf":[{"$ref":"#/components/schemas/BenefitShownNotSelectedResponse"}],"type":"object","description":"Represents the benefit associated with a recurring plan."},{"title":"BenefitSelectedResponse","allOf":[{"$ref":"#/components/schemas/BenefitSelectedResponse"}],"type":"object","description":"Represents the benefit associated with a recurring plan."}],"discriminator":{"propertyName":"state","mapping":{"not_shown":"#/components/schemas/BenefitNotShownResponse","shown_not_selected":"#/components/schemas/BenefitShownNotSelectedResponse","selected":"#/components/schemas/BenefitSelectedResponse"}}},"campaign":{"$ref":"#/components/schemas/CampaignResponse"},"comment":{"type":"string","nullable":true,"description":"Optional comment attached to the recurring donation plan.","example":"comment example"},"consent":{"$ref":"#/components/schemas/CommunicationConsentResponse"},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the recurring plan was created in UTC.","example":"2024-12-20T00:00:00.000Z"},"currency":{"type":"string","enum":["shp","eur","aed","afn","xcd","all","amd","aoa","ars","usd","aud","ang","xcg","awg","azn","bam","bbd","inr","pkr","bdt","xof","bgn","bhd","bif","bmd","myr","bnd","bob","brl","bsd","btn","nok","zar","bwp","byn","bzd","cad","cdf","xaf","chf","nzd","clp","cny","cop","crc","cve","czk","djf","dkk","dop","dzd","egp","mad","etb","fjd","fkp","jpy","gbp","gel","ghs","gip","gmd","gnf","gtq","gyd","hkd","hnl","hrk","htg","huf","idr","ils","isk","jmd","jod","kes","kgs","khr","kmf","krw","kwd","kyd","kzt","lak","lbp","lkr","lrd","lsl","mdl","mga","mkd","mmk","mnt","mop","mro","mur","mvr","mwk","mxn","mzn","nad","xpf","ngn","nio","sek","npr","omr","pab","pen","pgk","php","pln","pyg","qar","ron","rsd","rub","rwf","sar","sbd","scr","sgd","sll","sle","sos","srd","std","svc","szl","thb","tjs","tnd","top","try","ttd","twd","tzs","uah","uyu","uzs","vnd","vuv","wst","yer","zmw","btc","eth","usdt","usdc","sol","dot","doge","shib","ltc","bch","xtz","fil","ftm","gala","paxg","zec"],"description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase.","example":"usd"},"custom_fields":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldResponse"}},"designation":{"$ref":"#/components/schemas/DesignationResponse"},"device":{"$ref":"#/components/schemas/DeviceResponse"},"element":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/ElementResponse"}]},"ended_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating when the recurring plan ended in UTC.","example":"2024-12-20T00:00:00.000Z"},"frequency":{"type":"string","enum":["daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"],"description":"Frequency of the recurring plan.","example":"monthly"},"fundraiser":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/FundraiserResponse"}]},"gift_aid":{"$ref":"#/components/schemas/GiftAidResponse"},"id":{"type":"string","description":"Unique identifier for the recurring donation plan.","example":"RXXXXXXX"},"livemode":{"type":"boolean","description":"Test mode indicator. `true` for recurring plans in live mode, `false` for recurring plans in test mode.","example":true},"next_installment_at":{"type":"string","nullable":true,"description":"Timestamp in ISO 8601 format, indicating the next scheduled donation installment in UTC.","example":"2024-12-20T00:00:00.000Z"},"on_behalf_of":{"type":"string","nullable":true,"description":"Name of the organization the donation was made on behalf of.","example":"Example Inc."},"payment":{"$ref":"#/components/schemas/RecurringPaymentResponse"},"questions":{"type":"array","items":{"$ref":"#/components/schemas/QuestionResponse"}},"source":{"type":"string","enum":["website","campaign_page","virtual_terminal","donor_portal","dashboard","recurring_migration","api","gift_cart","tap2pay"],"description":"Source of the recurring donation setup.","example":"website"},"source_of_funds":{"type":"string","nullable":true,"enum":["own_money","on_behalf_of","fundraising_or_collection"],"description":"Indicates the source of funds for the donation in the context of Gift Aid eligibility."},"status":{"type":"string","enum":["active","scheduled","paused","retrying","completed","failed","canceled"],"description":"Status of the recurring plan.","example":"active"},"supporter":{"$ref":"#/components/schemas/EmbeddedSupporterResponse"},"supporter_covered_fee":{"type":"string","description":"Amount of fees covered by the supporter.","example":"9.99"},"supporter_covered_fee_in_default_currency":{"type":"string","description":"Amount of fees covered by the supporter and converted to the organization's default currency.","example":"99.9"},"tribute":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/TributeResponse"}]},"url":{"type":"string","nullable":true,"description":"URL where the recurring donation was set up.","example":"https://example.com/RXXXXXXX"},"utm":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/UtmResponse"}]}},"description":"Contains details about a recurring plan.","required":["id","created_at","ended_at","next_installment_at","account","campaign","element","supporter","amount","amount_in_default_currency","amount_before_fees_covered","amount_before_fees_covered_in_default_currency","on_behalf_of","supporter_covered_fee","supporter_covered_fee_in_default_currency","status","frequency","currency","comment","device","url","livemode","anonymous","source","custom_fields","designation","utm","questions","tribute","fundraiser","payment","gift_aid","consent","benefit","source_of_funds","grouped_donation_id"]},"RecurringPlansResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/RecurringPlanResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a response for recurring plans.","required":["data","has_more"]},"RecurringPostRequest":{"type":"object","properties":{"frequency":{"type":"string","description":"Recurring plan frequency. Determines how often a recurring donation is processed.","enum":["daily","weekly","biweekly","every4weeks","monthly","bimonthly","quarterly","semiannual","annual"],"example":"monthly"}},"description":"Defines the parameters for a recurring donation plan.\n\nThis must be specified if the campaign settings in the Frequency section do not include \"Once\" as an option for either Default Frequency or Second Frequency.","required":["frequency"]},"SupporterAddressPostRequest":{"type":"object","properties":{"city":{"type":"string","description":"Supporter's city. Maximum 64 characters.","example":"Nashville"},"line1":{"type":"string","nullable":true,"description":"The first line of the supporter's mailing address, typically including the street address. Maximum 256 characters.","example":"123 Main St"},"postal_code":{"type":"string","description":"Supporter's postal code. Maximum 10 characters.","example":"111111"},"country":{"type":"string","description":"[Two-letter country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), lowercase.","example":"us"},"line2":{"type":"string","nullable":true,"description":"The second line of the supporter's mailing address, typically including the street address. Maximum 256 characters.","example":"Apt 1"},"region":{"type":"string","nullable":true,"description":"Region, state, or province exactly as provided in the API request. Values are not normalized or validated.\n\nFor donations created through checkout, location data uses ISO-3166 formats. If you want API-created donations to match checkout formatting, send regions using the same standard — for example, US states as two-letter codes (CA, NY).","example":"TN"}},"description":"Represents the mailing address of the supporter.\n\nThis field is required if the campaign requires a mailing address, based on the \"Ask for mailing address\" setting and the minimum amount that triggers the request.","required":["city","line1","postal_code"]},"SupporterAddressPutRequest":{"type":"object","properties":{"city":{"type":"string","description":"Supporter's city. Maximum 64 characters.","example":"Nashville"},"country":{"type":"string","description":"[Two-letter country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), lowercase.","example":"us"},"line1":{"type":"string","description":"The first line of the supporter's mailing address, typically including the street address. Maximum 256 characters.","example":"123 Main St"},"line2":{"type":"string","nullable":true,"description":"The second line of the supporter's mailing address, typically including the street address. Maximum 256 characters.","example":"Apt 1"},"postal_code":{"type":"string","description":"Supporter's postal code. Maximum 10 characters.","example":"111111"},"region":{"type":"string","nullable":true,"description":"Supporter's region. Maximum 64 characters.\n\nRequired for all countries except `gb` (United Kingdom), `il` (Israel), `nl` (Netherlands), `fr` (France), `de` (Germany). Can be: region, state, or province.","example":"Tennessee"}},"description":"Represents the mailing address of the supporter.\n\nThis field is required if the campaign requires a mailing address, based on the “Ask for mailing address” setting and the minimum amount that triggers the request.\n\nTo remove the address, pass `null` for `supporter.address`."},"SupporterEmployerPostRequest":{"type":"object","properties":{"name":{"type":"string","description":"The name of the organization or company where the supporter works. Maximum 64 characters.","example":"Fundraise Up Inc."}},"description":"Contains information about the supporter's employer.","required":["name"]},"SupporterPostRequest":{"type":"object","properties":{"first_name":{"type":"string","description":"Supporter's first name. Maximum 256 characters.","example":"Alex"},"last_name":{"type":"string","description":"Supporter's last name. Maximum 256 characters.","example":"Garcia"},"address":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/SupporterAddressPostRequest"}]},"email":{"type":"string","nullable":true,"description":"Supporter's email address. Maximum 254 characters.","example":"example@example.com"},"employer":{"nullable":true,"description":"The supporter's employer. Required when `employment_status` is `employed` for US political organizations.","type":"object","allOf":[{"$ref":"#/components/schemas/SupporterEmployerPostRequest"}]},"employment_status":{"type":"string","enum":["employed","unemployed","retired"],"nullable":true,"description":"The supporter's employment status. Required for US political organizations. Possible values: `employed`, `unemployed`, `retired`.","example":"employed"},"occupation":{"type":"string","nullable":true,"description":"The supporter's occupation. Required when `employment_status` is `employed`. Max 200 characters.","example":"Software Engineer"},"phone":{"type":"string","nullable":true,"description":"Supporter's phone number. Maximum 20 characters.\n\nAccepts phone numbers in E.164 format or with spaces, parentheses, and hyphens.\n\nFormatting is preserved as entered.\n\nOnly included if the campaign setting \"Ask for phone number\" is enabled.\n\nRequired if the campaign is configured to require the supporter to provide their phone number.","example":"+1 (111) 111-1111"},"title":{"type":"string","nullable":true,"description":"Supporter's title in lowercase. Available options depend on the campaign settings. Available for the following countries:\n\n- **United Kingdom:** `mr`, `mrs`, `miss`, `ms`, `mx`, `sir`, `dr`, `rev`, `dcn`, `fr`, `br`, `sr`, `prof`\n\n- **France:** `m`, `mme`, `mlle`, `autre`\n\n- **Germany:** `frau`, `herr`, `frau dr.`, `herr dr.`, `frau prof.`, `herr prof.`\n\n- **Austria:** `herr`, `frau`\n\n- **Canada (French):** `m`, `mme`, `mlle`, `autre`","enum":["m","mme","mlle","autre","mx","mr","mrs","miss","ms","sir","dame","lord","lady","dr","prof","rev","fr","dcn","br","sr","frau","herr","frau dr.","herr dr.","frau prof.","herr prof."],"example":"mr"}},"description":"Represents the personal data of the supporter.","required":["first_name","last_name"]},"SupporterRequest":{"type":"object","properties":{"address":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/SupporterAddressPutRequest"}]},"email":{"type":"string","nullable":true,"description":"Supporter's email address. Maximum 254 characters.","example":"example@example.com"},"employer":{"nullable":true,"description":"The supporter's employer. Required when `employment_status` is `employed` for US political organizations.","type":"object","allOf":[{"$ref":"#/components/schemas/SupporterEmployerPostRequest"}]},"employment_status":{"type":"string","enum":["employed","unemployed","retired"],"nullable":true,"description":"The supporter's employment status. Required for US political organizations. Possible values: `employed`, `unemployed`, `retired`.","example":"employed"},"first_name":{"type":"string","description":"Supporter's first name. Maximum 256 characters.","example":"Alex"},"last_name":{"type":"string","description":"Supporter's last name. Maximum 256 characters.","example":"Garcia"},"occupation":{"type":"string","nullable":true,"description":"The supporter's occupation. Required when `employment_status` is `employed`. Max 200 characters.","example":"Software Engineer"},"phone":{"type":"string","nullable":true,"description":"Supporter's phone number. Maximum 20 characters.\n\nOnly included if the campaign setting “Ask for phone number” is enabled.\n\nRequired if the campaign is configured to require the supporter to provide their phone number.","example":"+1 (111) 111111"},"title":{"type":"string","nullable":true,"description":"Supporter's title in lowercase. Available options depend on the campaign settings. Available for the following countries:\n\n- **United Kingdom:** `mr`, `mrs`, `miss`, `ms`, `mx`, `sir`, `dr`, `rev`, `dcn`, `fr`, `br`, `sr`, `prof`\n\n- **France:** `m`, `mme`, `mlle`, `autre`\n\n- **Germany:** `frau`, `herr`, `frau dr.`, `herr dr.`, `frau prof.`, `herr prof.`\n\n- **Austria:** `herr`, `frau`\n\n- **Canada (French):** `m`, `mme`, `mlle`, `autre`","enum":["m","mme","mlle","autre","mx","mr","mrs","miss","ms","sir","dame","lord","lady","dr","prof","rev","fr","dcn","br","sr","frau","herr","frau dr.","herr dr.","frau prof.","herr prof."],"example":"mr"}},"description":"Represents the personal data of the supporter. Only the specified parameters are updated, the others remain unchanged."},"SupporterResponse":{"type":"object","properties":{"account":{"$ref":"#/components/schemas/AccountResponse"},"address":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/AddressResponse"}]},"created_at":{"type":"string","description":"Timestamp in ISO 8601 format, indicating when the supporter was created, in UTC.","example":"2024-12-20T00:00:00.000Z"},"email":{"type":"string","nullable":true,"description":"Email address associated with the supporter.","example":"example@example.com"},"employer":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/EmployerResponse"}]},"employment_status":{"type":"string","nullable":true,"description":"The supporter's current employment status. Possible values: `employed`, `unemployed`, `retired`. Returns `null` if not collected. Only collected for US political organizations.","enum":["employed","unemployed","retired"],"example":"employed"},"first_name":{"type":"string","nullable":true,"description":"First name of the supporter.","example":"Alex"},"id":{"type":"string","description":"Unique identifier for the supporter.","example":"SXXXXXXXX"},"language":{"type":"string","enum":["en-US","en-GB","en-CA","fr-CA","fr-FR","es","nl","no","de","de-x-informal","fi-FI","ar-001","sv","it","pt-PT","pt-BR","zh-CN","zh-TW","ja","ko","hu","da","ru-RU","es-US","pl-PL"],"description":"Supporter's locale.","example":"en-CA"},"last_name":{"type":"string","nullable":true,"description":"Last name of the supporter.","example":"Garcia"},"livemode":{"type":"boolean","description":"Test mode indicator. `true` for supporters in live mode, `false` for supporters in test mode.","example":true},"occupation":{"type":"string","nullable":true,"description":"The supporter's current occupation. Returns `null` if not collected or if employment status is `unemployed` or `retired`. Max 200 characters.","example":"Software Engineer"},"phone":{"type":"string","nullable":true,"description":"Supporter's phone number.","example":"+1 (111) 111111"},"title":{"type":"string","nullable":true,"description":"Supporter's title.","enum":["m","mme","mlle","autre","mx","mr","mrs","miss","ms","sir","dame","lord","lady","dr","prof","rev","fr","dcn","br","sr","frau","herr","frau dr.","herr dr.","frau prof.","herr prof."],"example":"mr"}},"description":"Contains supporter details.","required":["id","created_at","account","livemode","email","first_name","last_name","title","phone","employer","employment_status","occupation","address","language"]},"SupportersResponse":{"type":"object","properties":{"data":{"description":"An array containing the entity records, paginated by any request parameters.","type":"array","items":{"$ref":"#/components/schemas/SupporterResponse"}},"has_more":{"type":"boolean","description":"Indicates whether there are more records available. For `starting_after`, it shows that there is a page with older records. For `ending_before`, it indicates that there is a page with newer records.","example":true}},"description":"Provides a paginated response for supporters.","required":["data","has_more"]},"TributeRecipientResponse":{"type":"object","properties":{"address":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/RecipientAddressResponse"}]},"email":{"type":"string","nullable":true,"description":"Email address used for `email` sharing type.","example":"example@example.com"},"first_name":{"type":"string","nullable":true,"description":"Tribute recipient's first name.","example":"Sidney"},"last_name":{"type":"string","nullable":true,"description":"Tribute recipient's last name.","example":"Jones"},"title":{"type":"string","nullable":true,"description":"Tribute recipient's title.","enum":["m","mme","mlle","autre","mx","mr","mrs","miss","ms","sir","dame","lord","lady","dr","prof","rev","fr","dcn","br","sr","frau","herr","frau dr.","herr dr.","frau prof.","herr prof."],"example":"mr"}},"description":"Contains details about the tribute recipient.","required":["title","first_name","last_name","email","address"]},"TributeResponse":{"type":"object","properties":{"honoree":{"type":"string","description":"Name of the person honored or remembered.","example":"Zhang Wei"},"id":{"type":"string","description":"Unique tribute identifier.","example":"TXXXXXXX"},"sharing":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/TributeSharingResponse"}]},"type":{"type":"string","nullable":true,"enum":["in_honor","in_memory"],"description":"Tribute type.","example":"in_honor"}},"description":"Provides information about the tribute.","required":["id","type","honoree","sharing"]},"TributeSharingResponse":{"type":"object","properties":{"from":{"type":"string","nullable":true,"description":"Name of the sender.","example":"Alex Garcia"},"hide_amount":{"type":"boolean","description":"Indicates whether the donation amount should be hidden in the tribute notification sent to the recipient.","example":false},"message":{"type":"string","nullable":true,"description":"Custom message included in the tribute.","example":"In loving memory of Jordan"},"recipient":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/TributeRecipientResponse"}]},"type":{"type":"string","nullable":true,"enum":["email","address"],"description":"Sharing method.","example":"email"}},"description":"Defines the sharing options for a tribute.","required":["type","from","message","recipient","hide_amount"]},"URL":{"type":"object","properties":{}},"UnassignDesignationError":{"type":"object","properties":{"code":{"type":"string","enum":["designation_not_found","designation_not_attached"],"description":"Error code.","example":"designation_not_attached"},"message":{"type":"string","description":"Error message.","example":"Designation is not attached to this campaign."}},"description":"Describes the error that prevented detaching a single designation.","required":["code","message"]},"UnassignDesignationItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Contains the parameters for a single designation to detach from a campaign.","required":["id"]},"UnassignDesignationResultItem":{"type":"object","properties":{"error":{"nullable":true,"description":"Error object. `null` on success.","type":"object","allOf":[{"$ref":"#/components/schemas/UnassignDesignationError"}]},"id":{"type":"string","description":"Unique identifier of the designation, formatted as E[A-Z\\d]{7}.","example":"EXXXXXXX"}},"description":"Provides the result of detaching a single designation within a batch request.","required":["id","error"]},"UnassignDesignationsRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":100,"description":"An array of designations to unassign.","type":"array","items":{"$ref":"#/components/schemas/UnassignDesignationItem"}},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","example":true}},"description":"Contains the request parameters required for detaching designations from a campaign.","required":["items"]},"UnassignDesignationsResponse":{"type":"object","properties":{"results":{"description":"An array containing the result for each item in the request, in the same order.","type":"array","items":{"$ref":"#/components/schemas/UnassignDesignationResultItem"}},"status":{"type":"string","enum":["complete","partial","failed"],"description":"Status of the bulk operation.","example":"complete"}},"description":"Provides the per-item results of a batch designation detachment request.","required":["status","results"]},"UpdateDesignationError":{"type":"object","properties":{"code":{"type":"string","enum":["designation_not_found"],"description":"Error code.","example":"designation_not_found"},"message":{"type":"string","description":"Error message.","example":"Designation not found."}},"description":"Describes the error that prevented updating a single designation.","required":["code","message"]},"UpdateDesignationRequest":{"type":"object","properties":{"code":{"type":"string","nullable":true,"description":"Designation code.","example":"Code-1"},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Designations only exist in live mode — set this to `true`.","example":true},"name":{"type":"string","description":"Designation name.","example":"My Designation"}},"description":"Contains the request parameters for updating a designation. Only the provided fields are updated."},"UpdateDonationRequest":{"type":"object","properties":{"campaign":{"type":"string","description":"Campaign ID. Must belong to the account that owns the API key, otherwise an error will occur. Must be active and accept money-based donations, otherwise an error will occur.","example":"FUNXXXXXXXX"},"comment":{"type":"string","nullable":true,"description":"Updated comment, maximum 256 characters."},"custom_fields":{"description":"Array of custom fields","type":"array","items":{"$ref":"#/components/schemas/CustomFieldPutRequest"}},"designation":{"type":"string","nullable":false,"description":"The ID of the fund, program, or initiative the donation goes to. You can use the ID of any designation created in your account, whether or not it is linked to a campaign.\nOnly one designation can be set for a single donation. To create multiple donations with different designations, make separate API calls.\nYou can find the ID in the [Designations section of the Dashboard](https://dashboard.fundraiseup.com/designations).","example":"EXXXXXXX"},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026.","example":true},"questions":{"type":"array","items":{"$ref":"#/components/schemas/QuestionPutRequest"}},"supporter":{"$ref":"#/components/schemas/SupporterRequest"}},"description":"Contains the request parameters for updating a donation."},"UpdateFundraiserRequest":{"type":"object","properties":{"campaign":{"type":"string","description":"Campaign ID. Must belong to the account that owns the API key, otherwise an error will occur. The campaign must be active and accept money-based donations, otherwise an error will occur.","example":"FUNXXXXXXXX"},"code":{"type":"string","description":"Identifier of up to 150 characters. Does not need to be unique.","example":"Code-1"},"description":{"type":"string","description":"Description of the Fundraiser","example":"I'm raising money to help protect penguins and their habitat. Join me!"},"designation":{"type":"string","description":"Designation ID.","example":"EXXXXXXX"},"goal":{"$ref":"#/components/schemas/GoalPostRequest"},"image":{"$ref":"#/components/schemas/FundraiserImageRequest"},"livemode":{"type":"boolean","description":"Specifies whether the request is executed in live or test mode. Required for API keys created after 30th January 2026. Fundraisers only exist in live mode — set this to `true`.","example":true},"name":{"type":"string","description":"The title of the Fundraiser, used as its main heading.","example":"Run for hope"},"slug":{"type":"string","description":"Unique identifier for the Fundraiser within the account or subaccount. The slug is not shared across accounts or subaccounts and must be unique within each. Can include up to 25 letters, numbers, underscores, or hyphens.","example":"5003-000000D8cu_IQAA"},"status":{"type":"string","enum":["active","paused"]}},"description":"Contains the request parameters required for updating a Fundraiser."},"UpgradeLinkResponse":{"type":"object","properties":{"url":{"type":"string","description":"A permanent, pre-authenticated link that the supporter can use to upgrade this one-time donation to a recurring plan. Share this link via email, SMS, or any other channel."}},"description":"Contains the generated upgrade link for a one-time donation.","required":["url"]},"UtmResponse":{"type":"object","properties":{"campaign":{"type":"string","nullable":true,"description":"The `utm_campaign` value, if available. Shows the name of the marketing campaign.","example":"giving_tuesday"},"content":{"type":"string","nullable":true,"description":"The `utm_content` value, if available. Identifies which link or ad variation was clicked.","example":"textlink"},"medium":{"type":"string","nullable":true,"description":"The `utm_medium` value, if available. Shows the type of marketing channel.","example":"email"},"source":{"type":"string","nullable":true,"description":"The `utm_source` value, if available. Shows where the traffic came from.","example":"google"},"term":{"type":"string","nullable":true,"description":"The `utm_term` value, if available. Shows the keywords used in a search.","example":"how_to_support_penguins"}},"description":"Represents UTM tags associated with the donation.","required":["source","campaign","content","medium","term"]}}}}