### Zoho Commerce — two APIs side by side, one organization id

zone drives **two different Commerce APIs** under one `zone commerce`:

| API | Host | What lives there |
|---|---|---|
| Store API (original) | `commerce.zoho.com/store/api/v1` (+ `storefront`, `zs-site`) | products, orders, variants, categories, storefront, cart, checkout, site pages |
| Commerce API (newer) | `www.zohoapis.com/commerce/v1` | **quotes, quote requests, specifications, price lists, shipping zones and charges, pickup locations, collections, composite items, custom modules, contacts, invoices** |

The newer API is the one Zoho's current OpenAPI bundle describes; zone 0.8.3 added its 104 operations. Rows on it are absolute `zohoapis.com` URLs, retargeted to your datacenter.

#### The organization id — one value, two transports

```bash
zone commerce store list                              # discover: use zohofinance_orgid
zone ctx commerce organization_id=<id>
```

The store API takes it as the `X-com-zoho-store-organizationid` **header**; the newer API as the `organization_id` **query param**. zone fills both from the same stored value (the new rows embed `?organization_id=:organization_id`), so set it once.

#### Quotes live at `/estimates`

`zone commerce quote list` (and every other `quote` command) calls `/estimates` — that is the resource name the API uses for quotes. Quote *requests* from the storefront are `zone commerce quote-request list` and its siblings; `quote create-quote-from-quote-request` turns one into the other.

#### Which API to reach for

- Catalogue, orders, storefront, cart and checkout → the store API groups (`product`, `order`, `variant`, `category`, `storefront-*`, `cart`, `checkout`).
- Quotes, B2B price lists, specifications, shipping setup, pickup points, custom modules and contacts → the newer API groups (`quote`, `quote-request`, `pricelist`, `specification`, `shipping-zone`, `shipping-charge`, `pickup-location`, `custom-module`, `contact`).
- A few resources appear in both (products, orders, invoices, coupons). They are separate endpoints on separate hosts; the newer ones behave like Books and Inventory (`{code:0,…}` envelope, `page`/`per_page` paging).

#### Errors → what to do

- **`organization_id` missing / invalid organization** — `zone ctx commerce organization_id=<zohofinance_orgid>`; both APIs read that one stored value.
- **401 on a newer-API row, store API fine** — the newer API sits on `zohoapis`; re-run `zone login commerce` if the token predates it.
- **404 on a store-API path** — the store API is hosted on `commerce.zoho.com`; if your org lives on another datacenter, try the same call through the newer API group, which follows your datacenter.

#### Status

The newer-API rows come from Zoho's OpenAPI spec and are **not yet exercised against a live store** — each says so in its notes. Report anything that answers differently with `zone bug`.
