/v1.0/merchants/{merchant_code}/sales/searchReturns a paginated list of SaleSearchItem rows matching filter criteria. Results are
sorted newest first by sale close date.
Filters from different categories stack with logical AND; multiple values in one array
field stack with logical OR. Results cover the merchant’s last two years of sales
(narrow further with start_date / end_date). Pagination tokens are not interchangeable
with GET /sales.
OAuth scopes: Requires one of: sales.read.
Required permissions:
merchant.read
Path parameters
- maxLength:
30The merchant code.
Example:
"MCZM9TGQ"
Body parameters
application/jsonrequired- start_datestringformat:
date-timeSale created on or after this instant (inclusive).
Example:
"2026-06-01T00:00:00Z" - end_datestringformat:
date-timeSale created on or before this instant (inclusive).
Example:
"2026-06-02T23:59:59Z" - sale_statusesarray<string>Options:
"CLOSED"Filters rows by sale lifecycle (
state). Multiple values match any of them (OR). Uses the same values asSale.state. Non-finalised sales are never returned; only fully-paid sales.Example:
["CLOSED"] - payment_statusesarray<string>Options:
"PAID""CHARGED_BACK"Filters rows by payment outcome. Multiple values match any of them (OR). The search row does not echo this value.
Example:
["PAID"] - sales_channelsarray<string>Options:
"POS""ONLINE_PAYMENTS""KIOSK""ONLINE_STORE""SOLO""ORDER_AND_PAY""INVOICE""BOOKINGS""ORDER_AGGREGATOR""SUBSCRIPTIONS""UNKNOWN"Sales channel filter. Multiple values match any of them (OR).
Example:
["POS"] - pagination_tokenstring
Opaque token from the previous search response. To load the next page, send it with the same filters. Not interchangeable with tokens from
GET /sales.Example:
"66bcbtzelrubzeuzruzgu76678trncH" - pagination_limitintegerminimum:
1maximum:25default:10Maximum number of results per page.
Example:
10
Request examples
Search point-of-sale sales in a date range
{
"start_date": "2026-06-01T00:00:00Z",
"end_date": "2026-06-02T23:59:59Z",
"sales_channels": [
"POS"
],
"pagination_limit": 10
}Responses
200application/json
Successful response with search results.
Example:
[{"id":"dbe3178d-4b83-5024-9b26-9b8e1b280514","state":"CLOSED","tax_mode":"GROSS","currency":{"code":"EUR","scale":2},"name":"Order 1234","total_amount":1250,"created_at":"2026-06-01T14:30:00Z","closed_at":"2026-06-01T14:35:00Z"}]Show 9 properties
Sale identifier.
Example:
"dbe3178d-4b83-5024-9b26-9b8e1b280514"- Options:
"CLOSED"Lifecycle state of the sale. Non-finalised sales are never returned; only fully-paid sales.
Example:
"CLOSED" - Options:
"NO_TAX""GROSS""NET"Checkout tax mode for the sale. Same values as
Sale.tax_mode.Example:
"NO_TAX" The currency of the sale.
Show 2 properties
- format:
iso-4217minLength:3maxLength:33-letter currency code as defined by ISO-4217.
Example:
"EUR" The scaling factor to apply to the value to arrive at the currency's major unit. Providing a scale mitigates changes to the minor unit over time, for example due to inflation. For example, if
scaleis denoted bysandvalueis denoted byvis the value, then one arrives at the major currency value by calculatingv / 10^s.Example:
2
- format:
int64Final sale gross total after discounts and taxes, excluding tips. Same value as
Sale.price.gross_amount, in minor units according tocurrency.scale. Payment amounts include tips and can therefore differ from this total.Example:
1250 - format:
date-timeInstant when the sale was created.
Example:
"2026-06-01T14:30:00Z" - format:
date-timeInstant when the sale was closed. Always present: non-finalised sales are never returned.
Example:
"2026-06-01T14:35:00Z" - user_idstringformat:
uuidIdentity UUID of the cashier who processed the sale. Omitted when the cashier identity is unknown.
Example:
"d6f51684-519b-454c-bdb3-deeb05f52b92" - namestring
Display name of the sale when set; otherwise a concatenation of item names with quantities. Omitted when neither is available.
Example:
"Order 1234"
- pagination_tokenstring
Opaque token for the next page. Pass it as
pagination_tokenin the next search request body with the same filters. Omitted when no further page is available.Example:
"66bcbtzelrubzeuzruzgu76678trncH"
400application/problem+json
Validation error on the request.
- format:
uriA URI reference that identifies the problem type.
Example:
"https://developer.sumup.com/problem/not-found" - titlestring
A short, human-readable summary of the problem type.
Example:
"Requested resource couldn't be found." - statusinteger
The HTTP status code generated by the origin server for this occurrence of the problem.
Example:
404 - detailstring
A human-readable explanation specific to this occurrence of the problem.
Example:
"The requested resource doesn't exist or does not belong to you." - instancestringformat:
uriA URI reference that identifies the specific occurrence of the problem.
401application/problem+json
The client is not authenticated (auth header is empty or invalid).
- format:
uriA URI reference that identifies the problem type.
Example:
"https://developer.sumup.com/problem/not-found" - titlestring
A short, human-readable summary of the problem type.
Example:
"Requested resource couldn't be found." - statusinteger
The HTTP status code generated by the origin server for this occurrence of the problem.
Example:
404 - detailstring
A human-readable explanation specific to this occurrence of the problem.
Example:
"The requested resource doesn't exist or does not belong to you." - instancestringformat:
uriA URI reference that identifies the specific occurrence of the problem.
403application/problem+json
Missing sales.read, merchant code mismatch on the token, or no merchant.read permission.
- format:
uriA URI reference that identifies the problem type.
Example:
"https://developer.sumup.com/problem/not-found" - titlestring
A short, human-readable summary of the problem type.
Example:
"Requested resource couldn't be found." - statusinteger
The HTTP status code generated by the origin server for this occurrence of the problem.
Example:
404 - detailstring
A human-readable explanation specific to this occurrence of the problem.
Example:
"The requested resource doesn't exist or does not belong to you." - instancestringformat:
uriA URI reference that identifies the specific occurrence of the problem.
412application/problem+json
User-Agent header is not present or is empty.
- format:
uriA URI reference that identifies the problem type.
Example:
"https://developer.sumup.com/problem/not-found" - titlestring
A short, human-readable summary of the problem type.
Example:
"Requested resource couldn't be found." - statusinteger
The HTTP status code generated by the origin server for this occurrence of the problem.
Example:
404 - detailstring
A human-readable explanation specific to this occurrence of the problem.
Example:
"The requested resource doesn't exist or does not belong to you." - instancestringformat:
uriA URI reference that identifies the specific occurrence of the problem.