Skip to navigation

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 422 they return. Shipping also documents 400 and 413.
  • Requests: Create Site documents the optional certificate object, Update Email Template documents the three fields it actually reads, List Subscribers documents sort and direction, and shipping rate requests document rate_options.
  • Types, headers, and scopes: site_id and channel_id are integers, not strings. Tax customer endpoints require Accept, not Content-Type. Promotion Settings requires store_v2_information, not store_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} returns updatedAt as 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 includes updatedAt.
  • 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, and clearCartId act 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.
  • hosting and channel_id meta tags: every page now renders a channel_id meta tag with the storefront’s channel, and a hosting meta tag that reads native on Catalyst Native Hosting, vercel on Vercel, and other everywhere else. They sit alongside the existing platform and store_hash tags, 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.store can use https://c.<your-project>.catalyst-sandbox.store as its checkout URL. catalyst deploy --update-site-url --update-checkout-url sets it without prompting. An interactive catalyst deploy without those flags offers to point the channel at the deployment and then to move checkout there, and catalyst channels update makes 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 the catalyst channels update --checkout-url command that sets it. A custom domain is no longer mistaken for an auto-generated hostname.
  • catalyst build and catalyst deploy work on pnpm 12: pnpm 12 stops pnpm dlx with ERR_PNPM_IGNORED_BUILDS when a package has build scripts that haven’t been approved. Wrangler depends on esbuild and workerd, which both have one, so the Wrangler dry-run now passes --allow-build for those two packages. Older pnpm versions accept the same flags.
  • catalyst deploy sets CATALYST_HOSTING=native: the deployment now carries CATALYST_HOSTING=native as 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_experience field in GET and PUT /v3/checkouts/settings responses returns true.

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 type of pos, whether it comes from a built-in POS integration or was created as a custom pos channel 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.