/v0.1/merchants/{merchant_code}/readers/{reader_id}/checkoutCreates 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
Path parameters
Merchant Code
The unique identifier of the Reader
Body parameters
application/jsonrequiredA checkout initial attributes
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
Currency ISO 4217 code
Example:
"EUR"- minimum:
0The 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 - minimum:
0Integer 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
The identifier of the AADE signature provider.
Example:
"123"The base64 encoded signature of the transaction data.
Example:
"QjcxRDdBNTU1MDcyRTNFRTREMkZEM0Y0NTdBMjkxMTU4MzBFNkNCQTs7MjAyNTExMTIyMTQ3MTM7Nzk2OzEwNDs5MDA7OTAwOzU0ODg5MDM5"The string containing the signed transaction data.
Example:
"B71D7A555072E3EE4D2FD3F457A29115830E6CBA;;20251112214713;796;104;900;900;54889039"
Optional affiliate metadata associated with the checkout's payment. Provide both
app_idandkeywhen including this object.Show 4 properties
Integrator application identifier from the Affiliate Keys page. Required when the affiliate object is provided.
Example:
"com.example.app"Affiliate key generated in the Affiliate Keys page. Required when the affiliate object is provided.
Example:
"123e4567-e89b-12d3-a456-426614174000"- foreign_transaction_idstring
Integrator-owned transaction reference. Optional. Can be used to retrieve the transaction via the Transactions API.
Example:
"19e12390-72cf-4f9f-80b5-b0c8a67fa43f"
- card_typestringOptions:
"credit""debit"The card type of the card used for the transaction. It is required only for some countries (e.g: Brazil).
Example:
"credit" - descriptionstring
Description of the checkout to be shown in the Merchant Sales
- minimum:
1Number 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 - payment_typestringOptions:
"card""pix"default:"card"The payment method type for the transaction. Defaults to
card.Use
pixto 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" - return_urlstringformat:
uriWebhook 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:1Exactly 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.
- tip_timeoutintegerminimum:
30maximum:120default:30Time 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_ratesis 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.
Show 2 properties
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"- checkout_idstring
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
application/problem+json
- 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.
{
"detail": "Invalid affiliate key.",
"status": 400,
"title": "Invalid Affiliate Key",
"type": "https://developer.sumup.com/problem/invalid-affiliate-key"
}401application/json
Unauthorized
application/problem+json
- 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.
{
"detail": "Unauthorized",
"status": 401,
"title": "Unauthorized",
"type": "https://developer.sumup.com/problem/unauthorized"
}404application/json
Response when given reader is not found
Show 1 property
Fuller message giving context to error
application/problem+json
- 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.
{
"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
- 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.
{
"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"
}