Neon One Donations API

Donations, pledges, pledge payments, recurring donations, and soft credits.

OpenAPI Specification

neonone-donations-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Neon CRM API v2 Accounts Donations API
  description: Neon CRM API v2 is a RESTful, JSON-based rebuild of Neon One's legacy API v1, first launched in 2019. It exposes constituent accounts, households, donations, pledges, recurring donations, campaigns, memberships, events, custom fields and custom objects, orders and the online store, volunteers, and webhook subscriptions. All requests use HTTP Basic Authentication with the organization's Org ID as the username and an API key as the password. Neon CRM API v1 and its legacy webhook structure are scheduled to be retired on July 11, 2026; this document covers API v2 only. This is a representative subset of the full v2 surface, grounded in Neon's public developer documentation and version release notes (v2.0 - v2.11), not an exhaustive mirror of every documented endpoint.
  version: '2.11'
  contact:
    name: Neon One Developer Center
    url: https://developer.neoncrm.com/
  license:
    name: Proprietary
    url: https://neonone.com/
servers:
- url: https://api.neoncrm.com/v2
  description: Production and Sandbox
- url: https://trial.z2systems.com/v2
  description: Trial instances
security:
- basicAuth: []
tags:
- name: Donations
  description: Donations, pledges, pledge payments, recurring donations, and soft credits.
