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.
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 |
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.
- 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.