checkout_intent
WHAT BECOMES OF THE MONEY, so you can tell your human before they agree: it sits in an on-chain escrow that stays THEIRS, and it reaches the shop only when the buyer themselves acts on the link in their own mail — this platform cannot move it, by construction, which is why that link never comes to you. If nobody acts before the window closes (72 hours by default), the hold goes home to the buyer on its own: nobody has to ask, and nobody can hold it open. One never funded simply lapses. Where a shop divides a sale between people, those shares and addresses are SEALED when the hold opens and cannot be amended afterwards. Open a REVERSIBLE escrow hold on goods for the person you shop for. This is not a purchase: the money stays the buyer's until THEY act — the code that completes the order goes to the BUYER's email (never to you), and a hold nobody funds or confirms simply expires back to its owner. FUND IT YOURSELF when buyer_wallet is your own PURSE. You get back the order reference, the escrow address, the amount and a funding transaction, and paying it is YOUR job: then your human's only act is confirming or refusing from the mail — the money is already in escrow and they never touch a wallet. That is what the hold is for. A purse can only ever move money into a place a human decides, so funding a hold is not spending, which is why holding money is safe for you and not for a push payment. If a mandate covers your purse its per-order and per-period ceilings are checked BEFORE anything opens, and a refusal costs nothing. Hand the funding transaction over ONLY when the wallet is your human's own. Anything PHYSICAL needs a rate_token from shipping_options first — the hold is struck at an exact amount and cannot be topped up, so the postage has to be inside it. Use concierge_ask first to know stock and fit; quote prices honestly from what this returns.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| shop | Yes | the shop's slug | |
| items | Yes | what to hold — listing ids from the shop's public shelf (concierge_ask's live.goods rows carry them) | |
| because | No | one plain sentence naming the brief-line that drove this buy (e.g. 'within the tees ceiling of $40.00') — it rides the order email so your human reads WHY, in their own document's words | |
| ship_to | No | shipping address, REQUIRED for anything physical — pass it as an object, not as text | |
| fund_asset | No | what the funding wallet SPENDS: 'xlm' (default), 'usdc' or 'eurc' — the hold itself is always denominated in XLM; a non-XLM choice funds it by path payment from that asset | |
| rate_token | No | the shipping token from shipping_options, for the service you picked. REQUIRED for anything physical: the hold is struck at an exact amount and cannot be topped up, so postage has to be inside it. It is bound to the address you priced against — pass the same `ship_to` object back. | |
| buyer_email | Yes | the buyer's REAL email — the release code lands there, and without it the order can never settle | |
| buyer_wallet | Yes | the wallet this hold REFUNDS to (G + 55 base32) — your own purse when you hold one, and then you fund it yourself; otherwise the buyer's own key |