paths:
  /donations:
    post:
      operationId: createDonation
      tags:
      - Donations
      summary: Create a donation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DonationInput'
      responses:
        '200':
          description: The created donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /donations/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the donation.
      schema:
        type: string
    get:
      operationId: getDonation
      tags:
      - Donations
      summary: Retrieve a donation
      responses:
        '200':
          description: The requested donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateDonation
      tags:
      - Donations
      summary: Update a donation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DonationInput'
      responses:
        '200':
          description: The updated donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: patchDonation
      tags:
      - Donations
      summary: Partially update a donation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The updated donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Donation'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteDonation
      tags:
      - Donations
      summary: Delete a donation
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /donations/search:
    post:
      operationId: searchDonations
      tags:
      - Donations
      summary: Search donations
      description: Rate-limited to 1 simultaneous request.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Matching donations.
          content:
            application/json:
              schema:
                type: object
                properties:
                  searchResults:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /pledges:
    post:
      operationId: createPledge
      tags:
      - Donations
      summary: Create a pledge
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PledgeInput'
      responses:
        '200':
          description: The created pledge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pledge'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /pledges/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the pledge.
      schema:
        type: string
    get:
      operationId: getPledge
      tags:
      - Donations
      summary: Retrieve a pledge
      responses:
        '200':
          description: The requested pledge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pledge'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updatePledge
      tags:
      - Donations
      summary: Update a pledge
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PledgeInput'
      responses:
        '200':
          description: The updated pledge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pledge'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deletePledge
      tags:
      - Donations
      summary: Delete a pledge
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /pledges/{id}/pledgePayments:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the pledge.
      schema:
        type: string
    get:
      operationId: listPledgePayments
      tags:
      - Donations
      summary: List payments made against a pledge
      responses:
        '200':
          description: A list of pledge payments.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pledgePayments:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createPledgePayment
      tags:
      - Donations
      summary: Create a payment against a pledge
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The created pledge payment.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /pledges/{id}/pledgePayments/{paymentId}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the pledge.
      schema:
        type: string
    - name: paymentId
      in: path
      required: true
      description: The ID of the pledge payment.
      schema:
        type: string
    get:
      operationId: getPledgePayment
      tags:
      - Donations
      summary: Retrieve a pledge payment
      responses:
        '200':
          description: The requested pledge payment.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deletePledgePayment
      tags:
      - Donations
      summary: Delete a pledge payment
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /pledges/{pledgeId}/installments:
    parameters:
    - name: pledgeId
      in: path
      required: true
      description: The ID of the pledge.
      schema:
        type: string
    post:
      operationId: createPledgeInstallment
      tags:
      - Donations
      summary: Create a pledge installment
      description: Added in API v2.3.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The created installment.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /pledges/{pledgeId}/installments/{id}:
    parameters:
    - name: pledgeId
      in: path
      required: true
      description: The ID of the pledge.
      schema:
        type: string
    - name: id
      in: path
      required: true
      description: The ID of the installment.
      schema:
        type: string
    get:
      operationId: getPledgeInstallment
      tags:
      - Donations
      summary: Retrieve a pledge installment
      responses:
        '200':
          description: The requested installment.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updatePledgeInstallment
      tags:
      - Donations
      summary: Update a pledge installment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The updated installment.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deletePledgeInstallment
      tags:
      - Donations
      summary: Delete a pledge installment
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /recurring:
    get:
      operationId: listRecurringDonations
      tags:
      - Donations
      summary: List recurring donation schedules
      responses:
        '200':
          description: A list of recurring donations.
          content:
            application/json:
              schema:
                type: object
                properties:
                  recurringDonations:
                    type: array
                    items:
                      $ref: '#/components/schemas/RecurringDonation'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createRecurringDonation
      tags:
      - Donations
      summary: Create a recurring donation schedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecurringDonation'
      responses:
        '200':
          description: The created recurring donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringDonation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /recurring/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the recurring donation.
      schema:
        type: string
    get:
      operationId: getRecurringDonation
      tags:
      - Donations
      summary: Retrieve a recurring donation schedule
      responses:
        '200':
          description: The requested recurring donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringDonation'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateRecurringDonation
      tags:
      - Donations
      summary: Update a recurring donation schedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecurringDonation'
      responses:
        '200':
          description: The updated recurring donation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecurringDonation'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteRecurringDonation
      tags:
      - Donations
      summary: Cancel/delete a recurring donation schedule
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /softCredits:
    get:
      operationId: listSoftCredits
      tags:
      - Donations
      summary: List soft credits
      description: Added in API v2.3.
      responses:
        '200':
          description: A list of soft credits.
          content:
            application/json:
              schema:
                type: object
                properties:
                  softCredits:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createSoftCredit
      tags:
      - Donations
      summary: Create a soft credit
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The created soft credit.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /softCredits/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the soft credit.
      schema:
        type: string
    get:
      operationId: getSoftCredit
      tags:
      - Donations
      summary: Retrieve a soft credit
      responses:
        '200':
          description: The requested soft credit.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteSoftCredit
      tags:
      - Donations
      summary: Delete a soft credit
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Donation:
      allOf:
      - $ref: '#/components/schemas/DonationInput'
      - type: object
        properties:
          id:
            type: string
          batchNumber:
            type: string
          publicRecognitionName:
            type: string
    PledgeInput:
      type: object
      required:
      - accountId
      - amount
      properties:
        accountId:
          type: string
        amount:
          type: number
          format: float
        matchedDonationId:
          type: string
        expectedDate:
          type: string
          format: date
      additionalProperties: true
    RecurringDonation:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: string
        amount:
          type: number
          format: float
        creditCardOnline:
          type: object
          additionalProperties: true
        ach:
          type: object
          additionalProperties: true
        frequency:
          type: string
      additionalProperties: true
    SearchRequest:
      type: object
      required:
      - searchFields
      - outputFields
      properties:
        searchFields:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              operator:
                type: string
              value:
                type: string
        outputFields:
          type: array
          items:
            type: string
        pagination:
          type: object
          properties:
            currentPage:
              type: integer
            pageSize:
              type: integer
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
    Pledge:
      allOf:
      - $ref: '#/components/schemas/PledgeInput'
      - type: object
        properties:
          id:
            type: string
          pledgeStatus:
            type: string
            enum:
            - open
            - closed
    DonationInput:
      type: object
      required:
      - accountId
      - amount
      properties:
        accountId:
          type: string
        amount:
          type: number
          format: float
        campaign:
          type: object
          additionalProperties: true
        fund:
          type: object
          additionalProperties: true
        purpose:
          type: object
          additionalProperties: true
        tribute:
          type: object
          additionalProperties: true
        solicitor:
          type: array
          items:
            type: object
            properties:
              accountId:
                type: string
              solicitorName:
                type: string
      additionalProperties: true
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid Org ID / API key in the Basic Authorization header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: The rate limit for simultaneous requests to this endpoint was exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Authentication. Username is the Neon CRM organization's Org ID; password is an API key generated for a system user under Settings > User Management.