API reference corrections across twenty specs
Corrected reference pages that did not match live API behavior. The APIs are unchanged; the pages now match what the endpoints accept and return.
- Response shapes: the four Channel Metafield operations documented the wrong body. They now match the
{ data, meta }response the gateway returns. Get Deployment Event Stream and Tail Worker Logs now show a field table per event. - Error responses: Create Site, Update Site, Delete Multiple Metafields, Update Redirects, and the shipping customs-information operations now document the
422they return. Shipping also documents400and413. - Requests: Create Site documents the optional
certificateobject, Update Email Template documents the three fields it actually reads, List Subscribers documentssortanddirection, and shipping rate requests documentrate_options. - Types, headers, and scopes:
site_idandchannel_idare integers, not strings. Tax customer endpoints requireAccept, notContent-Type. Promotion Settings requiresstore_v2_information, notstore_v2_marketing.
If you built against any of these pages, recheck your request and response handling:
B2B Edition Buyer Portal invoices respect your currency symbol placement
Invoice pages in the B2B Edition Buyer Portal now display the currency symbol on the side set by your store’s currency settings, instead of always placing it on the left.
- Invoice amounts: the invoice total, amount due, amount-to-pay field, and payment total now follow your currency’s symbol placement (left or right).
- Payment views: payment history and payment confirmation amounts use the same placement.
For details, see B2B Edition Buyer Portal.
B2B quote details now return the last-modified time
The B2B Edition Get Quote Details endpoint now returns updatedAt, so you can check whether a quote changed without calling List Quotes first.
- Last-modified time:
GET /api/v3/io/rfq/{quote_id}returnsupdatedAtas a Unix timestamp integer. It holds the same value that List Quotes returns for the quote. - Archive responses: archiving a quote with
PUT /api/v3/io/rfq/{quote_id}and{"status": "archived"}returns the quote details, so that response also includesupdatedAt. - Backward compatible: the field is new, and no existing response fields change.
For details, see the Quotes overview.
Catalyst 1.12.2
Catalyst 1.12.2 keeps a separate cart for each channel, so a cart started on one channel no longer appears or checks out on another. It also adds meta tags that identify how a storefront is hosted and which channel it serves.
- One cart per channel: the cart cookie used to hold a single cart ID with no channel attached, so the cart page, header count, and checkout all read the same cart after a shopper switched channels. The cookie now maps each channel ID to that channel’s cart, and
getCartId,setCartId, andclearCartIdact on the current channel. Login sends BigCommerce the cart for the channel the shopper signed in on, and logout sends the cart for the channel they signed out from. Existing single-cart cookies keep working and move to the new format on the shopper’s next cart action. hostingandchannel_idmeta tags: every page now renders achannel_idmeta tag with the storefront’s channel, and ahostingmeta tag that readsnativeon Catalyst Native Hosting,vercelon Vercel, andothereverywhere else. They sit alongside the existingplatformandstore_hashtags, so Support can confirm a storefront’s setup from its page source.
See the full 1.12.2 release notes for migration details and release tags.
Catalyst CLI 1.4.2
The Catalyst CLI (@bigcommerce/catalyst) 1.4.2 is a patch release. It can keep checkout on a native-hosted storefront’s own domain, fixes build and deploy on pnpm 12, and tells the storefront that it’s natively hosted.
- Same-domain checkout on auto-generated hostnames: a storefront on
<your-project>.catalyst-sandbox.storecan usehttps://c.<your-project>.catalyst-sandbox.storeas its checkout URL.catalyst deploy --update-site-url --update-checkout-urlsets it without prompting. An interactivecatalyst deploywithout those flags offers to point the channel at the deployment and then to move checkout there, andcatalyst channels updatemakes the same offer after changing a site URL. Both offers default to No, and a declined offer is saved per channel in.bigcommerce/project.json. Nothing is asked without a terminal or in CI. After setting the checkout URL, the CLI waits for its certificate, which usually takes a minute or two. If no certificate is issued within six minutes, the CLI removes the checkout URL so checkout keeps working on the default domain. An existing custom checkout URL is left alone, and re-running with an unchanged site URL no longer resets it. - Accurate cross-domain checkout warning: on an auto-generated hostname, the warning no longer says a checkout URL can’t be set. It names the
c.checkout hostname and prints thecatalyst channels update --checkout-urlcommand that sets it. A custom domain is no longer mistaken for an auto-generated hostname. catalyst buildandcatalyst deploywork on pnpm 12: pnpm 12 stopspnpm dlxwithERR_PNPM_IGNORED_BUILDSwhen a package has build scripts that haven’t been approved. Wrangler depends onesbuildandworkerd, which both have one, so the Wrangler dry-run now passes--allow-buildfor those two packages. Older pnpm versions accept the same flags.catalyst deploysetsCATALYST_HOSTING=native: the deployment now carriesCATALYST_HOSTING=nativeas a plain-text variable. Catalyst 1.12.2 reads it to render<meta name="hosting" content="native">.
For details, see the Catalyst CLI reference and Checkout Domains.
Enhanced Checkout is on by default for new stores
New stores now have the Enhanced Checkout experience turned on by default.
- Default for new stores: Enhanced Checkout is on for newly created stores, with no setup required. Store owners can turn it off under Settings > Checkout in the control panel.
- API reflects the default: On new stores, the read-only
enhanced_checkout_experiencefield inGETandPUT /v3/checkouts/settingsresponses returnstrue.
For details, see Get Checkout Settings.
Google Pay works correctly on product pages for multi-storefront stores
Thanks to user feedback, we’re beginning to roll out a fix so the Google Pay button resolves the shopper’s actual storefront channel before a cart exists, for example on a product page. You may notice changes in this area over the coming weeks.
- Fixes failures on secondary channels — shoppers browsing a non-default storefront channel no longer see Google Pay fail with a developer error when no cart exists yet.
- Applies before cart creation — covers flows like clicking Google Pay directly from a product page, where checkout and cart already worked correctly.
For details, see the Payments overview.
Manual orders can be assigned to POS channels
When you create a manual order in the control panel, you can now select a point-of-sale (POS) channel as the order’s channel.
- Which channels qualify. Any channel with a
typeofpos, whether it comes from a built-in POS integration or was created as a customposchannel with the Channels API. - What this means for integrations. Orders created this way report the POS channel’s ID in
channel_id, so Orders API responses and order webhooks can now include manually created orders on POS channels.
For details, see the Channels reference.
Product modifiers and options no longer fail to load when their text contains certain punctuation
We’re beginning to roll out a fix so a product’s modifiers and options load correctly when a
modifier’s or option’s default text contains a quotation mark followed by a semicolon (for example,
measurements written as 2.5"; 4"). You may notice changes in this area over the coming weeks.
- Modifiers and options no longer 500 on affected text: reading a modifier or option whose
stored default text contained a
";sequence used to corrupt the record internally, causing the product’s modifiers and options API calls, storefront page, and Control Panel product editor to return a server error. Affected records now load with their text intact.
For details, see the List Product Modifiers and List Product Options references.