webaz_place_order
Buyer places order. Buyer api_key required.
Payment rail (choose explicitly at purchase):
direct_p2p (live, non-custodial direct pay): buyer pays the seller directly OFF-platform via the seller's chosen receiving account. Order amount is the protocol/base amount; the payable DISPLAY follows that account's declared currency/instruction (USDC only when the account is USDC/USD — otherwise the seller's currency, "以收款说明为准"). WebAZ does NOT custody, route, validate, or restrict the method/currency. Pass
direct_receive_account_id. Eligibility is enforced by the SERVER; ineligible → the route's own gate error.usdc_escrow (on-chain escrow, USDC on Base): funds enter the escrow contract; buyer deposits via wallet on the order page after create. Channel-gated — server rejects when off.
Any unavailable rail, an omitted rail, or the compatibility-only escrow input is rejected. Never auto-switch rails.
usdc_escrow timing: create returns pay_deadline_hours; deadlines re-anchor after on-chain deposit; NO in-protocol fault/compensation — after autoReleaseAt anyone may trigger release to the seller unless disputed on-chain.
Options:
B1 cross-border tax: server auto-estimates duty (seller's est_import_duty_pct × price)
B2 privacy:
anonymous_recipient=true→ PR-XXXXX alias on shipping labelB5 donation:
donation_pct0 / 0.5 / 1 / 2 / 5% → charity_fund
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Note to seller (optional) | |
| api_key | No | Buyer's api_key (or omit and set the WEBAZ_API_KEY env var) | |
| offer_id | No | RFC-032 negotiated offer (off_…) the seller bound to YOUR human. Exclusive with session_token/coupon/multi-SKU. You never send a price: the server reads it as min(offer, listing), never above the offer. An id, not a credential — another human's grant gets OFFER_MISMATCH. NETWORK only; 404 FEATURE_DISABLED while the flag is off; 409 OFFER_INVALID/EXPIRED/USED/MISMATCH/VOID/NO_COUPON. Agents consume, never issue. | |
| quantity | No | Quantity, default 1 | |
| product_id | Yes | Product ID to buy (from webaz_search) | |
| donation_pct | No | [B5] Per-order donation pct (0 / 0.5 / 1 / 2 / 5). Computed separately + into charity_fund, posted on order complete. | |
| payment_rail | No | Payment rail — pass one explicitly. "direct_p2p" (live, non-custodial): you pay the seller off-platform per their receiving account (USDC only as base/reference amount; WebAZ doesn't custody/route/validate currency) — requires direct_receive_account_id; the server runs all eligibility gates (you do not). "usdc_escrow" (on-chain escrow, USDC on Base): funds go to the escrow contract; buyer deposits via wallet on the order page; channel-gated — server rejects when off. The compatibility-only "escrow" input and an omitted rail are rejected. | |
| session_token | No | Price-lock session_token (recommended): from webaz_verify_price; guarantees order price = displayed price | |
| digital_delivery | No | Game currency: buyer_fields, no address; the owner confirms ban risk on webaz.xyz | |
| promoter_api_key | No | Referrer api_key (optional). ⚠️ Only L1 recorded (direct referrer, 70% commission); L2/L3 can't be inferred via MCP, so the undelivered L2/L3 portions go to commission_reserve (protocol reserve, in-only). Full 7:2:1 three-tier chain requires buyer clicking ?ref= URL from webaz_share_link (creates product_share_attribution). | |
| shipping_address | No | Shipping address (free text). OMIT to use your saved default — resolved inside the call, never shown to agents. No default saved → ADDRESS_REQUIRED. | |
| anonymous_recipient | No | [B2] Anonymous recipient: system generates PR-XXXXX alias instead of real name (seller label shows alias + address only) | |
| direct_receive_account_id | No | For payment_rail="direct_p2p": the seller's direct-receive account id to pay. Ignored on non-direct rails. |