Order Product
Place a real product order from Amazon or Walmart, shipped to a US address. You pay in USDC from your connected wallet: the listed item cost plus a tax buffer and a flat shipping allowance (so the retailer's shipping fee doesn't exceed the cap) plus a service fee of $2.50 + 2%; unused headroom between the cap and the retailer's final total is refundable. The product charge never exceeds the authorized cap. Ideal for: automated purchasing, reorder workflows, gifting, buying supplies with crypto.
Catalog action Integrations wallet Gas
Place a real product order from Amazon or Walmart, shipped to a US address. You pay in USDC from your connected wallet: the listed item cost plus a tax buffer and a flat shipping allowance (so the retailer's shipping fee doesn't exceed the cap) plus a service fee of $2.50 + 2%; unused headroom between the cap and the retailer's final total is refundable. The product charge never exceeds the authorized cap. Ideal for: automated purchasing, reorder workflows, gifting, buying supplies with crypto.
This action can require a wallet connector, gas, token movement, or an external side effect. Test with simulation or a controlled amount before using it in a live workflow.
At a Glance
| Field | Value |
|---|---|
| Action ID | order-product |
| Category | Integrations |
| Connector | wallet |
| Requires gas | Yes |
| Funds movement | None declared |
| Tags | shopping, order, ecommerce, purchase, write |
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
productUrl | string | Yes | Product URL to order (e.g. https://www.amazon.com/dp/B01N5IB20Q or https://www.walmart.com/ip/123456789\). A bare 10-character Amazon ASIN is also accepted. |
quantity | number | No | Number of units to order (1-10). Default: 1. |
itemPriceCents | number | Yes | Current listed per-unit price in integer USD cents (from search-products or get-product-details). Used to compute the authorized cap and service fee. |
maxTotalCents | number | No | Optional authorized product cap in integer cents, including tax and shipping. Defaults to the item subtotal plus a 15% headroom buffer. The product charge never exceeds this cap. |
shippingAddress | object | Yes | US shipping address for the order. |
chainId | number | No | Chain to pay from in USDC. Supported: 8453 (Base), 1 (Ethereum), 42161 (Arbitrum), 10 (Optimism), 137 (Polygon). Default: 8453. |
simulate | boolean | No | Sandbox/test mode. When true, places a vendor TEST order and SKIPS the on-chain USDC payment (no real money moves) — used to exercise the full order flow safely. Requires a configured test key; if none is available the order is refused rather than charged. Default: false (real order). |
Result Schema
| Field | Type | Required | Description |
|---|---|---|---|
orderId | string | Yes | Order identifier — use with get-product-order to track status. |
status | string | Yes | Order status (newly placed orders start as 'pending'). |
productUrl | string | Yes | Canonical product URL that was ordered. |
quantity | number | Yes | Number of units ordered. |
itemPriceCents | number | Yes | Listed per-unit price in integer cents. |
itemSubtotalCents | number | Yes | itemPriceCents * quantity. |
productMaxCents | number | Yes | Authorized product cap in cents (incl. tax/shipping headroom). |
serviceFeeCents | number | Yes | Service fee charged in cents. |
totalChargeCents | number | Yes | Total USDC charge in cents (cap + service fee). |
totalChargeUsd | number | Yes | Total USDC charge in USD (2 decimal places). |
paymentTransactionHash | string | null | Yes | USDC payment transaction hash (null in simulation). |
paymentChainId | number | Yes | Chain the USDC payment was made on. |
shipToSummary | string | Yes | Short shipping destination summary (e.g. 'Jane Smith, Seattle, WA 98101'). |
Examples
json{ "type": "order-product", "payload": { "productUrl": "https://example.com/webhook", "itemPriceCents": 1, "shippingAddress": "0x0000000000000000000000000000000000000000" }, "children": [], "connector": { "type": "wallet", "id": "conn_wallet" }}
bashcurl -X POST "https://api.b3os.org/v1/actions/order-product/test" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "productUrl": "https://example.com/webhook", "itemPriceCents": 1, "shippingAddress": "0x0000000000000000000000000000000000000000" }}'
Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.
