Fundraise Up Recurring Plans API

List, create, and retrieve recurring donation plans that model a supporter's ongoing giving schedule and terms. Like donations, recurring plans can be updated only within 24 hours of creation. Plan lifecycle activity (activated, scheduled, failed, completed, cancelled, paused, retrying) is surfaced through the Events resource.

OpenAPI Specification

fundraiseup-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Fundraise Up REST API
  description: >-
    The Fundraise Up REST API gives programmatic access to fundraising data for a
    nonprofit's Fundraise Up account. It is resource-oriented, uses predictable
    URLs, accepts JSON-encoded request bodies with a Content-Type of
    application/json, and returns JSON responses. The API lets you work with
    Donations, Recurring Plans, Supporters (donors), and Events (an audit log),
    and generate Donor Portal access links. Donations and recurring plans can be
    created and updated, but updates are only allowed within 24 hours of creation;
    supporters and events are read-only. List endpoints use cursor-based
    pagination via the limit, starting_after, and ending_before query parameters.
    All requests authenticate with an API key (created in the dashboard under
    Settings > API keys) passed as an HTTP Bearer token. Fundraise Up does not
    expose a WebSocket API; event-based syncing is done by polling the Events
    resource. Field-level request and response schemas are intentionally left open
    here and should be reconciled against the hosted reference at
    https://api.fundraiseup.com/v1/docs/.
  version: '1.0'
  contact:
    name: Fundraise Up
    url: https://fundraiseup.com
  license:
    name: Proprietary
    url: https://fundraiseup.com/terms/
servers:
  - url: https://api.fundraiseup.com/v1
    description: Fundraise Up REST API
security:
  - bearerAuth: []
tags:
  - name: Donations
    description: One-time and recurring donations, including offline and ACH donations.
  - name: Recurring Plans
    description: Recurring donation plans modeling a supporter's ongoing giving.
  - name: Supporters
    description: Donor records (Fundraise Up calls donors "supporters").
  - name: Events
    description: Audit-log events across donations, recurring plans, tributes, and supporters.
  - name: Donor Portal
    description: Secure access-link generation for the self-service Donor Portal.
