Checkout Sessions: Stripe-hosted (or embedded) payment, subscription, and setup pages. See https://docs.stripe.com/api/checkout/sessions.

Functions

create-checkout-session

fn (request: CreateCheckoutSessionRequest): Map
fn (request: CreateCheckoutSessionRequest, options: ::stripe::api/RequestOptions | Map): Map

POST /v1/checkout/sessions - Create a Checkout Session. mode is "payment", "subscription", or "setup". Redirect the customer to the returned url, then fulfil on the checkout.session.completed webhook. ui_mode is "hosted_page" (default), "embedded_page", "elements", or "form"; embedded and elements modes use return_url instead of success_url/cancel_url. To restrict methods use allowed_payment_method_types (the API removed payment_method_types in 2026-09-30.endive).

Example

::checkout ::stripe::checkout

session ::checkout/create-checkout-session(::checkout/CreateCheckoutSessionRequest({
  mode: "payment",
  line_items: [{price: "price_...", quantity: 1}],
  success_url: "https://example.com/success?session_id={CHECKOUT_SESSION_ID}",
  cancel_url: "https://example.com/cancel"
}))
session.url  // => "https://checkout.stripe.com/c/pay/cs_..."

expire-checkout-session

fn (session: Str): Map
fn (session: Str, opts: Map): Map

POST /v1/checkout/sessions/{session}/expire - Expire an open Checkout Session so it can no longer be used.

get-checkout-session

fn (session: Str): Map
fn (session: Str, params: Map): Map
fn (session: Str, params: Map, opts: Map): Map

GET /v1/checkout/sessions/{session} - Retrieve a Checkout Session by ID. Check payment_status ("paid", "unpaid", "no_payment_required") after redirect. Optional params such as {expand: ["line_items", "subscription"]}.

list-checkout-session-line-items

fn (session: Str): Map
fn (session: Str, params: Map): Map
fn (session: Str, params: Map, opts: Map): Map

GET /v1/checkout/sessions/{session}/line_items - List the line items of a Checkout Session. Optional params: limit, starting_after, expand.

list-checkout-sessions

fn (): Map
fn (request: ListCheckoutSessionsRequest): Map
fn (request: ListCheckoutSessionsRequest, opts: Map): Map

GET /v1/checkout/sessions - List Checkout Sessions. Filter by customer, payment_intent, subscription, or status ("open", "complete", "expired").

update-checkout-session

fn (session: Str, params: Map): Map
fn (session: Str, params: Map, opts: Map): Map

POST /v1/checkout/sessions/{session} - Update an open Checkout Session. params takes the API's fields directly: metadata, line_items, shipping_options, collected_information.

Types

CreateCheckoutSessionRequest

CreateCheckoutSessionRequest type {
    mode: Str,
    line_items: Vec<Map>?,
    success_url: Str?,
    cancel_url: Str?,
    return_url: Str?,
    ui_mode: Str?,
    customer: Str?,
    customer_email: Str?,
    customer_creation: Str?,
    customer_update: Map?,
    client_reference_id: Str?,
    currency: Str?,
    locale: Str?,
    metadata: Map?,
    allowed_payment_method_types: Vec<Str>?,
    excluded_payment_method_types: Vec<Str>?,
    payment_method_collection: Str?,
    subscription_data: Map?,
    payment_intent_data: Map?,
    setup_intent_data: Map?,
    allow_promotion_codes: Bool?,
    discounts: Vec<Map>?,
    automatic_tax: Map?,
    tax_id_collection: Map?,
    billing_address_collection: Str?,
    shipping_address_collection: Map?,
    phone_number_collection: Map?,
    invoice_creation: Map?,
    submit_type: Str?,
    expires_at: Int?,
    expand: Vec<Str>?
}

ListCheckoutSessionsRequest

ListCheckoutSessionsRequest type {
    customer: Str?,
    customer_details: Map?,
    payment_intent: Str?,
    payment_link: Str?,
    subscription: Str?,
    status: Str?,
    created: Any?,
    limit: Int?,
    starting_after: Str?,
    ending_before: Str?,
    expand: Vec<Str>?
}