booking_intent
WHAT BECOMES OF THE MONEY: it sits in an on-chain escrow that stays the buyer's, and it reaches the shop only when the buyer acts on the link in their own mail — this platform cannot move it, by construction. A hold nobody acts on goes home when its window closes. IF THE APPOINTMENT IS CANCELLED, the shop's own cancellation terms decide, and they were SEALED onto this hold when it opened: the free-cancel window, what a late cancel or a no-show keeps, and a dispute window (72 hours on the standard terms). The arbiter enforces the copy recorded at open, not a later opinion. Read the shop's OWN terms back to your human rather than describing a default — ask the shop, never assume. Open a reversible DEPOSIT hold on a real appointment, in your human's name. Same ceiling as checkout_intent and the same reason: this is a HOLD, not a booking that has taken money. The code that completes it goes to the buyer's own inbox, never to you, and an unfunded hold hands the slot back on its own. FUND IT YOURSELF when buyer_wallet is your own purse — the human should be confirming a deposit that is already sitting in escrow, not sending one. Hand the funding transaction over only when the wallet is theirs. You must pass the buyer's real email and Stellar public key, and the shop's cancellation policy is consented to by asking for this.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | anything the shop should know | |
| shop | Yes | the shop's slug | |
| because | No | the brief-line that drove this booking — it rides the buyer's mail | |
| service | Yes | the service id from booking_offer | |
| starts_at | Yes | the opening you want, ISO — from booking_offer's list | |
| buyer_name | Yes | who the appointment is for | |
| buyer_email | Yes | the buyer's real inbox — the release code lands there, not here | |
| buyer_wallet | Yes | the wallet this deposit REFUNDS to (G + 55 base32) — your own purse when you hold one, and then you fund it yourself; otherwise the buyer's own key |