Pay a quoted order
shop.order.payPay a quote with x402 (X-Payment header on this /mcp call, exact total_usd to the merchant payout wallet). The payment is settled and its receipt awaited BEFORE anything is delivered: status paid carries order {order_id, state, tx_hash, fulfillment?}; payment_pending (receipt not seen within 30 s) carries order_id, poll shop.order.get; repeating the call without payment on a quote you already paid returns already_placed. Without a payment the result is an error carrying the 402 challenge (accepts[0].payTo/amount, extra.quote_id) and pay.mpp.url for MPP clients. Errors: 402 payment_amount_mismatch, 410 quote_expired (a new quote is attached), 429 test_sku_daily_cap, 422 pii_required (+ merchant_encryption_key), 409 merchant_key_rotated, 400 pii_plaintext_rejected.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pii | No | Buyer data the quote lists in requires_pii, ONE envelope per kind: {"<kind>": {kid, alg: "hpke-x25519-sha256-chacha20" | "sealed-box-x25519", ciphertext_b64}}, encrypted to merchant_encryption_key (AAD = quote_id, max 16 KB). Plaintext is refused with 400 pii_plaintext_rejected. | |
| quote_id | Yes | ||
| buyer_company | No | ||
| waive_withdrawal | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | ||
| state | Yes | ||
| status | Yes | ||
| order_id | Yes |