Neon One Orders API

Orders grouping donations, memberships, and store purchases.

OpenAPI Specification

neonone-orders-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Neon CRM API v2 Accounts Orders 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: Orders
  description: Orders grouping donations, memberships, and store purchases.
paths:
  /orders:
    post:
      operationId: createOrder
      tags:
      - Orders
      summary: Create an order
      description: Orders group multiple donations, memberships, and store purchases in a single transaction. Introduced in API v2.1.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderInput'
      responses:
        '200':
          description: The created order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /orders/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the order.
      schema:
        type: string
    get:
      operationId: getOrder
      tags:
      - Orders
      summary: Retrieve an order
      responses:
        '200':
          description: The requested order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteOrder
      tags:
      - Orders
      summary: Delete an order
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/calculate:
    post:
      operationId: calculateOrder
      tags:
      - Orders
      summary: Calculate the total of a prospective order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The calculated order total.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /orders/search:
    post:
      operationId: searchOrders
      tags:
      - Orders
      summary: Search orders
      description: Rate-limited to 1 simultaneous request.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Matching orders.
          content:
            application/json:
              schema:
                type: object
                properties:
                  searchResults:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /orders/shippingMethods:
    post:
      operationId: listShippingMethods
      tags:
      - Orders
      summary: List available shipping methods for an order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: A list of shipping methods.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /orders/{orderId}/payments:
    parameters:
    - name: orderId
      in: path
      required: true
      description: The ID of the order.
      schema:
        type: string
    post:
      operationId: createOrderPayment
      tags:
      - Orders
      summary: Add a payment to an order (checkout)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The created payment.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    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
    Order:
      allOf:
      - $ref: '#/components/schemas/OrderInput'
      - type: object
        properties:
          id:
            type: string
    OrderInput:
      type: object
      required:
      - accountId
      properties:
        accountId:
          type: string
        totalCharge:
          type: number
          format: float
        donations:
          type: array
          items:
            type: object
            additionalProperties: true
        memberships:
          type: array
          items:
            type: object
            additionalProperties: true
        storePurchases:
          type: array
          items:
            type: object
            additionalProperties: true
      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.