---
title: "Process a checkout"
method: PUT
path: "/v0.1/checkouts/{checkout_id}"
tags: ["Checkouts"]
---

# Process a checkout

`PUT /v0.1/checkouts/{checkout_id}`

Processing a checkout will attempt to charge the provided payment instrument for the amount of the specified checkout resource initiated in the `Create a checkout` endpoint.

Follow this request with `Retrieve a checkout` to confirm its status.

## Request body

- ProcessCheckout — Request body for attempting payment on an existing checkout. The required companion fields depend on the selected `payment_type`, for example card details, saved-card data, or payer information required by a specific payment method.
  - `payment_type` 'card' | 'boleto' | 'ideal' | 'blik' | 'bancontact' | 'google_pay' | 'apple_pay', required — Payment method used for this processing attempt. It determines which additional request fields are required.
  - `installments` integer — Number of installments for deferred payments. Available only to merchant users in Brazil.
  - `mandate` MandatePayload — Mandate details used when a checkout should create a reusable card token for future recurring or merchant-initiated payments.
    - `type` 'recurrent', required — Type of mandate to create for the saved payment instrument.
    - `user_agent` string, required — Browser or client user agent observed when consent was collected.
    - `user_ip` string — IP address of the payer when the mandate was accepted.
  - `card` Card — __Required when payment type is `card`.__ Details of the payment card.
    - `name` string, required — Name of the cardholder as it appears on the payment card.
    - `number` string, required — Number of the payment card (without spaces).
    - `expiry_year` string, required — Year from the expiration time of the payment card. Accepted formats are `YY` and `YYYY`.
    - `expiry_month` '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' | '10' | '11' | '12', required — Month from the expiration time of the payment card. Accepted format is `MM`.
    - `cvv` string, required — Three or four-digit card verification value (security code) of the payment card.
    - `zip_code` string — Required five-digit ZIP code. Applicable only to merchant users in the USA.
    - `type` 'ALELO' | 'AMEX' | 'CONECS' | 'CUP' | 'DINERS' | 'DISCOVER' | 'EFTPOS' | 'ELO' | 'ELV' | 'GIROCARD' | 'HIPERCARD' | 'INTERAC' | 'JCB' | 'MAESTRO' | 'MASTERCARD' | 'PLUXEE' | 'SWILE' | 'TICKET' | 'VISA' | 'VISA_ELECTRON' | 'VISA_VPAY' | 'VPAY' | 'VR' | 'UNKNOWN', required — Issuing card network of the payment card used for the transaction.
  - `google_pay` object — Raw `PaymentData` object received from Google Pay. Send the Google Pay response payload as-is.
  - `apple_pay` object — Raw payment token object received from Apple Pay. Send the Apple Pay response payload as-is.
  - `token` string — Saved-card token to use instead of raw card details when processing with a previously stored payment instrument.
  - `customer_id` string — Customer identifier associated with the saved payment instrument. Required when `token` is provided.
  - `personal_details` PersonalDetails — Personal details for the customer.
    - `first_name` string — First name of the customer.
    - `last_name` string — Last name of the customer.
    - `email` string — Email address of the customer.
    - `phone` string — Phone number of the customer.
    - `birth_date` string, date — Date of birth of the customer.
    - `tax_id` string — An identification number user for tax purposes (e.g. CPF)
    - `address` AddressLegacy — Profile's personal address information.
      - `city` string — City name from the address.
      - `country` string — Two letter country code formatted according to [ISO3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      - `line_1` string — First line of the address with details of the street name and number.
      - `line_2` string — Second line of the address with details of the building, unit, apartment, and floor numbers.
      - `postal_code` string — Postal code from the address.
      - `state` string — State name or abbreviation from the address.

## Response `200`

Returns the checkout resource after a processing attempt.

- CheckoutSuccess — Core checkout resource returned by the Checkouts API. A checkout is created before payment processing and then updated as payment attempts, redirects, and resulting transactions are attached to it.
  - `checkout_reference` string — Merchant-defined reference for the checkout. Use it to correlate the SumUp checkout with your own order, cart, subscription, or payment attempt in your systems.
  - `amount` number, float — Amount to be charged to the payer, expressed in major units.
  - `currency` 'BGN' | 'BRL' | 'CHF' | 'CLP' | 'COP' | 'CZK' | 'DKK' | 'EUR' | 'GBP' | 'HRK' | 'HUF' | 'NOK' | 'PLN' | 'RON' | 'SEK' | 'USD' — Three-letter [ISO4217](https://en.wikipedia.org/wiki/ISO_4217) code of the currency for the amount. Currently supported currency values are enumerated above.
  - `merchant_code` string — Merchant account that receives the payment.
  - `description` string — 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.
  - `return_url` string, uri — Optional backend callback URL used by SumUp to notify your platform about processing updates for the checkout.
  - `id` string — Unique SumUp identifier of the checkout resource.
  - `status` 'PENDING' | 'FAILED' | 'PAID' | 'EXPIRED' — Current high-level state of the checkout. `PENDING` means the checkout exists but is not yet completed, `PAID` means a payment succeeded, `FAILED` means the latest processing attempt failed, and `EXPIRED` means the checkout can no longer be processed.
  - `date` string, date-time — Date and time of the creation of the payment checkout. Response format expressed according to [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) code.
  - `valid_until` string, date-time, nullable — Optional 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.
  - `customer_id` string — 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.
  - `mandate` MandateResponse — Details of the mandate linked to the saved payment instrument.
    - `type` string — Type of mandate stored for the checkout or payment instrument.
    - `status` 'active' | 'inactive' — Current lifecycle status of the mandate.
    - `merchant_code` string — Merchant account for which the mandate is valid.
  - `hosted_checkout_url` string, uri — URL of the SumUp-hosted payment page that handles the payment flow. Returned when Hosted Checkout is enabled for the checkout.
  - `transactions` object[] — Payment attempts and resulting transaction records linked to this checkout. Use the Transactions endpoints when you need the authoritative payment result and event history.
    - `id` string — Unique ID of the transaction.
    - `transaction_code` string — Transaction code returned by the acquirer/processing entity after processing the transaction.
    - `amount` number, float — Total amount of the transaction.
    - `currency` 'BGN' | 'BRL' | 'CHF' | 'CLP' | 'COP' | 'CZK' | 'DKK' | 'EUR' | 'GBP' | 'HRK' | 'HUF' | 'NOK' | 'PLN' | 'RON' | 'SEK' | 'USD' — Three-letter [ISO4217](https://en.wikipedia.org/wiki/ISO_4217) code of the currency for the amount. Currently supported currency values are enumerated above.
    - `timestamp` string, date-time — Date and time of the creation of the transaction. Response format expressed according to [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) code.
    - `status` '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.
    - `payment_type` 'CASH' | 'POS' | 'ECOM' | 'RECURRING' | 'BITCOIN' | 'BALANCE' | 'MOTO' | 'BOLETO' | 'DIRECT_DEBIT' | 'APM' | 'UNKNOWN' — Payment type used for the transaction.
    - `installments_count` integer — Current number of the installment for deferred payments.
    - `merchant_code` string — Unique code of the registered merchant to whom the payment is made.
    - `vat_amount` number, float — Amount of the applicable VAT (out of the total transaction amount).
    - `tip_amount` number, float — Amount of the tip (out of the total transaction amount).
    - `entry_mode` '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' — Entry mode of the payment details.
    - `auth_code` string — Authorization code for the transaction sent by the payment card issuer or bank. Applicable only to card payments.
  - `transaction_code` string — Transaction code of the successful transaction with which the payment for the checkout is completed.
  - `transaction_id` string — Transaction ID of the successful transaction with which the payment for the checkout is completed.
  - `merchant_name` string — Name of the merchant
  - `redirect_url` string — URL where the payer is redirected after a redirect-based payment or SCA flow completes.
  - `payment_instrument` object — Details of the saved payment instrument created or reused during checkout processing.
    - `token` string — Token value

## Other responses

- `202` — Returns the next required action for asynchronous checkout processing.
- `400` — The request body is invalid for processing the checkout.
- `401` — The request is not authorized.
- `404` — The requested resource does not exist.
- `409` — The request conflicts with the current state of the resource.

---

[API](https://skmtc.net/sumup/apis/sumup-rest-api.md) · [All operations](https://skmtc.net/sumup/apis/sumup-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sumup/sumup-rest-api/versions/f50e1dc97523/schema)
