Search Sales Order
POST /accounting/sales-orders/search
Group: Accounting › Sales Orders · Operation ID: searchSalesOrder
Search sales orders by id, order number, type, approval status, purchase order, legal entity or external identifier, and page through the matches. POST so the filters travel in the JSON body rather than the URL. Read-only. Returns the full order header for each match; matching nothing is an empty items array with HTTP 200, not a 404. Every request must carry the Api-Version header.
Open in the interactive reference
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | "v1" |
yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
Request body
Required, application/json: searchSalesOrderInput.
| Field | Type | Required | Description |
|---|---|---|---|
filters |
object | no | Search filters, nested as one object so they map onto the POST body. All are optional and are ANDed; omitting every one of them matches all sales orders. |
filters.id |
string | no | Exact match on a sales order's id (a UUID). This is how a single known order is fetched. |
filters.orderNumber |
string | no | Exact match on the system-assigned sales-order number. |
filters.orderType |
string | no | Restrict to orders of this type. An OrderType member; any other value yields an empty page. |
filters.approvalStatus |
string | no | Restrict to orders in this approval state. An ApprovalStatus member; any other value yields an empty page. |
filters.purchaseOrder |
string | no | Exact match on the customer's purchase-order reference. In the body because it is a customer-supplied string, not a system identifier. |
filters.entityId |
string | no | Restrict to orders owned by this legal entity, given as the entity id (a UUID). An id that matches no entity yields an empty page, not an error. |
filters.externalIdentifier |
object | no | Match one identifier owned by another system. Both members are required: a fieldName on its own would match every value stored under that key. Not unique across orders, so this returns the ordinary items array. |
filters.externalIdentifier.fieldName |
string | yes | Configured key of the external identifier — a stable camelCase slug such as 'netsuiteSoNumber'. Must match an active SalesOrderExternalIdentifierConfiguration or the call fails with UNKNOWN_EXTERNAL_IDENTIFIER. |
filters.externalIdentifier.value |
string | yes | The identifier as the source system holds it. Matched exactly, case-sensitively. |
page |
object | no | Pagination controls. Omit for the first page. |
page.cursor |
string | no | Opaque forward cursor from a previous response's pagination.nextCursor; omit for the first page. Do not construct manually. |
page.size |
number | no | Maximum number of orders to return. Defaults to 50, capped at 200; the server may return fewer, but never more. |
Example:
{
"filters": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orderNumber": "<orderNumber>",
"orderType": "<orderType>",
"approvalStatus": "<approvalStatus>",
"purchaseOrder": "<purchaseOrder>",
"entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"externalIdentifier": {
"fieldName": "<fieldName>",
"value": "<value>"
}
},
"page": {
"cursor": "<cursor>",
"size": 0
}
}
Response
200 Success
Under data (searchSalesOrderOutput):
| Field | Type | Required | Description |
|---|---|---|---|
items |
array of object | yes | Matching sales orders for this page, newest first. Empty when nothing matches. Same item schema as get/v1. |
items[].id |
string | yes | Id of the sales order (a UUID) — the public identifier used by GET accounting/sales-orders/:id. |
items[].orderNumber |
string | yes | System-assigned sales-order number. Human-readable reference used on invoices and proposals. |
items[].orderType |
string | no | Type of sales order, e.g. new business, renewal, expansion, downgrade. |
items[].approvalStatus |
string | no | Approval state of the order. An ApprovalStatus member, e.g. 'draft', 'pendingApproval', 'approved'. |
items[].bookDate |
string (date) | yes | Date the order was booked (YYYY-MM-DD). Drives revenue-recognition period assignment. |
items[].serviceStartDate |
string (date) | no | First date services or products under this order are delivered (YYYY-MM-DD). |
items[].serviceEndDate |
string (date) | no | Last date services or products under this order are delivered (YYYY-MM-DD). Absent for evergreen orders. |
items[].signDate |
string (date) | no | Date the order was signed (YYYY-MM-DD), when recorded. |
items[].salesEffectiveDate |
string (date) | no | Date the order becomes effective for sales reporting (YYYY-MM-DD), when recorded. |
items[].isEvergreen |
boolean | no | True when the order renews indefinitely rather than ending on serviceEndDate. |
items[].excludeFromTaxEngine |
boolean | no | When true, invoices, credit memos and debit memos from this order are never submitted to the tax engine. |
items[].term |
string (decimal) | no | Contract term length in months. Absent for evergreen (open-ended) orders. |
items[].currency |
string | yes | ISO 4217 three-letter currency code (e.g. USD, EUR, GBP) the order is denominated in. |
items[].totalContract |
string (decimal) | no | Total contract value across all line items, in the order currency (see currency). |
items[].invoicedAmount |
string (decimal) | no | Amount already invoiced against the contract value, in the order currency (see currency). The remaining backlog is totalContract − invoicedAmount. |
items[].oneTimeDiscountAmount |
string (decimal) | no | Lump-sum discount applied to the entire order, in the order currency (see currency). |
items[].oneTimeDiscountAllocation |
string | no | How the lump-sum discount is allocated across products. One of 'firstInvoice', 'alignToInvoiceFrequency'. |
items[].paymentTerm |
string | no | Payment-term identifier or display name applied to invoices from this order. |
items[].purchaseOrder |
string | no | The customer's own purchase-order reference for this order, when supplied. |
items[].memo |
string | no | Free-text memo recorded on the order. |
items[].crmContractId |
string | no | Identifier of the originating contract in the CRM, when the order came from one. |
items[].salesArrangement |
string | no | Number of the sales arrangement this order belongs to. |
items[].salesArrangementId |
string | no | Id of that sales arrangement (a UUID) — the form a write action accepts. |
items[].paymentTermId |
string | no | Id of the payment term (a UUID). paymentTerm carries its code; this is the form a write action accepts. |
items[].opportunityId |
string | no | Identifier of the opportunity this order came from, as issued by the CRM — not an id from this API. |
items[].opportunityName |
string | no | Name of that CRM opportunity. |
items[].dataSource |
string | no | System the order originated in when it was integrated rather than entered here, e.g. 'Salesforce'. |
items[].priceBookId |
string | no | Id of the price book this order's prices were taken from (a UUID). |
items[].priceBookName |
string | no | Name of that price book, denormalised onto the order. |
items[].externalizedInvoicing |
boolean | no | True when invoicing for this order happens in another system, so no invoices are generated from it here. |
items[].customer |
object | yes | Customer denormalised from the linked Customer record (key fields only). Fetch the full record from GET accounting/customers/:id. |
items[].customer.id |
string | yes | Id of the customer (a UUID). |
items[].customer.customerNumber |
string | no | System-assigned customer reference number. |
items[].customer.name |
string | yes | Legal or business name of the customer. |
items[].customer.invoiceEmail |
string | no | Email that receives invoices for this customer. |
items[].customer.mainEmail |
string | no | Primary business contact email for the customer. |
items[].customer.segment |
string | no | Market-segment classification. One of 'SMB', 'MidMarket', 'Enterprise'. |
items[].customer.taxExempt |
boolean | no | True if the customer is exempt from tax on all transactions. |
items[].entityId |
string | yes | Id of the legal entity that owns this sales order (a UUID). |
items[].entityName |
string | no | Name of the owning legal entity. |
items[].entityNumber |
string | yes | System-assigned number of the legal entity that owns this order. |
items[].soldToAddress |
object | yes | Sold-to address used for tax determination on this order. |
items[].soldToAddress.addressId |
string | no | Id of the address record (a UUID), when one is stored. |
items[].soldToAddress.line1 |
string | yes | Street address line 1: number, street name, or PO box. |
items[].soldToAddress.line2 |
string | no | Apartment, suite, unit, building, floor, etc. |
items[].soldToAddress.city |
string | yes | City or locality. |
items[].soldToAddress.stateProvince |
string | no | State, province, or region. |
items[].soldToAddress.country |
string | yes | Country name or ISO 3166-1 country code. |
items[].soldToAddress.zipCode |
string | yes | Postal code or ZIP code as required by the country postal system. |
items[].billToAddress |
object | yes | Bill-to address where invoices from this order are sent. |
items[].billToAddress.addressId |
string | no | Id of the address record (a UUID), when one is stored. |
items[].billToAddress.line1 |
string | yes | Street address line 1: number, street name, or PO box. |
items[].billToAddress.line2 |
string | no | Apartment, suite, unit, building, floor, etc. |
items[].billToAddress.city |
string | yes | City or locality. |
items[].billToAddress.stateProvince |
string | no | State, province, or region. |
items[].billToAddress.country |
string | yes | Country name or ISO 3166-1 country code. |
items[].billToAddress.zipCode |
string | yes | Postal code or ZIP code as required by the country postal system. |
items[].subscriptions |
array of object | yes | Subscriptions on the order, one entry per subscription, each with the product lines that belong to it. Mirrors the subscriptions[] the create action takes. |
items[].subscriptions[].id |
string | no | Id of the subscription (a UUID). Absent when the line records only a subscription number. |
items[].subscriptions[].subscriptionNumber |
string (decimal) | no | System-assigned subscription number. |
items[].subscriptions[].externalSubscriptionId |
string | no | The subscribing system's own id for this subscription, when the order was integrated from one. |
items[].subscriptions[].termType |
string | no | Whether the subscription runs to a fixed end date or renews indefinitely. One of 'termed', 'evergreen'. |
items[].subscriptions[].autoRenew |
boolean | no | True when the subscription renews automatically at the end of its term. |
items[].subscriptions[].serviceStartDate |
string (date) | no | First date the subscription delivers service (YYYY-MM-DD). |
items[].subscriptions[].serviceEndDate |
string (date) | no | Last date the subscription delivers service (YYYY-MM-DD). Absent while evergreen. Create takes a term in months instead; this is what that term resolved to. |
items[].subscriptions[].products |
array of object | yes | Product lines in this subscription. Each entry is a SalesOrderProductLine and may carry tiered pricing, rate-card pricing, ramp deals, or per-item breakdowns. |
items[].subscriptions[].products[].productCode |
string | yes | Company-specific code of the product. |
items[].subscriptions[].products[].productId |
string | yes | Id of the product (a UUID). |
items[].subscriptions[].products[].productLineId |
string | yes | Id of the product line under the product (a UUID). |
items[].subscriptions[].products[].productName |
string | no | Product name as recorded on this line. May differ from the product's current name — the line keeps the name it was sold under. |
items[].subscriptions[].products[].salesOrderProductLineId |
string | no | Id of this sales-order line (a UUID). |
items[].subscriptions[].products[].quantity |
string (decimal) | yes | Quantity of the product on this line. For ramp deals the per-period quantity is on each ramp instead. |
items[].subscriptions[].products[].listPrice |
string (decimal) | no | Per-unit list price before discounts. |
items[].subscriptions[].products[].unitPrice |
string (decimal) | no | Per-unit price after discounts. Equals listPrice − discountAmount, or listPrice * (1 − discountPercentage/100). |
items[].subscriptions[].products[].totalPrice |
string (decimal) | no | Total price for this line (unitPrice * quantity). |
items[].subscriptions[].products[].discountAmount |
string (decimal) | no | Per-unit discount in the order currency. |
items[].subscriptions[].products[].discountPercentage |
string (decimal) | no | Per-unit discount as a percentage (e.g. 10 for 10%). |
items[].subscriptions[].products[].invoiceFrequency |
string | no | How often invoices are generated for this line, e.g. monthly, quarterly, annually. |
items[].subscriptions[].products[].invoiceTiming |
string | no | Whether each invoice for this line is raised at the start or the end of the period it covers. One of 'inAdvance', 'inArrears'. |
items[].subscriptions[].products[].lineInvoiceDay |
string | no | Which day of the period the invoice is dated, e.g. 'firstDayOfMonth', 'specificDay', 'serviceStartDate'. |
items[].subscriptions[].products[].priceModel |
string | no | How the price is derived from quantity, e.g. 'flatFee', 'perUnit', 'tiered', 'volume'. Tiered and volume models carry their bands in tiers. |
items[].subscriptions[].products[].unitOfMeasure |
string | no | Unit the quantity is counted in, e.g. 'each', 'user', 'gigabyte'. |
items[].subscriptions[].products[].pricingTerm |
string | no | Period the unit price is quoted for, e.g. 'monthly', 'annual' — the basis prices are normalised to before invoicing. |
items[].subscriptions[].products[].serviceStartDate |
string (date) | no | First date services for this product are delivered (YYYY-MM-DD). Defaults to the order-level serviceStartDate. |
items[].subscriptions[].products[].serviceEndDate |
string (date) | no | Last date services for this product are delivered (YYYY-MM-DD). Defaults to the order-level serviceEndDate. |
items[].subscriptions[].products[].externalIdentifiers |
array of object | yes | External identifiers recorded against this line, one per configured field. Empty when none are. |
items[].subscriptions[].products[].externalIdentifiers[].fieldName |
string | yes | Configured field the identifier belongs to, e.g. 'salesforceLineId'. |
items[].subscriptions[].products[].externalIdentifiers[].value |
string | yes | The identifier's value in that external system. |
items[].subscriptions[].products[].externalIdentifiers[].externalUrl |
string | no | Deep link to the record in that system, when the configuration defines one. |
items[].subscriptions[].products[].overage |
object | no | Overage pricing for usage above the line's allowance. Present only when the product line has an allowance configured. |
items[].subscriptions[].products[].overage.listPrice |
string (decimal) | no | Per-unit list price for overage usage. |
items[].subscriptions[].products[].overage.unitPrice |
string (decimal) | no | Per-unit price for overage usage after discounts. |
items[].subscriptions[].products[].overage.discountAmount |
string (decimal) | no | Per-unit overage discount in the order currency. |
items[].subscriptions[].products[].overage.discountPercentage |
string (decimal) | no | Per-unit overage discount as a percentage. |
items[].subscriptions[].products[].rateCardEntries |
array of object | no | Rate-card rows for this line. Present when the product line uses rate-card pricing. |
items[].subscriptions[].products[].rateCardEntries[].id |
string | yes | Id of this rate-card entry (a UUID). |
items[].subscriptions[].products[].rateCardEntries[].identifier |
string | no | BillableComponent identifier this rate-card row meters. |
items[].subscriptions[].products[].rateCardEntries[].label |
string | no | Free-text label for this rate-card row, used as an additional discriminator alongside the identifier. |
items[].subscriptions[].products[].rateCardEntries[].unitOfMeasure |
string | yes | Unit in which this rate-card row is priced. |
items[].subscriptions[].products[].rateCardEntries[].unitPrice |
string (decimal) | yes | Per-unit rate negotiated for this order. |
items[].subscriptions[].products[].rateCardEntries[].currency |
string | yes | ISO 4217 currency code for this rate-card row. |
items[].subscriptions[].products[].tiers |
array of object | no | Pricing tiers for this product line. Present only for tiered, volume or stairstep price models. |
items[].subscriptions[].products[].tiers[].fromQuantity |
string (decimal) | yes | Lower bound of the quantity range (inclusive). |
items[].subscriptions[].products[].tiers[].toQuantity |
string (decimal) | no | Upper bound of the quantity range (inclusive). Absent on an open-ended last tier. |
items[].subscriptions[].products[].tiers[].unitPrice |
string (decimal) | yes | Per-unit price for quantities in this tier. |
items[].subscriptions[].products[].tiers[].listPrice |
string (decimal) | no | Per-unit list price before discount. |
items[].subscriptions[].products[].tiers[].priceModel |
string | no | Per-tier price model. One of 'flat', 'perUnit'. |
items[].subscriptions[].products[].tags |
array of object | no | Value-accounting tags applied to this product, as dimension/value pairs. Tags propagate to journal-entry lines for dimensional reporting. |
items[].subscriptions[].products[].tags[].dimension |
string | yes | Tag dimension name, e.g. 'Department', 'Project'. |
items[].subscriptions[].products[].tags[].value |
string | yes | Value within the dimension, e.g. 'Engineering', 'Alpha-2026'. |
items[].subscriptions[].products[].items |
array of object | no | Per-item breakdown: one entry per SalesOrderProductItem (product x inventory item) under this sales-order product. Present only for inventory-tracked products. |
items[].subscriptions[].products[].items[].id |
string | yes | Id of this SalesOrderProductItem junction record (a UUID). |
items[].subscriptions[].products[].items[].itemId |
string | no | Id of the linked inventory item (a UUID). Absent when the record has no item set. |
items[].subscriptions[].products[].items[].itemCode |
string | no | Item code from ItemMaster. |
items[].subscriptions[].products[].items[].itemName |
string | no | Item name from ItemMaster. |
items[].subscriptions[].products[].items[].productName |
string | no | Product name denormalised from the parent SalesOrderProduct. |
items[].subscriptions[].products[].items[].itemOrdered |
string (decimal) | yes | Ordered quantity for this item, after explosion: line quantity x product-item quantity. |
items[].subscriptions[].products[].items[].totalShipped |
string (decimal) | no | Sum of shipped quantity across all linked SalesOrderShipmentItems. |
items[].subscriptions[].products[].rampDeal |
object | no | Ramp-deal definition. Present only when the product is a ramp deal; ramps echo the persisted SalesOrderProductLine records. |
items[].subscriptions[].products[].rampDeal.interval |
string | yes | Ramp interval mode. One of 'annually', 'specificDates'. |
items[].subscriptions[].products[].rampDeal.invoiceTiming |
string | yes | Ramp invoice timing. One of 'perInterval', 'allAtOnce'. |
items[].subscriptions[].products[].rampDeal.ramps |
array of object | yes | Persisted ramps, ordered by start date. At least two. |
items[].subscriptions[].products[].rampDeal.ramps[].serviceStartDate |
string (date) | yes | First date this ramp's services are delivered (YYYY-MM-DD). |
items[].subscriptions[].products[].rampDeal.ramps[].serviceEndDate |
string (date) | yes | Last date this ramp's services are delivered (YYYY-MM-DD). |
items[].subscriptions[].products[].rampDeal.ramps[].quantity |
string (decimal) | yes | Quantity for this ramp period. |
items[].subscriptions[].products[].rampDeal.ramps[].listPrice |
string (decimal) | no | Per-unit list price for this ramp before discount. |
items[].subscriptions[].products[].rampDeal.ramps[].unitPrice |
string (decimal) | no | Per-unit price for this ramp after discount. |
items[].subscriptions[].products[].rampDeal.ramps[].invoiceFrequency |
string | no | How often this ramp is invoiced. |
items[].subscriptions[].products[].prepaidConfiguration |
object | no | Prepaid balance details for this product. Absent when the product is not configured as prepaid. |
items[].subscriptions[].products[].prepaidConfiguration.overConsumptionBehavior |
string | yes | Behaviour when consumption exceeds the remaining prepaid balance. One of 'allowNegative' (balance may go negative and is reconciled at renewal) or 'overage' (usage beyond the balance switches to pay-as-you-go invoicing). |
items[].subscriptions[].products[].prepaidConfiguration.rolloverAtRenewal |
boolean | yes | Whether any unused balance carries forward when the subscription renews. |
items[].subscriptions[].products[].prepaidConfiguration.balance |
string (decimal) | no | Remaining prepaid quantity for this product. Decreases as consumption is applied. |
items[].subscriptions[].products[].prepaidConfiguration.consumedAmount |
string (decimal) | no | Total quantity consumed from the prepaid balance to date. |
items[].nonSubscriptionProducts |
array of object | yes | One-time and other non-subscription product lines on the order, e.g. one-off services or perpetual licences. Same line schema as a subscription's products. |
items[].nonSubscriptionProducts[].productCode |
string | yes | Company-specific code of the product. |
items[].nonSubscriptionProducts[].productId |
string | yes | Id of the product (a UUID). |
items[].nonSubscriptionProducts[].productLineId |
string | yes | Id of the product line under the product (a UUID). |
items[].nonSubscriptionProducts[].productName |
string | no | Product name as recorded on this line. May differ from the product's current name — the line keeps the name it was sold under. |
items[].nonSubscriptionProducts[].salesOrderProductLineId |
string | no | Id of this sales-order line (a UUID). |
items[].nonSubscriptionProducts[].quantity |
string (decimal) | yes | Quantity of the product on this line. For ramp deals the per-period quantity is on each ramp instead. |
items[].nonSubscriptionProducts[].listPrice |
string (decimal) | no | Per-unit list price before discounts. |
items[].nonSubscriptionProducts[].unitPrice |
string (decimal) | no | Per-unit price after discounts. Equals listPrice − discountAmount, or listPrice * (1 − discountPercentage/100). |
items[].nonSubscriptionProducts[].totalPrice |
string (decimal) | no | Total price for this line (unitPrice * quantity). |
items[].nonSubscriptionProducts[].discountAmount |
string (decimal) | no | Per-unit discount in the order currency. |
items[].nonSubscriptionProducts[].discountPercentage |
string (decimal) | no | Per-unit discount as a percentage (e.g. 10 for 10%). |
items[].nonSubscriptionProducts[].invoiceFrequency |
string | no | How often invoices are generated for this line, e.g. monthly, quarterly, annually. |
items[].nonSubscriptionProducts[].invoiceTiming |
string | no | Whether each invoice for this line is raised at the start or the end of the period it covers. One of 'inAdvance', 'inArrears'. |
items[].nonSubscriptionProducts[].lineInvoiceDay |
string | no | Which day of the period the invoice is dated, e.g. 'firstDayOfMonth', 'specificDay', 'serviceStartDate'. |
items[].nonSubscriptionProducts[].priceModel |
string | no | How the price is derived from quantity, e.g. 'flatFee', 'perUnit', 'tiered', 'volume'. Tiered and volume models carry their bands in tiers. |
items[].nonSubscriptionProducts[].unitOfMeasure |
string | no | Unit the quantity is counted in, e.g. 'each', 'user', 'gigabyte'. |
items[].nonSubscriptionProducts[].pricingTerm |
string | no | Period the unit price is quoted for, e.g. 'monthly', 'annual' — the basis prices are normalised to before invoicing. |
items[].nonSubscriptionProducts[].serviceStartDate |
string (date) | no | First date services for this product are delivered (YYYY-MM-DD). Defaults to the order-level serviceStartDate. |
items[].nonSubscriptionProducts[].serviceEndDate |
string (date) | no | Last date services for this product are delivered (YYYY-MM-DD). Defaults to the order-level serviceEndDate. |
items[].nonSubscriptionProducts[].externalIdentifiers |
array of object | yes | External identifiers recorded against this line, one per configured field. Empty when none are. |
items[].nonSubscriptionProducts[].externalIdentifiers[].fieldName |
string | yes | Configured field the identifier belongs to, e.g. 'salesforceLineId'. |
items[].nonSubscriptionProducts[].externalIdentifiers[].value |
string | yes | The identifier's value in that external system. |
items[].nonSubscriptionProducts[].externalIdentifiers[].externalUrl |
string | no | Deep link to the record in that system, when the configuration defines one. |
items[].nonSubscriptionProducts[].overage |
object | no | Overage pricing for usage above the line's allowance. Present only when the product line has an allowance configured. |
items[].nonSubscriptionProducts[].overage.listPrice |
string (decimal) | no | Per-unit list price for overage usage. |
items[].nonSubscriptionProducts[].overage.unitPrice |
string (decimal) | no | Per-unit price for overage usage after discounts. |
items[].nonSubscriptionProducts[].overage.discountAmount |
string (decimal) | no | Per-unit overage discount in the order currency. |
items[].nonSubscriptionProducts[].overage.discountPercentage |
string (decimal) | no | Per-unit overage discount as a percentage. |
items[].nonSubscriptionProducts[].rateCardEntries |
array of object | no | Rate-card rows for this line. Present when the product line uses rate-card pricing. |
items[].nonSubscriptionProducts[].rateCardEntries[].id |
string | yes | Id of this rate-card entry (a UUID). |
items[].nonSubscriptionProducts[].rateCardEntries[].identifier |
string | no | BillableComponent identifier this rate-card row meters. |
items[].nonSubscriptionProducts[].rateCardEntries[].label |
string | no | Free-text label for this rate-card row, used as an additional discriminator alongside the identifier. |
items[].nonSubscriptionProducts[].rateCardEntries[].unitOfMeasure |
string | yes | Unit in which this rate-card row is priced. |
items[].nonSubscriptionProducts[].rateCardEntries[].unitPrice |
string (decimal) | yes | Per-unit rate negotiated for this order. |
items[].nonSubscriptionProducts[].rateCardEntries[].currency |
string | yes | ISO 4217 currency code for this rate-card row. |
items[].nonSubscriptionProducts[].tiers |
array of object | no | Pricing tiers for this product line. Present only for tiered, volume or stairstep price models. |
items[].nonSubscriptionProducts[].tiers[].fromQuantity |
string (decimal) | yes | Lower bound of the quantity range (inclusive). |
items[].nonSubscriptionProducts[].tiers[].toQuantity |
string (decimal) | no | Upper bound of the quantity range (inclusive). Absent on an open-ended last tier. |
items[].nonSubscriptionProducts[].tiers[].unitPrice |
string (decimal) | yes | Per-unit price for quantities in this tier. |
items[].nonSubscriptionProducts[].tiers[].listPrice |
string (decimal) | no | Per-unit list price before discount. |
items[].nonSubscriptionProducts[].tiers[].priceModel |
string | no | Per-tier price model. One of 'flat', 'perUnit'. |
items[].nonSubscriptionProducts[].tags |
array of object | no | Value-accounting tags applied to this product, as dimension/value pairs. Tags propagate to journal-entry lines for dimensional reporting. |
items[].nonSubscriptionProducts[].tags[].dimension |
string | yes | Tag dimension name, e.g. 'Department', 'Project'. |
items[].nonSubscriptionProducts[].tags[].value |
string | yes | Value within the dimension, e.g. 'Engineering', 'Alpha-2026'. |
items[].nonSubscriptionProducts[].items |
array of object | no | Per-item breakdown: one entry per SalesOrderProductItem (product x inventory item) under this sales-order product. Present only for inventory-tracked products. |
items[].nonSubscriptionProducts[].items[].id |
string | yes | Id of this SalesOrderProductItem junction record (a UUID). |
items[].nonSubscriptionProducts[].items[].itemId |
string | no | Id of the linked inventory item (a UUID). Absent when the record has no item set. |
items[].nonSubscriptionProducts[].items[].itemCode |
string | no | Item code from ItemMaster. |
items[].nonSubscriptionProducts[].items[].itemName |
string | no | Item name from ItemMaster. |
items[].nonSubscriptionProducts[].items[].productName |
string | no | Product name denormalised from the parent SalesOrderProduct. |
items[].nonSubscriptionProducts[].items[].itemOrdered |
string (decimal) | yes | Ordered quantity for this item, after explosion: line quantity x product-item quantity. |
items[].nonSubscriptionProducts[].items[].totalShipped |
string (decimal) | no | Sum of shipped quantity across all linked SalesOrderShipmentItems. |
items[].nonSubscriptionProducts[].rampDeal |
object | no | Ramp-deal definition. Present only when the product is a ramp deal; ramps echo the persisted SalesOrderProductLine records. |
items[].nonSubscriptionProducts[].rampDeal.interval |
string | yes | Ramp interval mode. One of 'annually', 'specificDates'. |
items[].nonSubscriptionProducts[].rampDeal.invoiceTiming |
string | yes | Ramp invoice timing. One of 'perInterval', 'allAtOnce'. |
items[].nonSubscriptionProducts[].rampDeal.ramps |
array of object | yes | Persisted ramps, ordered by start date. At least two. |
items[].nonSubscriptionProducts[].rampDeal.ramps[].serviceStartDate |
string (date) | yes | First date this ramp's services are delivered (YYYY-MM-DD). |
items[].nonSubscriptionProducts[].rampDeal.ramps[].serviceEndDate |
string (date) | yes | Last date this ramp's services are delivered (YYYY-MM-DD). |
items[].nonSubscriptionProducts[].rampDeal.ramps[].quantity |
string (decimal) | yes | Quantity for this ramp period. |
items[].nonSubscriptionProducts[].rampDeal.ramps[].listPrice |
string (decimal) | no | Per-unit list price for this ramp before discount. |
items[].nonSubscriptionProducts[].rampDeal.ramps[].unitPrice |
string (decimal) | no | Per-unit price for this ramp after discount. |
items[].nonSubscriptionProducts[].rampDeal.ramps[].invoiceFrequency |
string | no | How often this ramp is invoiced. |
items[].nonSubscriptionProducts[].prepaidConfiguration |
object | no | Prepaid balance details for this product. Absent when the product is not configured as prepaid. |
items[].nonSubscriptionProducts[].prepaidConfiguration.overConsumptionBehavior |
string | yes | Behaviour when consumption exceeds the remaining prepaid balance. One of 'allowNegative' (balance may go negative and is reconciled at renewal) or 'overage' (usage beyond the balance switches to pay-as-you-go invoicing). |
items[].nonSubscriptionProducts[].prepaidConfiguration.rolloverAtRenewal |
boolean | yes | Whether any unused balance carries forward when the subscription renews. |
items[].nonSubscriptionProducts[].prepaidConfiguration.balance |
string (decimal) | no | Remaining prepaid quantity for this product. Decreases as consumption is applied. |
items[].nonSubscriptionProducts[].prepaidConfiguration.consumedAmount |
string (decimal) | no | Total quantity consumed from the prepaid balance to date. |
items[].lastModifiedDate |
string (date-time) | yes | Instant the order last changed, as ISO 8601 UTC (YYYY-MM-DDTHH:mm:ss.sssZ). Poll on this to sync incrementally rather than re-reading the whole collection. |
items[].externalIdentifiers |
array of object | no | External identifiers owned by other systems. At most one entry per fieldName. Absent when the order has none; an omitted field and [] are equivalent. |
items[].externalIdentifiers[].fieldName |
string | yes | Configured key of the external identifier — a stable camelCase slug such as 'netsuiteSoNumber', not the human-readable label. Must match an active SalesOrderExternalIdentifierConfiguration. |
items[].externalIdentifiers[].value |
string | yes | The identifier as the source system holds it. |
items[].externalIdentifiers[].externalUrl |
string | no | Absolute http(s) link to the object in the originating system, when one is stored. |
pagination |
object | yes | Pagination cursor for this page. |
pagination.nextCursor |
string | no | Opaque cursor to pass as page.cursor for the next page; absent on the last page. |
pagination.hasMore |
boolean | yes | True when more matches remain beyond this page. |
Errors
| Code | Status |
|---|---|
UNKNOWN_EXTERNAL_IDENTIFIER |
400 |
Statuses
400— Invalid request or business failure. Codes: UNKNOWN_EXTERNAL_IDENTIFIER401— Missing or invalid access token403— Not authorized404— Not found429— Too many requests500— Internal server error