The Express B2B API gives you real-time access to orders, billing accounts, catalog, and webhooks. REST endpoints, API key auth, no friction.
Available on every plan. Use it to push orders into your ERP, sync inventory, or trigger downstream workflows the moment something happens.
Ask AI about our API
{ "data": [ { "id": "01936b4a-2c5e-7a1f-9d83-e7f2c4a18b3d", "status": "pending_approval", "billing_account": { "id": "01936a11-8d3f-7c0e-b541-94e1c73b2f8a", "name": "Midwest Restaurant Group", "pricing_tier": "volume_b" }, "site": { "id": "01936a12-ff40-7c9e-b112-73e4d9b8a214", "name": "Chicago — Loop" }, "items": [ { "sku": "NAP-LIN-WHT-200", "qty": 4, "unit_price": "38.50", "line_total": "154.00" } ], "subtotal": "154.00", "created_at": "2026-03-15T14:32:07Z" } ], "meta": { "total": 47, "per_page": 25 } }▍
The API covers the data your ERP, WMS, and internal tools actually care about — not a surface-level subset.
Pull orders by status, date range, billing account, or site. Each record includes full line items, negotiated pricing applied at order time, approval state, and timestamps.
Push products, update inventory levels, and manage pricing tiers without touching the admin panel. Keep Express B2B in sync with your ERP or warehouse system automatically.
Register endpoints to receive real-time events when orders are placed, approved, rejected, or fulfilled. No polling. Signed payloads so you know the request is genuine.
Every endpoint returns JSON and follows standard HTTP conventions. No surprises.
/api/orders
List orders
Returns paginated orders. Filter by status, billing_account_id, site_id, or date range.
{ "data": [ { "id": "...", "status": "pending_approval", ... } ], "meta": { "total": 47 } }
/api/orders/{id}
Retrieve an order
Full order detail including all line items, applied pricing, site, billing account, and approval history.
{ "id": "01936b4a-...", "items": [ { "sku": "NAP-LIN-WHT-200", "qty": 4, "line_total": "154.00" } ], ... }
/api/products
Create or update a product
Upserts a product by SKU. Include pricing overrides for specific billing accounts in the same request.
{ "sku": "NAP-LIN-WHT-200", "name": "...", "base_price": "38.50", "pricing": [ { "tier": "volume_b", "price": "34.00" } ] }
/api/webhooks
Register a webhook
Subscribe a URL to one or more event types. Returns a signing secret for verifying incoming payloads.
{ "url": "https://yourapp.com/hooks/orders", "events": ["order.placed", "order.approved"] }
/api/billing-accounts
List billing accounts
All billing accounts in your workspace with their sites, pricing tiers, and approval configuration.
{ "data": [ { "id": "...", "name": "Midwest Restaurant Group", "sites_count": 7, "pricing_tier": "volume_b" } ] }
Generate an API key from your admin panel. Pass it as a Bearer token on every request. No OAuth flows, no token refresh — just a key you control.
| Endpoint type | Limit |
|---|---|
| Read endpoints | 120 / min |
| Write endpoints | 60 / min |
| Webhook registration | 10 / min |
| Bulk product upsert | 500 records / req |
Limits are per API key. Exceeded requests return 429 Too Many Requests with a Retry-After header.
YYYY-MM format. Endpoint URLs stay stable across versions.Every event carries the full order context. No follow-up API call needed to know what changed — the payload has everything.
order.placed
A buyer submitted an order
order.approved
Order passed approval review
order.rejected
Order was rejected by an approver
order.fulfilled
Order marked as fulfilled
order.cancelled
Order cancelled by buyer or admin
{ "event": "order.placed", "id": "wh_01936b5c-3f2a-7e4d-8b29-c1d4e5f6a7b8", "created_at": "2026-03-15T14:32:08Z", "data": { "order_id": "01936b4a-2c5e-7a1f-9d83-e7f2c4a18b3d", "status": "pending_approval", "billing_account_id": "01936a11-8d3f-7c0e-b541-94e1c73b2f8a", "site_id": "01936a12-ff40-7c9e-b112-73e4d9b8a214", "total": "154.00", "items_count": 1 } }
Every payload is signed with X-ExpressB2B-Signature (HMAC-SHA256). Verify it before processing.
No feature tier to unlock. Generate a key from your admin panel and start pulling orders the same day you go live.