Searches sales

POST/v1.0/merchants/{merchant_code}/sales/search

Returns 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

Authorization

Use one of the following alternatives:

  • apiKey
  • oauth2 with scopes sales.read
Authorization guide

Path parameters

  • merchant_codestringrequired
    maxLength: 30

    The merchant code.

    Example: "MCZM9TGQ"

Body parameters

application/jsonrequired
  • format: date-time

    Sale created on or after this instant (inclusive).

    Example: "2026-06-01T00:00:00Z"

  • end_datestring
    format: date-time

    Sale 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 as Sale.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"]

  • Opaque pagination token from a previous search response. Not interchangeable with tokens from GET /sales.

    Example: "66bcbtzelrubzeuzruzgu76678trncH"

  • minimum: 1maximum: 25default: 10

    Maximum number of results per page.

    Example: 10

Responses

200application/json

Successful response with search results.

  • itemsarray<object>required

    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
    • idstringrequired

      Sale identifier.

      Example: "dbe3178d-4b83-5024-9b26-9b8e1b280514"

    • statestringrequired
      Options:"CLOSED"

      Lifecycle state of the sale. Non-finalised sales are never returned; only fully-paid sales.

      Example: "CLOSED"

    • tax_modestringrequired
      Options:"NO_TAX""GROSS""NET"

      Checkout tax mode for the sale. Same values as Sale.tax_mode.

      Example: "NO_TAX"

    • currencystringrequired
      Options:"BRL""CHF""CLP""COP""CZK""DKK""EUR""GBP""HRK""HUF""NOK""PLN""RON""SEK""USD"

      Three-letter ISO 4217 currency code of the amount.

      Example: "EUR"

    • total_amountobjectrequired

      Final sale gross total after discounts and taxes, excluding tips. Same value as Sale.price.gross_amount, in minor units according to currency.scale. Payment amounts include tips and can therefore differ from this total.

      Example: 1250

      Show 2 properties
      • currencystringrequired

        Currency ISO 4217 code

        Example: "MXN"

      • valueintegerrequired

        Amount in minor units (e.g. cents).

        Example: 1000

    • created_atstringrequired
      format: date-time

      Instant when the sale was created.

      Example: "2026-06-01T14:30:00Z"

    • closed_atstringrequired
      format: date-time

      Instant when the sale was closed. Always present: non-finalised sales are never returned.

      Example: "2026-06-01T14:35:00Z"

    • user_idstring
      format: uuid

      Identity 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"

  • Opaque token for the next page of search results.

    Example: "66bcbtzelrubzeuzruzgu76678trncH"

400application/problem+json

Validation error on the request.

  • typestringrequired
    format: uri

    A 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."

  • instancestring
    format: uri

    A URI reference that identifies the specific occurrence of the problem.

401application/problem+json

The client is not authenticated (auth header is empty or invalid).

  • typestringrequired
    format: uri

    A 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."

  • instancestring
    format: uri

    A 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.

  • typestringrequired
    format: uri

    A 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."

  • instancestring
    format: uri

    A URI reference that identifies the specific occurrence of the problem.

412application/problem+json

User-Agent header is not present or is empty.

  • typestringrequired
    format: uri

    A 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."

  • instancestring
    format: uri

    A URI reference that identifies the specific occurrence of the problem.

Type to search…