Skip to main content
All three modes are rows in the same table with the same lifecycle. mode is stored verbatim and echoed on every read, so you can branch on it directly.

Open vs fixed amounts

Omit amount (or send "0") for an open session — the payer names the figure. Bound it with minAmount / maxAmount; both are ignored when amount is fixed. A checkout almost always fixes the amount, because you are billing for a specific thing. A deposit almost never does.

Withdrawal is not just a reversed deposit

The connected wallet is the source, not the destination. So a withdrawal never offers the send-to-an-address flow, and the backend rejects a deposit-address mint on that mode — there is nothing to mint one for. Checkout destinations also use payout addresses: an allowlist of self-custody destinations the merchant proved control of by signing a challenge. Withdrawals are different: their recipient is supplied per session and is deliberately not checked against that checkout allowlist.