Connect your systems
to your order data.
Express B2B provides a REST API with endpoints for orders, billing accounts, catalog, and webhooks, authenticated via API key. A public MCP server at /mcp enables AI assistants to query live pricing, features, and competitor comparisons directly. Outbound webhooks fire on order creation, status changes, and approval events.
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 } }▍
Three surfaces. Everything you need.
The API covers the data your ERP, WMS, and internal tools actually care about — not a surface-level subset.
Orders
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.
Catalog
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.
Webhooks
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.
Clean, predictable, REST.
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" } ] }
OpenAPI Standard
The API follows the OpenAPI specification. A machine-readable spec and Swagger UI are coming at public beta.
One header. Every request.
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.React to what happens, when it happens.
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.
Connect AI assistants directly.
Express B2B exposes a public Model Context Protocol server at expressb2b.com/mcp. Add it to any MCP-compatible AI client and your assistant can query live, accurate data about the platform.
No API key required. No authentication. The server exposes public marketing data — pricing, features, comparisons.
calculate-pricing-tool
Pass an annual GMV figure. Get a full cost breakdown — GMV fee tiers, subscription, all-in monthly total per plan.
get-features-tool
Full feature list across all plans, or filtered to a specific plan. Accurate, live data — not a cached summary.
get-comparison-tool
Pass a competitor slug — phone-and-email, shopify-b2b, netsuite, and more. Returns an honest strengths/limitations breakdown.
Connect from Claude Desktop
{ "mcpServers": { "express-b2b": { "type": "http", "url": "https://expressb2b.com/mcp" } } }
Connect from any MCP client
{ "servers": [{ "name": "Express B2B", "type": "http", "url": "https://expressb2b.com/mcp" }] }
No API key required. The server exposes public data only — pricing, features, comparisons.
API access is included on every plan.
No feature tier to unlock. Generate a key from your admin panel and start pulling orders the same day you go live.