List customers
Operation ID: customers
Group: Accounting › Customers
Open in the interactive reference
GET /accounting/customers
Read-only: Reads and returns; changes nothing.
Lists customers. To filter by customer number, name, legal entity, or external identifier, use POST accounting/customers/search.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · 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. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecustomerType— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likepartnerType— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likebusinessType— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecustomerSegment— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likesalesChannel— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeentityId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeglobalParentId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likedefaultCurrency— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, liketaxExempt— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenpaymentTermLabel— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecountry— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, customerName, customerType, businessType, customerSegment, defaultCurrency, taxExempt, paymentTermLabel, exemptionNumber, invoiceEmail, lastModifiedDate
- Selectable: id, customerNumber, customerName, customerCode, customerType, partnerType, businessType, customerSegment, status, salesChannel, entityId, entityName, globalParentId, globalParentName, defaultCurrency, taxExempt, paymentTermLabel, exemptionNumber, invoiceEmail, country, stateProvince, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of customersRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the customer. |
customerNumber |
string | null | no | no | no | The customer number. Example: 'CUS-789012'. |
customerName |
string | no | no | yes | The name of the customer, as it appears on invoices. |
customerCode |
string | null | no | no | no | Customer code as maintained by whoever set the record up — a human-readable key that is not the system-assigned customerNumber, and absent where nobody assigned one. Do not treat it as unique unless the tenant maintains it that way. Returned only — it can be neither filtered nor sorted on. |
customerType |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The customer type. Possible values: 'default' (a direct customer), 'partner' (a reseller or third-party payer that is invoiced for its end customers), 'endCustomer' (a customer that buys through a partner). |
partnerType |
"reseller" | "thirdPartyPayer" | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | Partner type, set only when customerType is 'partner'. |
businessType |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The business type of the customer. Possible values: 'company', 'individual'. |
customerSegment |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The market segment of the customer. Possible values: 'SMB', 'MidMarket', 'Enterprise'. Absent when businessType is 'individual'. |
status |
"active" | "inactive" | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | Whether the customer record is active. This is the record's own state and says nothing about trading: an active customer may have no order and no receivable, and an inactive one may still carry an open balance. A report counting customers by commercial activity reads sales orders or invoices instead, and says which. |
salesChannel |
"salesAssisted" | "selfServe" | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | How the customer was sold to. |
entityId |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The legal entity that owns this customer. |
entityName |
string | null | no | no | no | The name of the legal entity that invoices this customer. |
globalParentId |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The top-level customer of the hierarchy this customer belongs to — the customer itself when it is the top. Absent when the customer belongs to no hierarchy. The id rather than the name, so a hierarchy can be traversed rather than only grouped. |
globalParentName |
string | null | no | no | no | Display name of the global parent customer. Returned only — it can be neither filtered nor sorted on. |
defaultCurrency |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The default currency for the customer's transactions, as a 3-letter ISO 4217 code. |
taxExempt |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | Whether the customer is exempt from tax. |
paymentTermLabel |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The display name of the payment term applied to the customer's invoices. See label on GET accounting/payment-terms. |
exemptionNumber |
string | null | no | no | yes | The tax-exemption certificate number. Absent when taxExempt is false. |
invoiceEmail |
string | null | no | no | yes | The email address invoices are sent to. |
country |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | ISO 3166 country code of the customer's DEFAULT sold-to address — the country a report groups or maps by. A customer with several addresses is counted once, at the default sold-to; absent when no default sold-to address is on file, which is a gap in the record rather than a customer without a country. The full address is on GET accounting/customers/:id. |
stateProvince |
string | null | no | no | no | State or province of the same default sold-to address. The spelling is NOT uniform: most values are ISO 3166-2 subdivision codes (US-CA, GB-ENG) and some are plain names (Idaho, Virginia), because the address record accepts either. A filter written for one form misses the other, and grouping by this field splits one state into two — normalise first, or group by country instead. Absent where the address carries no state. |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the customer record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"customerNumber": "<customerNumber>",
"customerName": "<customerName>",
"customerCode": "<customerCode>",
"customerType": "<customerType>",
"partnerType": "reseller",
"businessType": "<businessType>",
"customerSegment": "<customerSegment>",
"status": "active",
"salesChannel": "salesAssisted",
"entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entityName": "<entityName>",
"globalParentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"globalParentName": "<globalParentName>",
"defaultCurrency": "<defaultCurrency>",
"taxExempt": true,
"paymentTermLabel": "<paymentTermLabel>",
"exemptionNumber": "<exemptionNumber>",
"invoiceEmail": "<invoiceEmail>",
"country": "<country>",
"stateProvince": "<stateProvince>",
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error