Create a checkout session
Resolve the amount, apply the merchant’s payment policy, and return the transfer target when payment is required.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Required only when there is no order_id. Never trusted over an order.
Spoken after a failed one.
The merchant, when the caller knows it (a developer integrating over REST).
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).
Your own key/value pairs. Opaque to Ringup: stored, echoed, never interpreted.
The merchant's POS order. THE amount authority when present.
The voice platform's id for this call. Functional, not metadata: we call the platform with it to verify caller attestation. Recommended.
Where to send the caller back after payment.
Spoken after a successful payment.
Response
Success.
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.
What we RESOLVED. Under the order model the total is derived, so we must return it.
Where the total came from, so a derived amount is visibly derived.
order, request 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.
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).
required, optional, none Null unless payment is required. Nothing to transfer to means do not transfer.
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.