Benevity Receipts API

Retrieve the PDF receipt for a completed donation by its backend receipt ID, or request that the receipt be emailed to the donor. Receipts show issue date, donor name/address, amount, and the disbursing foundation partner.

OpenAPI Specification

benevity-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Benevity API
  description: >-
    Modeled from the public Benevity API documentation at
    developer.benevity.org. Covers the confirmed Causes, Giving (donations),
    Receipts, and Spark (giving/volunteer opportunities) endpoints. Credentials
    are partner-gated (request-a-demo); this document reflects publicly
    documented paths and fields only - it does not fabricate an unverified
    full surface. The Location Services API is intentionally omitted here
    (see review.yml) because its exact request/response schema beyond the
    overview guide was not independently confirmed.
  version: '2024.8'
  contact:
    name: Benevity
    url: https://developer.benevity.org/
externalDocs:
  description: Benevity API Documentation
  url: https://developer.benevity.org/
servers:
- url: https://skyline.benevity.org
  description: Giving, Causes, and Receipts API host
- url: https://api.benevity.org
  description: Spark API host (production)
- url: https://api.benevity-staging.org
  description: Spark API host (sandbox)
tags:
- name: Authorization
- name: Causes
- name: Giving
- name: Receipts
- name: Spark
security:
- bearerAuth: []
paths:
  /oauth2/token:
    post:
      operationId: getAccessToken
      tags:
      - Authorization
      summary: Obtain an OAuth 2.0 client-credentials access token
      description: >-
        Server-to-server OAuth 2.0 client credentials grant. Send Basic
        Authentication with base64-encoded `client_id:client_secret`. Tokens
        are valid for `expires_in` seconds (typically 3600) and should be
        reused until expiry rather than fetched per request.
      security:
      - basicAuth: []
      responses:
        '200':
          description: Access token issued
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    description: JWT bearer token
                  token_type:
                    type: string
                    example: Bearer
                  expires_in:
                    type: integer
                    example: 3600
  /search/causes:
    get:
      operationId: searchCauses
      tags:
      - Causes
      summary: Search the Benevity Cause Database
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
        description: Search term matched against cause name, description, and tags.
      - name: visibility
        in: query
        schema:
          type: string
          enum: [match, donate, program, nominate, ineligible, inactive]
      - name: category
        in: query
        schema:
          type: string
        description: NTEE category/subcategory filter.
      - name: country
        in: query
        schema:
          type: string
        description: ISO 3166 country code.
      - name: state
        in: query
        schema:
          type: string
        description: ISO 3166-2 state/province code.
      - name: search_location
        in: query
        schema:
          type: string
        description: '"latitude,longitude" for proximity search.'
      - name: autocorrect
        in: query
        schema:
          type: boolean
      - name: page
        in: query
        schema:
          type: integer
      - name: page_size
        in: query
        schema:
          type: integer
          default: 25
      - name: sort
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Matching causes
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        type:
                          type: string
                        attributes:
                          type: object
                          properties:
                            name:
                              type: string
                            city:
                              type: string
                            state:
                              type: string
                            country:
                              type: string
                            categories:
                              type: array
                              items:
                                type: string
                            visibility:
                              type: string
                            status:
                              type: object
                            snippets:
                              type: array
                              items:
                                type: string
                  meta:
                    type: object
                  links:
                    type: object
  /donations:
    post:
      operationId: createPostpaidDonation
      tags:
      - Giving
      summary: Create a postpaid company donation
      description: >-
        Submits a donation settled monthly against a donation report invoiced
        to the client company, rather than captured immediately by card.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                destination:
                  type: object
                  properties:
                    recipientId:
                      type: string
                    foundationId:
                      type: string
                funds:
                  type: object
                  properties:
                    paymentType:
                      type: string
                    currencyCode:
                      type: string
                    amount:
                      type: integer
                      description: Amount in lowest currency denomination (e.g. cents).
                donor:
                  type: object
                  properties:
                    fullName:
                      type: string
                    email:
                      type: string
                    receipted:
                      type: boolean
                    address:
                      type: object
                metadata:
                  type: object
                  additionalProperties:
                    type: string
                  description: Up to 100 custom key/value pairs.
              required:
              - destination
              - funds
      responses:
        '201':
          description: Donation accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: UUID
                  type:
                    type: string
                    example: donations
                  destination:
                    type: object
                  funds:
                    type: object
                  donor:
                    type: object
                  metadata:
                    type: object
                  state:
                    type: object
                    properties:
                      processingStatus:
                        type: string
                        example: ACCEPTED
                      statusLastUpdated:
                        type: string
                        format: date-time
  /payments/card/transactions:
    post:
      operationId: createCreditCardDonation
      tags:
      - Giving
      summary: Create a prepaid credit card donation
      description: >-
        Captures a donation immediately via a tokenized card payment
        (BlueSnap-backed processor), optionally split across multiple cause
        allocations, with optional Gift Aid (UK) handling.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                companyCode:
                  type: string
                total:
                  type: integer
                currencyCode:
                  type: string
                paymentConfig:
                  type: object
                  properties:
                    token:
                      type: string
                    merchantAccountId:
                      type: string
                    processor:
                      type: string
                      example: BLUESNAP
                cardHolder:
                  type: object
                referenceNumber:
                  type: string
                adapter:
                  type: string
                  example: Adapter.General
                purchaseItems:
                  type: array
                  items:
                    type: object
                    properties:
                      itemTotalAmountCents:
                        type: integer
                      allocations:
                        type: array
                        items:
                          type: object
                          properties:
                            causeCode:
                              type: string
                            amountCents:
                              type: integer
                giftAid:
                  type: boolean
                description:
                  type: string
                softDescriptor:
                  type: string
                payerBusinessName:
                  type: string
              required:
              - companyCode
              - total
              - currencyCode
              - paymentConfig
              - referenceNumber
              - purchaseItems
      responses:
        '201':
          description: Transaction created
          content:
            application/json:
              schema:
                type: object
                properties:
                  transactionId:
                    type: string
                  creditCardId:
                    type: string
                  processorTransactionId:
                    type: string
                  referenceNumber:
                    type: string
                  backendReceiptId:
                    type: string
                  amount:
                    type: object
                    properties:
                      totalAmountCents:
                        type: integer
                      currencyCode:
                        type: string
                  transactionFee:
                    type: number
  /receipts/{backendReceiptId}:
    get:
      operationId: getReceiptPdf
      tags:
      - Receipts
      summary: Download a donation receipt as PDF
      parameters:
      - name: backendReceiptId
        in: path
        required: true
        schema:
          type: string
        example: test_receipt_id_4G801PXR6W
      responses:
        '200':
          description: Receipt PDF
          content:
            application/pdf:
              schema:
                type: string
                format: binary
  /receipts/{backendReceiptId}/email:
    post:
      operationId: emailReceipt
      tags:
      - Receipts
      summary: Email a donation receipt to the donor
      parameters:
      - name: backendReceiptId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
              required:
              - email
      responses:
        '202':
          description: Receipt email queued for delivery
  /search/givingopportunities:
    get:
      operationId: searchGivingOpportunities
      tags:
      - Spark
      summary: Search a company's giving opportunities (Spark API)
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
      - name: search_location
        in: query
        schema:
          type: string
      - name: autocorrect
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: Matching giving opportunities
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        title:
                          type: string
                        description:
                          type: string
                        image_url:
                          type: string
                        creator_id:
                          type: string
                        creator_name:
                          type: string
                        creator_type:
                          type: string
                        peer_match:
                          type: boolean
                        company_match:
                          type: boolean
                        portfolio_code:
                          type: string
                        projects:
                          type: array
                          items:
                            type: object
                        causes:
                          type: array
                          items:
                            type: object
                        snippets:
                          type: array
                          items:
                            type: string
  /search/volunteeropportunities:
    get:
      operationId: searchVolunteerOpportunities
      tags:
      - Spark
      summary: Search a company's volunteer opportunities (Spark API)
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
      - name: search_location
        in: query
        schema:
          type: string
      - name: autocorrect
        in: query
        schema:
          type: boolean
      - name: filter[ends_after]
        in: query
        schema:
          type: string
          format: date-time
      - name: filter[starts_before]
        in: query
        schema:
          type: string
          format: date-time
      - name: filter[minimum_open_spots]
        in: query
        schema:
          type: integer
      - name: filter[has_location]
        in: query
        schema:
          type: boolean
      - name: filter[interests]
        in: query
        schema:
          type: string
      - name: filter[skills]
        in: query
        schema:
          type: string
      - name: filter[temporal_type]
        in: query
        schema:
          type: string
          enum: [ongoing, time_bounded]
      responses:
        '200':
          description: Matching volunteer opportunities
          content:
            application/json:
              schema:
                type: object
                properties:
                  volunteer_opportunities:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        title:
                          type: string
                        description:
                          type: string
                        location_notes:
                          type: string
                        start_timestamp:
                          type: string
                          format: date-time
                        end_timestamp:
                          type: string
                          format: date-time
                        time_zone:
                          type: string
                        cause_id:
                          type: string
                        cause_name:
                          type: string
                        image_url:
                          type: string
                        hero_image_url:
                          type: string
                        cause_logo_url:
                          type: string
                        address:
                          type: object
                        characteristics:
                          type: array
                          items:
                            type: string
                        interests:
                          type: array
                          items:
                            type: string
                        skills:
                          type: array
                          items:
                            type: string
                        shifts:
                          type: array
                          items:
                            type: object
                        geo_coordinates:
                          type: object
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    basicAuth:
      type: http
      scheme: basic