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.