paths:
  /donations:
    get:
      operationId: listDonations
      tags:
        - Donations
      summary: List donations
      description: Retrieves donations with cursor-based pagination.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/StartingAfter'
        - $ref: '#/components/parameters/EndingBefore'
      responses:
        '200':
          description: A paginated list of donations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DonationList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      operationId: createDonation
      tags:
        - Donations
      summary: Create a donation
      description: >-
        Creates a one-time or recurring donation, including donations collected
        outside the website and ACH US Direct Debit donations (which require a
        Stripe Payment Method ID created in Stripe beforehand).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Donation'
      responses:
        '200':
          description: The created donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /donations/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getDonation
      tags:
        - Donations
      summary: Retrieve a donation
      description: Retrieves the details of a specific donation by ID.
      responses:
        '200':
          description: The requested donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: updateDonation
      tags:
        - Donations
      summary: Update a donation
      description: >-
        Updates a donation. Updates are only permitted within 24 hours of the
        donation's creation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Donation'
      responses:
        '200':
          description: The updated donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /recurring_plans:
    get:
      operationId: listRecurringPlans
      tags:
        - Recurring Plans
      summary: List recurring plans
      description: Retrieves recurring donation plans with cursor-based pagination.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/StartingAfter'
        - $ref: '#/components/parameters/EndingBefore'
      responses:
        '200':
          description: A paginated list of recurring plans.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringPlanList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      operationId: createRecurringPlan
      tags:
        - Recurring Plans
      summary: Create a recurring plan
      description: Creates a recurring donation plan.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecurringPlan'
      responses:
        '200':
          description: The created recurring plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringPlan'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /recurring_plans/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getRecurringPlan
      tags:
        - Recurring Plans
      summary: Retrieve a recurring plan
      description: Retrieves the details of a specific recurring plan by ID.
      responses:
        '200':
          description: The requested recurring plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringPlan'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: updateRecurringPlan
      tags:
        - Recurring Plans
      summary: Update a recurring plan
      description: >-
        Updates a recurring plan. Updates are only permitted within 24 hours of
        the plan's creation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecurringPlan'
      responses:
        '200':
          description: The updated recurring plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringPlan'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /supporters:
    get:
      operationId: listSupporters
      tags:
        - Supporters
      summary: List supporters
      description: Retrieves supporters (donor records) with cursor-based pagination.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/StartingAfter'
        - $ref: '#/components/parameters/EndingBefore'
      responses:
        '200':
          description: A paginated list of supporters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupporterList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /supporters/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getSupporter
      tags:
        - Supporters
      summary: Retrieve a supporter
      description: Retrieves the details of a specific supporter by ID.
      responses:
        '200':
          description: The requested supporter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Supporter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /events:
    get:
      operationId: listEvents
      tags:
        - Events
      summary: List events
      description: >-
        Retrieves audit-log events across donations, transaction attempts,
        recurring plans, tributes, and supporters, with cursor-based pagination.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/StartingAfter'
        - $ref: '#/components/parameters/EndingBefore'
      responses:
        '200':
          description: A paginated list of events.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /events/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getEvent
      tags:
        - Events
      summary: Retrieve an event
      description: Retrieves the details of a specific event by ID.
      responses:
        '200':
          description: The requested event.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /donor_portal/access_links/supporters/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    post:
      operationId: createSupporterAccessLink
      tags:
        - Donor Portal
      summary: Create a supporter Donor Portal access link
      description: >-
        Generates a secure link that lets a supporter open their Donor Portal
        without logging in.
      responses:
        '200':
          description: The generated access link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessLink'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /donor_portal/access_links/recurring_plans/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    post:
      operationId: createRecurringPlanAccessLink
      tags:
        - Donor Portal
      summary: Create a recurring-plan Donor Portal access link
      description: >-
        Generates a secure link that lets a supporter access a specific recurring
        plan in the Donor Portal without logging in.
      responses:
        '200':
          description: The generated access link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessLink'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key created in the dashboard under Settings > API keys, sent as a Bearer token.
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: The unique identifier of the resource.
      schema:
        type: string
    Limit:
      name: limit
      in: query
      required: false
      description: Number of records to return, from 1 to 100.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    StartingAfter:
      name: starting_after
      in: query
      required: false
      description: A cursor (object ID) to fetch the page of records after it.
      schema:
        type: string
    EndingBefore:
      name: ending_before
      in: query
      required: false
      description: A cursor (object ID) to fetch the page of records before it.
      schema:
        type: string
  responses:
    Unauthorized:
      description: The API key is missing or invalid.
    NotFound:
      description: The requested resource does not exist.
    TooManyRequests:
      description: Rate limit exceeded (8 requests/second or 128 requests/minute).
  schemas:
    Pagination:
      type: object
      properties:
        has_more:
          type: boolean
          description: Whether more records are available beyond this page.
    Donation:
      type: object
      description: A one-time or recurring donation. Field schema to be reconciled against the hosted reference.
      properties:
        id:
          type: string
        object:
          type: string
          example: donation
      additionalProperties: true
    DonationList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Donation'
    RecurringPlan:
      type: object
      description: A recurring donation plan. Field schema to be reconciled against the hosted reference.
      properties:
        id:
          type: string
        object:
          type: string
          example: recurring_plan
      additionalProperties: true
    RecurringPlanList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/RecurringPlan'
    Supporter:
      type: object
      description: A supporter (donor) record. Field schema to be reconciled against the hosted reference.
      properties:
        id:
          type: string
        object:
          type: string
          example: supporter
      additionalProperties: true
    SupporterList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Supporter'
    Event:
      type: object
      description: An audit-log event. Field schema to be reconciled against the hosted reference.
      properties:
        id:
          type: string
        object:
          type: string
          example: event
        type:
          type: string
          description: The event type, for example donation.success or recurring_plan.activated.
      additionalProperties: true
    EventList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Event'
    AccessLink:
      type: object
      description: A secure Donor Portal access link.
      properties:
        url:
          type: string
          format: uri
      additionalProperties: true