Merchable APIReferenceGetting startedAuthentication & scopesDesignsPlacing an orderWebhooksPagination, errors & rate limitsVersioning & changelog

Getting started

The Merchable Account API lets you place orders from your own systems: read your designs (with the variant ids, unit prices and stock an order line needs), quote and place account orders, track fulfilment, and be notified by webhook. Account, shop and design data are read-only in v1 — content is managed in the web app or over MCP.

Base URL

https://api.merchable.co/v1

All requests and responses are JSON (application/json). Errors use application/problem+json (see Pagination, errors & rate limits).

1. Create an API key

In app.merchable.co go to Settings → Developer and create a key. Pick the scopes the integration needs (see Authentication & scopes). The key (mchp_…) is shown once — store it in your secrets manager.

2. Make a request

curl https://api.merchable.co/v1/account \
  -H "Authorization: Bearer mchp_your_key"
{
  "data": {
    "id": "6a1d…",
    "name": "Acme Climbing",
    "slug": "acme-climbing",
    "country": "AU",
    "currency": "AUD",
    "payment_method_on_file": true,
    "owner": { "email": "ops@acme.example", "name": "Sam Lee" }
  }
}

3. Find the designs you can order

curl "https://api.merchable.co/v1/designs?status=active" \
  -H "Authorization: Bearer mchp_your_key"

Each design lists its colours and sizes and two prices: retail_price, what it sells for in your shops, and purchase_price, what your account pays Merchable per unit. GET /v1/designs/{id} adds the variants array with everything an order line needs — the id you use as variant_id, the option names, the unit purchase price and the stock status — plus quantity tiers and any personalisation_zones (customer text such as a name on the back). The Designs guide walks through all of it.

Price delivery with POST /v1/shipping/estimate — see Placing an order.

4. Quote, then place an order

Quote first to see totals without committing:

curl -X POST https://api.merchable.co/v1/orders/quote \
  -H "Authorization: Bearer mchp_your_key" -H "Content-Type: application/json" \
  -d '{
    "items": [{ "design_id": "d8Xk2mQz", "colour": "Black", "size": "L", "quantity": 12 }],
    "delivery": { "type": "delivery", "shipping_method": "standard",
      "address": { "line1": "1 Example St", "city": "Melbourne", "state": "VIC",
                   "postcode": "3000", "country": "AU" } }
  }'

Then place it with an Idempotency-Key (see Placing an order):

curl -X POST https://api.merchable.co/v1/orders \
  -H "Authorization: Bearer mchp_your_key" -H "Content-Type: application/json" \
  -H "Idempotency-Key: po-2026-0042" \
  -d '{ ...same body..., "external_reference": "PO-2026-0042" }'

5. Follow the order

Poll GET /v1/orders/{id} or, better, pass a webhook_url when placing the order — see Webhooks. Every status change (order.approved, order.shipped, order.delivered, …) is delivered to it with the full order, including tracking numbers.

Interactive reference

The full endpoint reference with request/response schemas is at /docs; the raw OpenAPI document is at /v1/openapi.json.