Create mobile checkout

The checkout call the mobile SDK makes. A native app renders the card form itself, so this returns the values the SDK needs to collect and confirm a card — not the rendered payment UI that POST /api/v1/checkout returns for a browser.

You do not normally call this yourself: the SDK does, when the shopper presses Pay. It is documented so you can see exactly what leaves the device and what comes back.

No merchant credentials are required. The widget_token in the body authorises the call and names the merchant, order, amount, currency and shopper — so an app never holds your API key to take a payment.

FieldTypeRequiredDescription
widget_tokenstringYesFrom POST /api/v1/checkout/init. Single use, and spent by this call.
payment_method_typestringNo"card" (default) or "pay_by_bank". Any other value returns 422.
save_cardbooleanNoStore the card against the shopper the token is bound to, for future checkouts. Defaults to false.
saved_payment_method_idstringNoCharge a card the shopper already stored, instead of collecting one.
return_urlstringConditionalRequired when payment_method_type is "pay_by_bank". The merchant-owned URL the shopper comes back to after approving. Absolute https outside local development; malformed values return 400.

Amount, currency and the shopper's email cannot be sent. All three are read from the widget token, so an app cannot name its own price or its own shopper and there is no mismatch to reject. Unknown fields — customer_email included — return 422 rather than being ignored.

Pay-by-bank note: It is a one-off approval at the shopper's bank: nothing is stored and no stored card is charged, so pairing it with save_card or saved_payment_method_id is rejected rather than partly honoured.

Token consumption: A rejection never costs the shopper their token. Every check this endpoint makes runs before the single-use widget token is spent, so a 400, 404 or 503 means no token was consumed and no payment was created.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

POST /api/v1/mobile/checkout — the mobile SDK's own request shape.

Deliberately not CheckoutRequestIn with a flag. That model carries the browser
widget's whole history — Mode A's bare amount/currency, the Adyen wallet session fields
(alternative_payment_method_id, resume_id, payment_method, browser_info,
origin) — none of which a native app can send or a native response can answer. A
mobile checkout is always Mode B: a widget token names the merchant, order, amount,
currency and shopper, so those are read from the token and cannot be passed at all.

length ≥ 1
length ≥ 1
length ≥ 1
string
enum
Defaults to card
Allowed:
boolean
Defaults to false
length ≥ 1
length ≥ 1
string
required
length ≥ 1
Responses

Language
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json