Skip to main content
POST
Create a checkout session

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
caller_phone
string
required
amount_cents
number

Required only when there is no order_id. Never trusted over an order.

currency
string
failure_message
string

Spoken after a failed one.

merchant_id
string

The merchant, when the caller knows it (a developer integrating over REST).

merchant_number
string

The merchant's own dialed number, when the caller knows the CALL but not the merchant (the transfer tool). Resolved to a merchant within the authed vendor; an unregistered number is an inaudible none, not an error (R13c-ii).

metadata
object

Your own key/value pairs. Opaque to Ringup: stored, echoed, never interpreted.

order_id
string

The merchant's POS order. THE amount authority when present.

platform_call_id
string

The voice platform's id for this call. Functional, not metadata: we call the platform with it to verify caller attestation. Recommended.

return_to
string

Where to send the caller back after payment.

success_message
string

Spoken after a successful payment.

Response

Success.

agent_message
string

The one line a voice agent should say for this outcome, so the transfer tool never invents copy: "no payment is needed", "transferring you now", or "payment is unavailable" all come from here (R13c-ii). Errors carry the same field under error.agent_message.

amount_cents
number

What we RESOLVED. Under the order model the total is derived, so we must return it.

amount_source
enum<string>

Where the total came from, so a derived amount is visibly derived.

Available options:
order,
request
cards
object[]

Cards chargeable AT THIS MERCHANT, newest first. Handle-aware, not merely silo-aware: a Clover card enrolled at merchant A has no charge handle at merchant B, and offering it would fail at charge after the caller had already agreed to it. Empty means text a link.

checkout_session_id
string
currency
string
default_card_id
string | null
expires_at
string
merchant_id
string

The merchant this resolved to, echoed back. Useful when the caller passed a merchant_number and wants to know which merchant it matched; empty string when no merchant resolved (an inaudible none, R13c-ii).

metadata
object | null
payment_required
enum<string>
Available options:
required,
optional,
none
transfer_to
string | null

Null unless payment is required. Nothing to transfer to means do not transfer.

transfer_to_number
string | null

The same hand-off as a plain phone number, for platforms that can only transfer calls to a number. The call arrives without the token and the payment line resolves the session by the caller's number. Prefer transfer_to when the platform can dial a SIP URI.