Checkout sessions create Flint-hosted payment pages for a single buyer. Each session is backed by an order: pass order_id to collect payment for an order you already created, quick_pay_item to have Flint create a simple one-time order for you, or plan_id to run hosted subscription signup from a subscription plan. The create response returns a tokenized buyer-facing url you redirect or link the buyer to.
Sessions are single-use. Generic sessions are short-lived (24 hours by default); invoice-owned sessions last for the life of the invoice's payment link. A session is open until the buyer completes payment, a mixed terminal attempt settles only part of the balance, you close it, it expires, or its source invalidates it. Terminal statuses are paid, partially_paid, closed, expired, and invalidated; terminal_reason explains the exact transition, including payment_succeeded and payment_partially_succeeded. Flint allows only one active session per order at a time. Creating another session for the same order returns CHECKOUT_SESSION_ALREADY_EXISTS unless you explicitly compare and replace the current session with replace_checkout_session_id. Configuration (theme, tipping, customer collection requirements, redirects, legal links, and expiration) is fixed at creation, and only metadata is mutable afterward.
Whether the order has at least one remaining quote-resolved fulfillment choice that must be selected before payment.
expirationobject
expiration_urlstring
Optional URL to send buyers to after the checkout session expires.
expires_in_secondsinteger
Duration in seconds before the checkout session expires after creation.
expires_atstring
RFC3339 timestamp.
external_reference_idstring
Caller-owned identifier for this resource in an external system.
fulfillmentone of
Current fulfillment choices for Flint-owned pricing. Checkout credentials receive the fields available to buyers; merchant credentials also receive configuration lineage and diagnostics. External pricing reports requires_explicit_quote; reading this field does not request a delivery quote.
choice_groupsarray of objectrequired
delivery_quote_idstring
evaluation_statusenumrequired
completeincompletedegradedrequires_explicit_quote
expires_atstring
RFC3339 timestamp.
input_requirementsarray of objectrequired
merchant_diagnosticsarray of objectrequired
invoiceobject or null
collection_block_statusenum
noneinventory_blockedresolved
created_atstring
RFC3339 timestamp.
customer_idstring
due_atstring
RFC3339 timestamp.
invoice_idstringrequired
invoice_numberstring
is_overduebooleanrequired
order_idstring
outstanding_moneyobjectrequired
Monetary amount represented as integer minor units plus an ISO 4217 currency code.
paid_moneyobjectrequired
Monetary amount represented as integer minor units plus an ISO 4217 currency code.
refund_statusenum
nonepartially_refundedrefunded
refunded_moneyobjectrequired
Monetary amount represented as integer minor units plus an ISO 4217 currency code.
Caller-owned identifier for this resource in an external system.
payment_notestring
plan_idstring
problemsarray of objectrequired
Named conditions that affect checkout completion. Follow each problem's remediation action instead of reconstructing delivery lifecycle rules in the client.
Object-level override for hosted checkout promotion code entry and application. Omit to inherit the merchant checkout default. True shows code entry when policy allows it; false hides it for this checkout.
recovery_expires_atstring or null
RFC3339 deadline for the restricted payment-attempt recovery window.
recovery_modebooleanrequired
Whether this terminal session credential is temporarily restricted to recovering its owning payment attempt.
recovery_payment_attempt_idstring
Payment attempt that this checkout credential may recover while recovery_mode is true.
Exact-match filter on the caller-owned external reference ID.
querystring
Search across checkout session ID, external reference ID, metadata, and payment notes.
sort_byenum
Sort field.
created_atupdated_at
sort_directionenum
Sort direction.
ascdesc
created_afterstring
RFC3339 lower bound for created_at.
created_beforestring
RFC3339 upper bound for created_at.
updated_afterstring
RFC3339 lower bound for updated_at.
updated_beforestring
RFC3339 upper bound for updated_at.
expires_afterstring
RFC3339 lower bound for expires_at.
expires_beforestring
RFC3339 upper bound for expires_at.
Response · 200
dataarray of objectrequired
active_payment_attemptobject
checkout_session_idstringrequired
closed_reasonstring
Internal reason supplied when the checkout session was closed. This is not shown to the buyer.
created_atstring
RFC3339 timestamp.
custom_textobject
customerobject or null
customer_collectionobject
delivery_method_idsarray of stringrequired
Immutable delivery method assignment captured when the checkout was created.
delivery_pinned_dependenciesarray of object
Merchant-only immutable configuration lineage used to evaluate delivery quotes.
delivery_selection_requiredbooleanrequired
Whether the order has at least one remaining quote-resolved fulfillment choice that must be selected before payment.
expirationobject
expires_atstring
RFC3339 timestamp.
external_reference_idstring
Caller-owned identifier for this resource in an external system.
fulfillmentone of
Current fulfillment choices for Flint-owned pricing. Checkout credentials receive the fields available to buyers; merchant credentials also receive configuration lineage and diagnostics. External pricing reports requires_explicit_quote; reading this field does not request a delivery quote.
Named conditions that affect checkout completion. Follow each problem's remediation action instead of reconstructing delivery lifecycle rules in the client.
promotion_configobject
recovery_expires_atstring or null
RFC3339 deadline for the restricted payment-attempt recovery window.
recovery_modebooleanrequired
Whether this terminal session credential is temporarily restricted to recovering its owning payment attempt.
recovery_payment_attempt_idstring
Payment attempt that this checkout credential may recover while recovery_mode is true.
Creates a hosted or embedded checkout session for an order, quick-pay charge, or subscription plan signup. Creation never implicitly replaces an open order session. To replace one, send order_id with replace_checkout_session_id set to the expected current session; the compare-and-swap replacement and collection-lock transfer commit atomically.
Request body
order_idobject
custom_textobject
customer_collectionobject
delivery_method_idsarray of string
Immutable delivery method assignment for this checkout. Omit the field to use the configured checkout default. Send an explicit empty array only when the order has no delivery obligations.
expirationobject
external_reference_idstring
Caller-owned identifier for this resource in an external system.
legalobject
metadatamap of string
order_idstringrequired
paymentsobject
promotion_configobject
redirectsobject
replace_checkout_session_idstring
Expected current open checkout session to replace atomically. Allowed only with order_id. A stale value returns CHECKOUT_SESSION_CURRENT_CHANGED and the current session ID; active payment work returns CHECKOUT_PAYMENT_RESOLVING.
surfaceenum
Defaults to hosted when omitted. Use embedded for a merchant-owned presentation.
hostedembedded
taxobject
themeobject
tipobject
quick_pay_itemobject
custom_textobject
customer_collectionobject
delivery_method_idsarray of string
Immutable delivery method assignment for this checkout. Omit the field to use the configured checkout default. Send an explicit empty array only when the order has no delivery obligations.
expirationobject
external_reference_idstring
Caller-owned identifier for this resource in an external system.
legalobject
metadatamap of string
paymentsobject
promotion_configobject
quick_pay_itemobjectrequired
redirectsobject
surfaceenum
Defaults to hosted when omitted. Use embedded for a merchant-owned presentation.
hostedembedded
taxobject
themeobject
tipobject
plan_idobject
custom_textobject
customer_collectionobject
delivery_method_idsarray of string
Immutable delivery method assignment for this checkout. Omit the field to use the configured checkout default. Send an explicit empty array only when the order has no delivery obligations.
expirationobject
external_reference_idstring
Caller-owned identifier for this resource in an external system.
legalobject
metadatamap of string
paymentsobject
plan_idstringrequired
promotion_configobject
redirectsobject
surfaceenum
Defaults to hosted when omitted. Use embedded for a merchant-owned presentation.
hostedembedded
taxobject
themeobject
tipobject
payment_intent_idobject
custom_textobject
customer_collectionobject
delivery_method_idsarray of string
Immutable delivery method assignment for this checkout. Omit the field to use the configured checkout default. Send an explicit empty array only when the order has no delivery obligations.
expirationobject
external_reference_idstring
Caller-owned identifier for this resource in an external system.
legalobject
metadatamap of string
payment_intent_idstringrequired
Existing orderless PaymentIntent to collect in hosted checkout. Its amount, currency, customer, and payment options remain authoritative. Direct collection currently supports automatic-capture card, Apple Pay, and Google Pay payments.
paymentsobject
promotion_configobject
redirectsobject
surfaceenum
Defaults to hosted when omitted. Use embedded for a merchant-owned presentation.
hostedembedded
taxobject
themeobject
tipobject
Response · 201
dataobjectrequired
Checkout-session access returned for hosted or embedded checkout creation.
checkout_accessobjectrequired
checkout_sessionobjectrequired
hosted_checkoutobject
One-time hosted checkout access details for redirecting a buyer into Flint-hosted checkout.
GET/v1/checkout-sessions/{checkout_session_id}Requires scope: checkouts.checkout_sessions.read or checkouts.checkout_sessions.write
Returns a single checkout session by ID.
Path parameters
checkout_session_idstringrequired
Flint checkout session ID.
Query parameters
expandarray of enum
Supported expansions: customer, invoice, order, payment_intents, payment_link. Expansion requires checkouts.checkout_sessions.read plus the read scope for each expanded resource. Limits: at most 10 unique expand paths per request; path depth at most 2. To-many expansions are capped at 20 related objects per path. Repeat expand, for example expand=customer&expand=invoice, or pass one comma-separated value.
customerinvoiceorderpayment_intentspayment_link
Response · 200
dataobjectrequired
active_payment_attemptobject
checkout_session_idstringrequired
closed_reasonstring
Internal reason supplied when the checkout session was closed. This is not shown to the buyer.
created_atstring
RFC3339 timestamp.
custom_textobject
customerobject or null
customer_collectionobject
delivery_method_idsarray of stringrequired
Immutable delivery method assignment captured when the checkout was created.
delivery_pinned_dependenciesarray of object
Merchant-only immutable configuration lineage used to evaluate delivery quotes.
delivery_selection_requiredbooleanrequired
Whether the order has at least one remaining quote-resolved fulfillment choice that must be selected before payment.
expirationobject
expires_atstring
RFC3339 timestamp.
external_reference_idstring
Caller-owned identifier for this resource in an external system.
fulfillmentone of
Current fulfillment choices for Flint-owned pricing. Checkout credentials receive the fields available to buyers; merchant credentials also receive configuration lineage and diagnostics. External pricing reports requires_explicit_quote; reading this field does not request a delivery quote.
Named conditions that affect checkout completion. Follow each problem's remediation action instead of reconstructing delivery lifecycle rules in the client.
promotion_configobject
recovery_expires_atstring or null
RFC3339 deadline for the restricted payment-attempt recovery window.
recovery_modebooleanrequired
Whether this terminal session credential is temporarily restricted to recovering its owning payment attempt.
recovery_payment_attempt_idstring
Payment attempt that this checkout credential may recover while recovery_mode is true.
Updates mutable checkout session fields. Currently only metadata is mutable.
Path parameters
checkout_session_idstringrequired
Flint checkout session ID.
Request body
external_reference_idstring
Caller-owned identifier for this resource in an external system.
metadatamap of string or null
Caller-owned metadata. Omit this field to leave metadata unchanged. Send an object to merge by key, set a key to null to remove it, or set metadata to null to clear all metadata. An empty object makes no change. Empty strings are stored. Keys starting with flint_ are reserved and cannot be written through the public API.
Response · 200
dataobjectrequired
active_payment_attemptobject
checkout_session_idstringrequired
closed_reasonstring
Internal reason supplied when the checkout session was closed. This is not shown to the buyer.
created_atstring
RFC3339 timestamp.
custom_textobject
customerobject or null
customer_collectionobject
delivery_method_idsarray of stringrequired
Immutable delivery method assignment captured when the checkout was created.
delivery_pinned_dependenciesarray of object
Merchant-only immutable configuration lineage used to evaluate delivery quotes.
delivery_selection_requiredbooleanrequired
Whether the order has at least one remaining quote-resolved fulfillment choice that must be selected before payment.
expirationobject
expires_atstring
RFC3339 timestamp.
external_reference_idstring
Caller-owned identifier for this resource in an external system.
fulfillmentone of
Current fulfillment choices for Flint-owned pricing. Checkout credentials receive the fields available to buyers; merchant credentials also receive configuration lineage and diagnostics. External pricing reports requires_explicit_quote; reading this field does not request a delivery quote.
Named conditions that affect checkout completion. Follow each problem's remediation action instead of reconstructing delivery lifecycle rules in the client.
promotion_configobject
recovery_expires_atstring or null
RFC3339 deadline for the restricted payment-attempt recovery window.
recovery_modebooleanrequired
Whether this terminal session credential is temporarily restricted to recovering its owning payment attempt.
recovery_payment_attempt_idstring
Payment attempt that this checkout credential may recover while recovery_mode is true.
Closes an open checkout session before it naturally expires.
Path parameters
checkout_session_idstringrequired
Flint checkout session ID.
Request body
reasonstring
Internal reason for closing the checkout session. This is not shown to the buyer.
Response · 200
dataobjectrequired
active_payment_attemptobject
checkout_session_idstringrequired
closed_reasonstring
Internal reason supplied when the checkout session was closed. This is not shown to the buyer.
created_atstring
RFC3339 timestamp.
custom_textobject
customerobject or null
customer_collectionobject
delivery_method_idsarray of stringrequired
Immutable delivery method assignment captured when the checkout was created.
delivery_pinned_dependenciesarray of object
Merchant-only immutable configuration lineage used to evaluate delivery quotes.
delivery_selection_requiredbooleanrequired
Whether the order has at least one remaining quote-resolved fulfillment choice that must be selected before payment.
expirationobject
expires_atstring
RFC3339 timestamp.
external_reference_idstring
Caller-owned identifier for this resource in an external system.
fulfillmentone of
Current fulfillment choices for Flint-owned pricing. Checkout credentials receive the fields available to buyers; merchant credentials also receive configuration lineage and diagnostics. External pricing reports requires_explicit_quote; reading this field does not request a delivery quote.
Named conditions that affect checkout completion. Follow each problem's remediation action instead of reconstructing delivery lifecycle rules in the client.
promotion_configobject
recovery_expires_atstring or null
RFC3339 deadline for the restricted payment-attempt recovery window.
recovery_modebooleanrequired
Whether this terminal session credential is temporarily restricted to recovering its owning payment attempt.
recovery_payment_attempt_idstring
Payment attempt that this checkout credential may recover while recovery_mode is true.
POST/v1/checkout-sessions/{checkout_session_id}/query-pickup-availabilityRequires scope: commerce.delivery.read or commerce.delivery.write
Computes a bounded, non-holding pickup-location projection from current checkout authority and one inventory snapshot. Merchant-authenticated requests include configured Location diagnostics; checkout credentials receive only buyer-safe results.
Path parameters
checkout_session_idstringrequired
Flint checkout session ID.
Request body
buyer_locationone of
addressobjectrequired
typeenumrequired
address
expected_delivery_selection_idstring
maximum_distanceobject
unitenumrequired
meterskilometersmiles
valuenumberrequired
Response · 200
dataobjectrequired
audienceenumrequired
buyermerchant
evaluated_atstringrequired
RFC3339 timestamp.
evaluation_statusenumrequired
completeincompletedegraded
input_requirementsarray of objectrequired
locationsarray of objectrequired
merchant_diagnosticsarray of object
Configured Location exclusions. Present only for merchant-authenticated requests.