Create a Reader Checkout

POST/v0.1/merchants/{merchant_code}/readers/{reader_id}/checkout

Creates a Checkout for a Reader.

This process is asynchronous and the actual transaction may take some time to be started on the device.

There are some caveats when using this endpoint:

  • The target device must be online, otherwise checkout won't be accepted
  • After the checkout is accepted, the system has 60 seconds to start the payment on the target device. During this time, any other checkout for the same device will be rejected.

Note: If the target device is a Solo, it must be in version 3.3.24.3 or higher.

Optionally include an affiliate object to attach integrator metadata to the payment. Provide both app_id and key when including this object.

OAuth scopes: Requires one of: readers.write.

Required permissions:

  • readers.checkouts.create

Authorization

Use one of the following alternatives:

  • apiKey
  • oauth2 with scopes readers.write
Authorization guide

Path parameters

Body parameters

application/jsonrequired

A checkout initial attributes

  • total_amountobjectrequired

    Amount structure.

    The amount is represented as an integer value altogether with the currency and the minor unit.

    For example, EUR 1.00 is represented as value 100 with minor unit of 2.

    Example: {"currency":"EUR","minor_unit":2,"value":1000}

    Show 3 properties
    • currencystringrequired

      Currency ISO 4217 code

      Example: "EUR"

    • minor_unitintegerrequired
      minimum: 0

      The minor units of the currency. It represents the number of decimals of the currency. For the currencies CLP, COP and HUF, the minor unit is 0.

      Example: 2

    • valueintegerrequired
      minimum: 0

      Integer value of the amount.

      Example: 1000

  • aadeobject

    Optional object containing data for transactions from ERP integrators in Greece that comply with the AADE 1155 protocol. When such regulatory/business requirements apply, this object must be provided and contains the data needed to validate the transaction with the AADE signature provider.

    Show 3 properties
    • provider_idstringrequired

      The identifier of the AADE signature provider.

      Example: "123"

    • signaturestringrequired

      The base64 encoded signature of the transaction data.

      Example: "QjcxRDdBNTU1MDcyRTNFRTREMkZEM0Y0NTdBMjkxMTU4MzBFNkNCQTs7MjAyNTExMTIyMTQ3MTM7Nzk2OzEwNDs5MDA7OTAwOzU0ODg5MDM5"

    • signature_datastringrequired

      The string containing the signed transaction data.

      Example: "B71D7A555072E3EE4D2FD3F457A29115830E6CBA;;20251112214713;796;104;900;900;54889039"

  • affiliateobjectnullable

    Optional affiliate metadata associated with the checkout's payment. Provide both app_id and key when including this object.

    Show 4 properties
    • app_idstringrequired

      Integrator application identifier from the Affiliate Keys page. Required when the affiliate object is provided.

      Example: "com.example.app"

    • keystringrequired

      Affiliate key generated in the Affiliate Keys page. Required when the affiliate object is provided.

      Example: "123e4567-e89b-12d3-a456-426614174000"

    • Integrator-owned transaction reference. Optional. Can be used to retrieve the transaction via the Transactions API.

      Example: "19e12390-72cf-4f9f-80b5-b0c8a67fa43f"

    • tagsobject

      Optional key-value metadata associated with the transaction.

      Example: {"custom_key_1":"custom_value_1","custom_key_2":"custom_value_2"}

  • card_typestring
    Options:"credit""debit"

    The card type of the card used for the transaction. It is required only for some countries (e.g: Brazil).

    Example: "credit"

  • Description of the checkout to be shown in the Merchant Sales

  • installmentsintegernullable
    minimum: 1

    Number of installments for the transaction. It may vary according to the merchant country. For example, in Brazil, the maximum number of installments is 12.

    Omit if the merchant country does not support installments. Otherwise, the checkout will be rejected.

    Example: 1

  • Options:"card""pix"
    default: "card"

    The payment method type for the transaction. Defaults to card.

    Use pix to initiate a Pix QR-code payment flow on the device. Pix is only supported for Brazilian merchants; other merchants will receive a 422 error.

    Example: "card"

  • format: uri

    Webhook URL to which the payment result will be sent. It must be a HTTPS url.

    Example: "https://www.example.com"

  • tip_ratesarray<number>
    format: floatminimum: 0.01maximum: 1

    Exactly three distinct tipping rates to be displayed to the cardholder. Each rate is a fraction between 0.01 and 1.00 in increments of 0.01. The rates are sorted in ascending order by the server.

  • minimum: 30maximum: 120default: 30

    Time in seconds the cardholder has to select a tip rate. If not provided, the default value is 30 seconds.

    It can only be set if tip_rates is provided.

    Note: If the target device is a Solo, it must be in version 3.3.38.0 or higher.

    Example: 30

Responses

201application/json

The Checkout got successfully created for the given reader.

  • dataobjectrequired
    Show 2 properties
    • client_transaction_idstringrequired

      Unique identifier for the transaction associated with this checkout. Use this value to match the checkout with payment events and transaction records.

      Example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"

    • The checkout ID is a unique identifier for the checkout.

      Example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"

400application/json

Response when given params (or one of them) are invalid

  • errorsobjectrequired
    Show 2 properties
    • typestringrequired

      Error code

    • detailstring

      Error message

application/problem+json

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

{
  "detail": "Invalid affiliate key.",
  "status": 400,
  "title": "Invalid Affiliate Key",
  "type": "https://developer.sumup.com/problem/invalid-affiliate-key"
}
401application/json

Unauthorized

  • errorsobjectrequired
    Show 2 properties
    • typestringrequired

      Error code

    • detailstring

      Error message

application/problem+json

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

{
  "detail": "Unauthorized",
  "status": 401,
  "title": "Unauthorized",
  "type": "https://developer.sumup.com/problem/unauthorized"
}
404application/json

Response when given reader is not found

  • errorsobjectrequired
    Show 1 property
    • detailstringrequired

      Fuller message giving context to error

application/problem+json

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

{
  "detail": "The requested resource doesn't exist or does not belong to you.",
  "status": 404,
  "title": "Requested resource couldn't be found.",
  "type": "https://developer.sumup.com/problem/not-found"
}
422application/json

Response when given params (or one of them) are invalid

application/problem+json

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

{
  "detail": "Payment method not allowed for this merchant.",
  "status": 422,
  "title": "Payment Method Not Allowed",
  "type": "https://developer.sumup.com/problem/payment-method-not-allowed"
}

Type to search…