Developer Docs

Create a checkout session for a one-time payment (recommended)

Recommended way to start a hosted one-time payment. Replaces the deprecated POST /api/checkout/payment.

Returns { sessionId, checkoutUrl } — redirect the buyer to checkoutUrl to pay. The paymentId is created once the buyer submits a payment method during the session. Subscribe to checkout_session.* merchant webhooks — the paymentId is included in the payload once the session is completed (e.g. checkout_session.completed).

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

The currency of the checkout session, this currency will refer to product list prices

Allowed:
string

The url to redirect to after a successful payment, we will append the id of the payment in the query parameters as "?paymentId={{PAYMENT_ID}}"

string | null

The url to redirect to after the user failed to pay, we will append the paymentId in the query parameters

products
array of objects
required

The list of products to purchase, the total amount is the sum of price * quantity for each product.

products*
string
deprecated

Default customer email pre-filled in the checkout session. @deprecated Prefer customer.email.

sessionCustomization
object

The customization of the checkout session

string
length ≤ 11

Optional statement descriptor (max 11 characters) shown on the customer's bank statement as 'INFLOWPAY* '. Falls back to the account-level statement descriptor if omitted.

metadatas
object

Custom metadata for the session/payment, key/value pairs (supports nested objects and arrays)

number
≥ 0.25

Duration in hours before the session expires. 0.75 = 45 minutes, 24 = 1 day. Minimum 0.25 (15 minutes). If not provided, the session will not have an automatic expiration.

boolean

Whether the VAT is included in the product prices

string
deprecated

Optional default billing country (ISO 3166-1 alpha-2). When set, the checkout session is pre-filled with this country and VAT is recomputed accordingly. Ignored silently if the country is not supported for tax. @deprecated Prefer customer.billingCountry.

customer
object

Customer information pre-filled in the checkout session (email, identity or business, billing country) with an optional locked flag to make those fields read-only for the buyer. Takes priority over the deprecated top-level customerEmail / billingCountry.

string
enum

Set to MANUAL to authorize the payment at checkout and capture it later via POST /api/payment/:paymentId/capture. Defaults to AUTOMATIC (immediate capture). Card and wallet payments only.

Allowed:
number
≥ 0

Marketplaces only: fixed fee to collect on this payment, in cents. Can only be set by the parent marketplace acting on behalf of a sub-merchant. Defaults to the marketplace's configured fee.

boolean
Defaults to false

When true, the checkout offers the buyer the option to save their payment method (card / wallet) for future payments. The saved payment method is attached to the merchant's customer matching the buyer's email (created if needed). Pass customer.id to instead anchor it to a specific existing customer, regardless of the email the buyer enters. The buyer must still opt in via a checkbox for a reusable payment method to be stored.

Response

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