/v0.1/checkoutsCreates a payment checkout for the specified merchant, amount, and currency. Supply a checkout_reference to identify the payment attempt in your own systems. Creating a checkout does not charge a payment instrument.
Set hosted_checkout.enabled to true to receive a Hosted Checkout URL where the customer can complete the payment.
Use redirect_url for redirect-based payment and 3DS flows. If return_url is provided, SumUp sends processing updates to that backend callback URL.
Complete the payment through Hosted Checkout or the Payment Widget.
OAuth scopes: Requires one of: payments, checkouts.write.
Body parameters
application/jsonrequiredDetails for creating a checkout resource.
- maxLength:
64Merchant-defined reference for the new checkout, up to 64 characters. Use it to correlate the checkout with an order or payment attempt in your own system. If a checkout already exists for the supplied unique parameters, creation returns
409withDUPLICATED_CHECKOUT; see the conflict response.Example:
"f00a8f74-b05d-4605-bd73-2a901bae5802" - format:
floatAmount to be charged to the payer, expressed in major units.
Example:
10.1 - 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" Short unique identifier for the merchant that should receive the payment.
Example:
"MH4H92C7"- descriptionstring
Short merchant-defined description shown in SumUp tools and reporting for easier identification of the checkout.
Example:
"Purchase" - return_urlstringformat:
uriOptional backend callback URL for checkout status notifications. SumUp sends an HTTP POST with
event_typeand the checkoutid. Retrieve the checkout to verify its current status before updating your order. See the webhook guide for the payload and response requirements.Example:
"http://example.com/" - customer_idstring
Merchant-scoped customer identifier. Required when setting up recurring payments and useful when the checkout should be linked to a returning payer.
Example:
"831ff8d4cd5958ab5670" - purposestringOptions:
"CHECKOUT""SETUP_RECURRING_PAYMENT"default:"CHECKOUT"Business purpose of the checkout. Use
CHECKOUTfor a standard payment andSETUP_RECURRING_PAYMENTwhen collecting consent and payment details for future recurring charges. - format:
date-timeOptional expiration timestamp. The checkout must be processed before this moment, otherwise it becomes unusable. If omitted, the checkout does not have an explicit expiry time.
Example:
"2030-12-31T23:59:59Z" - redirect_urlstring
URL where the payer should be sent after a redirect-based payment or SCA flow completes. This is required for APMs and recommended for card checkouts that may require 3DS. If it is omitted, the Payment Widget can render the challenge in an iframe instead of using a full-page redirect.
Example:
"https://mysite.com/completed_purchase" - hosted_checkoutobject
Hosted Checkout configuration. Enable it to receive a SumUp-hosted payment page URL in the checkout response.
Show 1 property
Whether the checkout should include a SumUp-hosted payment page.
Example:
true
Request examples
Standard request body for creating a checkout
Checkout
{
"checkout_reference": "f00a8f74-b05d-4605-bd73-2a901bae5802",
"amount": 10.1,
"currency": "EUR",
"merchant_code": "MH4H92C7",
"description": "Purchase",
"valid_until": "2030-12-31T23:59:59Z",
"redirect_url": "https://sumup.com"
}Create a 3DS checkout
Checkout3DS
{
"checkout_reference": "f00a8f74-b05d-4605-bd73-2a901bae5802",
"amount": 10.1,
"currency": "EUR",
"merchant_code": "MH4H92C7",
"description": "Purchase",
"return_url": "http://example.com/",
"customer_id": "831ff8d4cd5958ab5670",
"redirect_url": "https://mysite.com/completed_purchase"
}Create an Alternative Payment Method checkout
CheckoutAPM
{
"checkout_reference": "f00a8f74-b05d-4605-bd73-2a901bae5802",
"amount": 10.1,
"currency": "EUR",
"merchant_code": "MH4H92C7",
"redirect_url": "https://mysite.com/completed_purchase"
}Create a checkout with a SumUp-hosted payment page
HostedCheckout
{
"checkout_reference": "b50pr914-6k0e-3091-a592-890010285b3d",
"amount": 12,
"currency": "EUR",
"merchant_code": "MCXXXXXX",
"description": "A sample checkout",
"hosted_checkout": {
"enabled": true
}
}Responses
201application/json
Returns the created checkout resource.
- checkout_referencestringmaxLength:
64Merchant-defined reference for the checkout. Use it to correlate the SumUp checkout with your own order, cart, subscription, or payment attempt in your systems.
Example:
"f00a8f74-b05d-4605-bd73-2a901bae5802" - amountnumberformat:
floatAmount to be charged to the payer, expressed in major units.
Example:
10.1 - currencystringOptions:
"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" - merchant_codestring
Short unique identifier for the merchant that receives the payment.
Example:
"MH4H92C7" - descriptionstring
Short merchant-defined description shown in SumUp tools and reporting. Use it to make the checkout easier to recognize in dashboards, support workflows, and reconciliation.
Example:
"Purchase" - return_urlstringformat:
uriOptional backend callback URL for checkout status notifications. SumUp sends an HTTP POST with
event_typeand the checkoutid. Retrieve the checkout to verify its current status before updating your order. See the webhook guide for the payload and response requirements.Example:
"http://example.com" - idstring
Unique SumUp identifier of the checkout resource.
Example:
"4e425463-3e1b-431d-83fa-1e51c2925e99" - statusstringOptions:
"PENDING""FAILED""PAID""EXPIRED"Current high-level state of the checkout.
PENDINGmeans the checkout exists but is not yet completed,PAIDmeans a payment succeeded,FAILEDmeans the latest processing attempt failed, andEXPIREDmeans the checkout can no longer be processed.Example:
"PENDING" - datestringformat:
date-timeThe timestamp of when the checkout was created.
Example:
"2020-02-29T10:56:56+00:00" - format:
date-timeOptional expiration timestamp. The checkout must be processed before this moment, otherwise it becomes unusable. If omitted, the checkout does not have an explicit expiry time.
Example:
"2030-12-31T23:59:59Z" - customer_idstring
Merchant-scoped identifier of the customer associated with the checkout. Use it when storing payment instruments or reusing saved customer context for recurring and returning-payer flows.
Example:
"831ff8d4cd5958ab5670" - mandateobject
Details of the mandate linked to the saved payment instrument.
Example:
{"type":"recurrent","status":"active","merchant_code":"MH4H92C7"}Show 3 properties
- typestring
Type of mandate stored for the checkout or payment instrument.
Example:
"recurrent" - statusstringOptions:
"active""inactive"Current lifecycle status of the mandate.
Example:
"active" - merchant_codestring
Short unique identifier for the merchant for which the mandate is valid.
Example:
"MH4H92C7"
- hosted_checkout_urlstringformat:
uriURL of the SumUp-hosted payment page that handles the payment flow. Returned when Hosted Checkout is enabled for the checkout.
Example:
"https://checkout.sumup.com/pay/8f9316a3-cda9-42a9-9771-54d534315676" - transactionsarray<unknown>
Payment attempts and resulting transaction records linked to this checkout. Use the Transactions endpoints when you need the authoritative payment result and event history.
Example:
[{"id":"410fc44a-5956-44e1-b5cc-19c6f8d727a4","transaction_code":"TEENSK4W2K","amount":10.1,"currency":"EUR","timestamp":"2020-02-29T10:56:56.876Z","status":"SUCCESSFUL","payment_type":"ECOM","installments_count":1,"merchant_code":"MH4H92C7","vat_amount":6,"tip_amount":3,"entry_mode":"CUSTOMER_ENTRY","auth_code":"012345"}]Show 13 properties
- idstring
Unique identifier of the transaction.
Example:
"6b425463-3e1b-431d-83fa-1e51c2925e99" - transaction_codestring
SumUp transaction code, for example
TEENSK4W2K. Use it to look up the transaction with thetransaction_codequery parameter. This is separate from the transaction'sidand the card issuer'sauth_code.Example:
"TEENSK4W2K" - amountnumberformat:
floatTotal amount of the transaction in major units of
currency, for example10.1for EUR 10.10.Example:
10.1 - currencystringOptions:
"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" - timestampstringformat:
date-timeThe timestamp of when the transaction was created.
Example:
"2020-02-29T10:56:56.876Z" - statusstringOptions:
"SUCCESSFUL""CANCELLED""FAILED""PENDING""REFUNDED"Current status of the transaction.
PENDING: The transaction has been created but its final outcome is not known yet.SUCCESSFUL: The transaction completed successfully.CANCELLED: The transaction was cancelled or otherwise reversed before completion.FAILED: The transaction attempt did not complete successfully.REFUNDED: The transaction was refunded in full or in part.
Example:
"SUCCESSFUL" - payment_typestringOptions:
"CASH""POS""ECOM""RECURRING""BITCOIN""BALANCE""MOTO""BOLETO""DIRECT_DEBIT""APM""UNKNOWN"Payment category recorded on a transaction, for example
POSfor a point-of-sale card payment,ECOMfor an online card payment, orRECURRINGfor a recurring card payment. These reporting values are separate from the lowercasepayment_typevalues used to process checkouts.Example:
"ECOM" - installments_countintegerminimum:
1Number of installments for a deferred payment.
Example:
1 - merchant_codestring
Unique code of the registered merchant to whom the payment is made.
Example:
"MH4H92C7" - vat_amountnumberformat:
floatVAT included in the total transaction amount, in major units of the transaction's currency.
Example:
6 - tip_amountnumberformat:
floatTip included in the total transaction amount, in major units of the transaction's currency.
Example:
3 - entry_modestringOptions:
"BOLETO""SOFORT""IDEAL""BANCONTACT""EPS""MYBANK""SATISPAY""BLIK""P24""GIROPAY""PIX""QR_CODE_PIX""APPLE_PAY""GOOGLE_PAY""PAYPAL""TWINT""NONE""CHIP""MANUAL_ENTRY""CUSTOMER_ENTRY""MAGSTRIPE_FALLBACK""MAGSTRIPE""DIRECT_DEBIT""CONTACTLESS""MOTO""CONTACTLESS_MAGSTRIPE""N/A"How the payment details were captured, for example
CHIPorCONTACTLESSfor card-present payments andCUSTOMER_ENTRYfor card details entered by the payer. For wallet and alternative payment methods, this can identify the method, such asAPPLE_PAYorBLIK.Example:
"CUSTOMER_ENTRY" - auth_codestring
Authorization code for the transaction sent by the payment card issuer or bank. Applicable only to card payments.
Example:
"053201"
400application/json
The request body is invalid.
- messagestring
Short description of the error.
Example:
"Resource not found" - error_codestring
Platform code for the error.
Example:
"NOT_FOUND" - paramstring
Parameter name (with relative location) to which the error applies. Parameters from embedded resources are displayed using dot notation. For example,
card.namerefers to thenameparameter embedded in thecardobject.Example:
"card.name"
401application/json
The request is not authorized.
- 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.
Example:
"https://api.sumup.com/v0.1/checkouts/4e425463-3e1b-431d-83fa-1e51c2925e99"
403application/json
The request isn't sufficiently authorized to create a checkout.
- error_messagestring
Short description of the error.
Example:
"request_not_allowed" - error_codestring
Platform code for the error.
Example:
"FORBIDDEN" - status_codestring
HTTP status code for the error.
Example:
"403"
409application/json
A checkout already exists for the provided unique parameters.
- messagestring
Short description of the error.
Example:
"Resource not found" - error_codestring
Platform code for the error.
Example:
"NOT_FOUND"