Overflow Refunds API

The Refunds API from Overflow — 2 operation(s) for refunds.

OpenAPI Specification

overflow-refunds-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Overflow Open Campaigns Refunds API
  description: '

    The documentation for the Overflow Open APIs.


    To access the OpenAPI spec in JSON/YAML format, navigate to:


    * `/api/docs/openapi.json`

    * `/api/docs/openapi.yaml`

    '
  version: '3.0'
  contact: {}
servers:
- url: https://server.stage.overflow.co
  description: API server
tags:
- name: Refunds
paths:
  /api/v3/refunds:
    get:
      description: '

        Returns refunds for the authenticated nonprofit based on the provided filters.


        ---


        ### Refund Status


        * `PENDING`: The refund request has been created and is awaiting processor completion.

        * `SUCCEEDED`: The refund has completed successfully.

        * `FAILED`: The refund failed at the processor or settlement layer.

        * `CANCELED`: The refund was canceled before completion.

        * `REQUIRES_ACTION`: Additional action is required before the refund can complete.


        ---


        ### Refund Reasons


        * `REQUESTED_BY_CUSTOMER`: The donor requested the refund.

        * `FRAUDULENT`: The refund was issued due to suspected fraud.

        * `DUPLICATE`: The refund was issued for a duplicate charge.

        * `EXPIRED_OR_UNCAPTURED_CHARGE`: The original charge expired or was not captured.


        ---


        ### Filtering


        * Use `contributionId` to return refunds for a specific contribution.

        * Use `minimumUpdatedDate` and `maximumUpdatedDate` to poll for refunds that changed within a specific window.

        * Results are sorted by `createdAt` (ascending or descending via `sortDirection`) and paginated with `limit` and `page`.


        All monetary amounts in the response are expressed in cents.

        '
      operationId: OpenApiRefundsController_getRefunds
      parameters:
      - name: limit
        required: false
        in: query
        description: The number of refunds to return.
        schema:
          minimum: 1
          maximum: 100
          default: 25
          type: number
      - name: page
        required: false
        in: query
        description: The page number of the refunds to return.
        schema:
          minimum: 1
          default: 1
          type: number
      - name: sortDirection
        required: false
        in: query
        description: Sort direction by refund created date. Defaults to descending.
        schema:
          example: DESC
          enum:
          - ASC
          - DESC
          type: string
      - name: contributionId
        required: false
        in: query
        description: Filter by contribution id.
        schema:
          pattern: ^[0-9a-fA-F]{24}$
          example: 8810f34fd5061afeec3eab68
          type: string
      - name: minimumUpdatedDate
        required: false
        in: query
        description: The minimum updated date of the refunds to return.
        schema:
          format: date-time
          example: '2025-01-01'
          type: string
      - name: maximumUpdatedDate
        required: false
        in: query
        description: The maximum updated date of the refunds to return.
        schema:
          format: date-time
          example: '2025-02-01'
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRefundsResponse'
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Refunds
      tags:
      - Refunds
  /api/v3/refunds/{refundId}:
    get:
      description: Returns a single refund by its id for the authenticated nonprofit. All monetary amounts are expressed in cents.
      operationId: OpenApiRefundsController_getRefundById
      parameters:
      - name: refundId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRefundResponse'
        '404':
          description: Refund not found
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Refund
      tags:
      - Refunds
components:
  schemas:
    GetRefundsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Refund id.
                example: 8810f34fd5061afeec3eab67
              contributionId:
                type: string
                description: Contribution id associated with the refund.
                example: 8810f34fd5061afeec3eab68
              status:
                type: string
                enum:
                - CANCELED
                - FAILED
                - PENDING
                - REQUIRES_ACTION
                - SUCCEEDED
                description: Refund status.
                example: SUCCEEDED
              reason:
                type: string
                enum:
                - DUPLICATE
                - EXPIRED_OR_UNCAPTURED_CHARGE
                - FRAUDULENT
                - REQUESTED_BY_CUSTOMER
                nullable: true
                description: Refund reason when provided by the processor.
                example: REQUESTED_BY_CUSTOMER
              amountInCents:
                type: number
                description: Gross refund amount in cents.
                example: 12500
              netValueInCents:
                type: number
                description: Net refund amount in cents.
                example: 12100
              feeValueInCents:
                type: number
                nullable: true
                description: Total refund fees in cents.
                example: 400
              processorRefundId:
                type: string
                description: Processor refund identifier.
                example: re_123456789
              depositId:
                type: string
                nullable: true
                description: Deposit id associated with the refund, when available.
                example: 8810f34fd5061afeec3eab69
              createdAt:
                type: string
                format: date-time
                description: Date the refund was created.
                example: '2026-05-19T00:00:00.000Z'
              updatedAt:
                type: string
                format: date-time
                description: Date the refund was last updated.
                example: '2026-05-20T00:00:00.000Z'
            required:
            - id
            - contributionId
            - status
            - reason
            - amountInCents
            - netValueInCents
            - feeValueInCents
            - processorRefundId
            - depositId
            - createdAt
            - updatedAt
          description: List of refunds.
        totalCount:
          type: number
          description: Total number of refunds matching the filters.
          example: 100
      required:
      - data
      - totalCount
    GetRefundResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: Refund id.
              example: 8810f34fd5061afeec3eab67
            contributionId:
              type: string
              description: Contribution id associated with the refund.
              example: 8810f34fd5061afeec3eab68
            status:
              type: string
              enum:
              - CANCELED
              - FAILED
              - PENDING
              - REQUIRES_ACTION
              - SUCCEEDED
              description: Refund status.
              example: SUCCEEDED
            reason:
              type: string
              enum:
              - DUPLICATE
              - EXPIRED_OR_UNCAPTURED_CHARGE
              - FRAUDULENT
              - REQUESTED_BY_CUSTOMER
              nullable: true
              description: Refund reason when provided by the processor.
              example: REQUESTED_BY_CUSTOMER
            amountInCents:
              type: number
              description: Gross refund amount in cents.
              example: 12500
            netValueInCents:
              type: number
              description: Net refund amount in cents.
              example: 12100
            feeValueInCents:
              type: number
              nullable: true
              description: Total refund fees in cents.
              example: 400
            processorRefundId:
              type: string
              description: Processor refund identifier.
              example: re_123456789
            depositId:
              type: string
              nullable: true
              description: Deposit id associated with the refund, when available.
              example: 8810f34fd5061afeec3eab69
            createdAt:
              type: string
              format: date-time
              description: Date the refund was created.
              example: '2026-05-19T00:00:00.000Z'
            updatedAt:
              type: string
              format: date-time
              description: Date the refund was last updated.
              example: '2026-05-20T00:00:00.000Z'
          required:
          - id
          - contributionId
          - status
          - reason
          - amountInCents
          - netValueInCents
          - feeValueInCents
          - processorRefundId
          - depositId
          - createdAt
          - updatedAt
          description: Refund.
      required:
      - data
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API Key for API authentication
    ClientId:
      type: apiKey
      in: header
      name: x-client-id
      description: Client ID for API authentication