Markets, pricing and rates
Markets
Locales, currencies and tax classes, the storefront bootstrap, readiness, clone, backfill and make-default.
Channels
Channel types, channels, the channel bootstrap, and the visibility gate for unassigned rows.
Price lists
Lists and entries, bulk and ladder writes, and POST /v1/prices/resolve — the one route that answers a price.
Promotions
The admin reads and writes for promotions (overview, overlap checks, timeline, copy, end, batch disable) and the active flag on stacking groups and effect types.
Payment methods
Method configurations, the eligibility call a checkout makes, and the provider catalogue.
Payment lifecycle
Create, confirm, capture, cancel, refund — plus order-scoped capture, the dunning scan and provider webhooks.
Shipping rates
Methods, matrix tiers, the ladder generator, and POST /v1/shipping/rates.
Carriers and tracking
Carrier rows, the shipped catalogue, service levels, weight units and tracking-link resolution.
Settings
GET /v1/settings/apps/{app}, the market → tenant → default precedence, and X-Revenexx-Market as an assignment on write.
Five apps sit behind this group, and none of them is where the money is: they are where the answers are.
| App | Base path | Answers |
|---|---|---|
| markets | /v1/markets | Which locale, currency and tax rate apply |
| channels | /v1/channels | Which assortment a caller may see |
| prices | /v1/prices | What this buyer pays |
| payments | /v1/payments | What they may pay with, and moving the money |
| shipping | /v1/shipping | What delivery costs and who carries it |
A market also names the country it ships from (ship_from_country): the fields and their rules are on Markets.
The four routes that answer, not store
Most routes in these apps are configuration CRUD. Four are the point of the whole group, and each takes a buyer context and answers a question:
| Route | Question |
|---|---|
POST /v1/prices/resolve | What does this buyer pay for these items? |
POST /v1/payments/methods/eligible | What may this buyer pay with? |
POST /v1/shipping/rates | What does delivery to this destination cost? |
POST /v1/channels/visibility | May this channel see these rows? |
Reach for those before you build the same logic client-side out of the configuration rows. Each of them returns not only the answer but the diagnostics — an excluded list with a reason in words for every option that did not apply — which is what makes "why is invoice missing from my checkout" answerable without a support ticket.
Markets are not a security boundary
X-Revenexx-Market selects a market, and 465 of the gateway's operations accept it. Its effect differs by direction, and this is the thing to get right:
- On a write it assigns. Creating a row with the header records that row against the market, and it is visible only there. Creating one without leaves it unassigned — and unassigned means visible in every market, not hidden.
- On a read it is normally a no-op. A list or a get returns the same rows whether or not you send it. The exceptions are
POST /v1/prices/resolveandPOST /v1/shipping/rates, which do restrict their candidates to this market plus the unassigned ones.
It is never a security boundary — the tenant is fixed by the credential. See Settings and Markets.
In this group
- Markets — locales, currencies, tax classes, and the market bootstrap.
- Channels — assortment visibility.
- Price lists — and the resolve call.
- Promotions — the admin side: overview, overlaps, copy, end and batch disable.
- Payment methods — configuration and eligibility.
- Payment lifecycle — moving the money.
- Shipping rates — methods and tiers.
- Carriers and tracking — who carries it.
- Settings — the configuration surface underneath all of it.