Meet the oBundle Team

Let’s get connected!

Book a time
BigCommerce B2B Quote Management: Custom Quote Templates, Extra Fields and a Quote-to-Cash Workflow That Closes

BigCommerce B2B Quote Management: Custom Quote Templates, Extra Fields and a Quote-to-Cash Workflow That Closes

In B2B ecommerce, the quote is the product. Long before an order exists, the quote is the document your buyer forwards to their finance team, attaches to a purchase requisition, and argues over in a procurement meeting you will never attend. If it looks generic, prices things in a column order nobody recognizes, or arrives in the wrong language, it slows the deal down — and in B2B, a slow deal is usually a lost one.

That is why the September 30, 2026 release of custom quote templates in BigCommerce B2B Edition matters more than its modest changelog entry suggests. For the first time, merchants can control what a quote actually says, per storefront and per locale, without a developer rebuilding a PDF renderer from scratch.

This guide covers BigCommerce B2B quote management end to end: the lifecycle a quote moves through, who is allowed to do what, how discounts actually resolve, what the new template system can and cannot do, and the GraphQL path if you are running headless. It is written for merchants and the teams who implement for them.

What changed on September 30, 2026

BigCommerce shipped custom quote templates for B2B Edition. The short version: quote documents are now a configurable artifact in the control panel rather than a fixed output. Specifically, merchants can:

  • Create, rename, enable, disable and delete quote templates directly from the control panel, with legacy templates kept available as fallbacks.
  • Control the product table — which columns appear, what order they appear in, and what each column header says, set independently per locale.
  • Translate every phrase in the template per locale, with automatic fallback to the default locale for anything left untranslated.
  • Insert quote module extra fields as template variables, so custom data you already collect can be printed on the PDF.
  • Assign templates per storefront, with a separate default template designated for each storefront.
  • Preview with sample data, send a test email, and set a default subject line per template before anything reaches a buyer.

A related limit landed the same day: email templates now accept a maximum of 20 locale objects in the translations array per channel, counted separately for each channel. If you operate in more than twenty locales on a single channel, that ceiling is a planning constraint, not a rounding error.

This arrives roughly eighteen months after BigCommerce launched CPQ in B2B Edition on March 3, 2025, which reworked the back-end quoting workflow itself — configurable field order, a mobile-friendly interface, company account creation inside the quote flow, and faster quote-to-order conversion. CPQ fixed how reps build quotes. Custom templates fix what the buyer receives. Together they close a loop that was genuinely awkward before.

The quote lifecycle, and why status discipline matters

A B2B Edition quote moves through four states: Draft, In Progress, Ordered, and Expired. Once a quote is marked as ordered, it generates an order in both B2B Edition and the underlying BigCommerce store.

The BigCommerce B2B Edition quote lifecycle A quote moves from Draft to In Progress, then either to Ordered when the buyer converts it to an order, or to Expired when it passes its expiredAt date. Quote lifecycle: Draft → In Progress → Ordered (or Expired) Draft Rep or buyer builds it In Progress Priced, sent, negotiated Ordered Order in both systems Expired Past expiredAt No conversion before the expiry date → the quote can no longer become an order Request for quote Quotes – View Quotes – Convert to order Permissions gating each step

The state that quietly causes the most trouble is Expired. Every quote carries an expiredAt value, and once that date passes, the quote can no longer be converted into an order. That is a hard stop, not a warning banner. If your sales team sets thirty-day expiries out of habit while your buyers' procurement cycles run forty-five days, you have built a renegotiation into every deal. Audit your default expiry window against how long your customers' approval chains actually take, not against what felt tidy when the store was configured.

Expiry is also a pricing control. In categories where your input costs move — freight, metals, anything energy-linked — a short expiry is the mechanism that keeps a six-month-old quoted price from being honored at a loss. The fix for buyer friction there is not a longer expiry; it is a template that states the expiry prominently so nobody is surprised.

Who can do what: roles and permissions

B2B Edition separates quote actions by role, and the permission names are worth knowing because they are what you will configure on custom roles:

Action Permission Typical holder
Request a quote Quotes – Request for quote Any built-in user role, or a custom role with this permission
View quotes Quotes – View Buyers and above with the permission granted
Convert a quote to an order Quotes – Convert to order Senior Buyer or higher, or a custom role with this permission

That third row is the one to get right. The ability to turn a quote into a live order is effectively spending authority, and B2B Edition deliberately gates it above the Junior Buyer level. A common mistake during implementation is granting convert-to-order broadly because it removes a support ticket during UAT, then discovering that junior staff at a customer can commit their employer to a purchase order. Map the permission to the customer's real approval hierarchy during onboarding, and revisit it whenever a large account restructures its team.

The surrounding entities matter too. Shopping lists can be created by Junior Buyers but need approval from a Senior Buyer or Admin, and they can be converted into quotes or pushed straight into a cart. Invoices let buyers pay after the order is placed, through the Buyer Portal's Invoices section, with both online and offline payment supported. Purchase order payments require manual enablement and run through the check payment option as an asynchronous method, visible only to B2B buyers rather than B2C customers or guests. If your customers buy on PO terms, that enablement step is not optional and is easy to miss on a new build.

Anatomy of a quote: the fields your template can print

Before you design a template, it helps to know what data is actually on a quote. A B2B Edition quote carries:

  • Pricing: subtotal, discount, grandTotal, totalAmount, plus shipping and tax totals; at the line level, basePrice, offeredPrice and discount.
  • Identity and metadata: UUID, ID, creation timestamp, quote number, title, and quote URL.
  • People: contact information captured statically on the quote, plus the assigned sales rep's name and email.
  • Content: the product list with variant details, SKU, quantity and image URLs; the message thread between buyer and rep (trackingHistory); sales rep notes; and legal terms.

Note that contact information is static on the quote. It is a snapshot, not a live join to the customer record. That is usually the behavior you want for a document that may be legally relied upon, but it means a quote issued before a buyer changed roles will keep showing the old contact. Reps should reissue rather than assume the document self-updates.

How discounts actually resolve

Discounts work through three mechanisms, and they do not behave identically:

  1. Per-line-item percentages, which adjust the offeredPrice on that line.
  2. Total percentage discounts, applied across the quote.
  3. Fixed amount discounts, which leave basePrice intact.

The practical consequence: because line-item discounts move offeredPrice while basePrice stays where it is, you can design a template that shows list price and negotiated price side by side on every row. For buyers who have to justify a purchase internally, that two-column view does real work — it turns your quote into evidence that the procurement team got a concession. If instead you only print the final number, you have thrown away the strongest argument in the document.

Fixed-amount discounts behave the same way at the quote level, preserving the original pricing for display. Choose the mechanism based on what you want the buyer's finance team to see, not just on which is faster to key in.

How discounts resolve on a B2B quote Line item discounts change offeredPrice while basePrice stays fixed; a total percentage or fixed amount discount applies at the quote level; the result flows into subtotal, discount, tax, shipping and grandTotal. Three discount mechanics, one grand total Per line item basePriceunchanged, always visible − line discount %set by the sales rep = offeredPricewhat the buyer pays per unit × quantity, per product or variant (SKU) At quote level Total percentage discountapplies across the quote Fixed amount discountbasePrice stays intact Use fixed amounts when the buyer must see list price and the concession side by side. Resolves into the totals your template prints subtotal discount tax total shipping total grandTotal + storeCreditTotal on orders

Designing a quote template that performs

With the control panel now owning template structure, the design decisions are yours. A few that consistently matter:

Order the product table the way your buyer reads it. Column sequence is configurable, so lead with the identifier the customer uses internally. If your accounts reference your SKU, lead with SKU. If they reference their own part numbers, that is an extra field — see below — and it belongs in column one, ahead of anything of yours.

Set locale-specific column headers deliberately. Headers translate independently of the rest of the template, which means a German quote can say Artikelnummer rather than a literal rendering of "SKU." Translating the body but leaving table headers in English is the single most common way a localized quote still reads as machine output.

Use the default-locale fallback as a safety net, not a strategy. Untranslated phrases fall back to the default locale, so a half-finished translation ships as a bilingual document rather than a broken one. That is good engineering and a poor customer experience. Treat fallback as protection against a missed string, not as permission to launch a locale at 60% coverage.

Set the default subject line per template. The subject is the first thing the buyer sees and the field most often left at its default. A subject carrying the quote number and your company name is markedly easier to find three weeks later in a procurement inbox than one that says "Your quote."

Extra fields as template variables: the real unlock

The feature with the longest tail here is the ability to surface quote module extra fields as variables inside the PDF template. Most mature B2B operations already collect data that has no home on a standard quote: the customer's internal part number, a project or job code, a contract reference, a delivery window, a required certification, the buyer's own PO number.

Previously that data lived in the system but could not be printed, so reps retyped it into a notes field or, more often, into a separate spreadsheet emailed alongside the quote. Now it can be a first-class variable in the document.

The highest-value use is matching the buyer's reference scheme. A quote that prints the customer's part numbers next to yours can be reconciled against their ERP without a human translating between catalogs. That one change removes a step from their approval process, and removing steps from a buyer's internal process is how quotes get approved faster.

A caution: extra fields are only as good as their capture discipline. If the field is optional and half your reps skip it, your template will print blanks on half your quotes, which looks worse than not having the field. Decide which extra fields are genuinely required before you put them in the document, and enforce that in the quote creation workflow rather than hoping.

Multi-storefront and multi-locale: one catalog, several voices

Templates can be assigned per storefront, each with its own designated default. For merchants running separate storefronts for distinct brands, regions or channels, this closes a long-standing gap where quote documents were the one customer-facing artifact that could not be differentiated.

Plan the matrix before you build it. Storefronts multiply by locales, and each combination is a template assignment and a translation set to maintain. Three storefronts across four locales is twelve documents to keep current every time your legal terms change. That is manageable with a deliberate structure — a shared base template per brand, locale variants layered on — and genuinely painful if each one is built ad hoc.

Remember the 20-locale ceiling on email template translations per channel, counted separately per channel, and keep the quote template and the email that carries it in sync. A beautifully localized PDF attached to an English email is a half-finished job.

The headless path: quotes over GraphQL

If you are running a custom or headless storefront, the same quote model is available through the B2B GraphQL API, and the operations map cleanly onto the lifecycle.

Creating. The quoteCreate mutation accepts product details, addresses, currency information, and an initial message. That message field is more useful than it looks — seeding the thread with the buyer's stated requirement gives the rep context before they open the quote.

Reading. The quotes query returns paginated company quotes and supports filtering by number, status, title and date ranges, which is what you need to build a usable "my quotes" view. The quote query fetches a specific record by ID, UUID, store hash and creation timestamp.

Updating. The quoteUpdate mutation lets buyers send messages. Note the asymmetry: substantive rep-side modifications happen in the B2B admin, not through the buyer-facing mutation. Do not design a headless UI that implies buyers can edit pricing.

Rendering. The quoteFrontendPdf mutation generates a downloadable PDF with a specified language — the same templates you configured in the control panel, reachable from your custom frontend.

Converting. The quoteCheckout mutation loads the quote's agreed pricing into a BigCommerce cart and returns both a cartUrl and a checkoutUrl.

That last pair deserves a deliberate choice rather than a default. Sending the buyer to cartUrl lets them adjust quantities or add items, which is an upsell opportunity and a renegotiation risk in the same link. Sending them to checkoutUrl takes them straight to payment with the agreed terms locked. For a quote that took three weeks and two approvals to land, checkoutUrl is almost always the right answer.

Headless quote-to-cash flow with the B2B GraphQL API quoteCreate submits the request, the quotes and quote queries read it back, quoteFrontendPdf renders the templated PDF, and quoteCheckout loads the agreed pricing into a BigCommerce cart that returns cartUrl and checkoutUrl. Quote to cash, headless: which mutation does what quoteCreate products, addresses, currency, first message quotes / quote filter by status, number, title, date range quoteFrontendPdf renders your template in the chosen language quoteCheckout loads agreed pricing into a cart quoteCheckout returns two URLs — pick one deliberately cartUrl buyer can still adjust quantities and add items checkoutUrl straight to payment, nothing left to renegotiate

A pre-flight checklist before you enable new templates

Quote templates are customer-facing and often legally referenced, so treat the rollout like a storefront release rather than a settings change.

  • Preview with sample data first. The preview exists specifically so you can see how long product names wrap, how a 40-line quote paginates, and what an empty extra field looks like.
  • Send a test email to yourself and to one internal non-technical reader. The subject line, the attachment name and the first paragraph are what determine whether the quote gets opened.
  • Test the longest realistic quote you have. Templates that look perfect at five lines frequently break at fifty.
  • Verify every locale you have enabled, including the fallback behavior for a deliberately untranslated phrase.
  • Have legal review the terms block in each language before launch, not after a dispute.
  • Keep the legacy template available as a fallback until the new one has run clean for a full sales cycle.
  • Confirm the convert-to-order permission on your largest accounts matches their actual approval chain.
  • Check your default expiry window against real procurement timelines, per segment if they differ.

Where BigCommerce is taking B2B next

At Commerce Live 2026 on April 30, 2026, BigCommerce outlined a B2B roadmap that makes the template work look like groundwork rather than an endpoint. The announcements included AI-driven purchase order automation, event-driven webhooks, advanced pricing logic via cascading price lists, and the unification of B2B and B2C experiences in a single control panel.

Cascading price lists and quote templates are complementary: better pricing logic determines the number, and the template determines whether the buyer understands and trusts it. Event-driven webhooks are the piece that lets quote state changes drive systems outside BigCommerce — notifying a CRM when a quote hits In Progress, or triggering a finance workflow on conversion, without polling.

The broader platform direction matters too. The same event announced agent-ready product data through Feedonomics with distribution across ChatGPT, Gemini, Microsoft Copilot and Perplexity, alongside agent-enabled checkout and conversational search. B2B buying research increasingly starts in those surfaces. The quote remains the human-reviewed artifact at the end of that process, which is an argument for making it excellent rather than an argument that it is becoming less important.

Frequently asked questions

Can a buyer convert their own quote to an order?

Only if their role has the convert-to-order permission, which is restricted to Senior Buyer or higher, or to a custom role explicitly granted it. Junior Buyers can request quotes but cannot commit the purchase.

What happens to a quote after it expires?

Once the quote passes its expiredAt date it can no longer be converted into an order. The record remains for reference, but the pricing is no longer actionable and the quote must be reissued.

Can I use different quote templates for different storefronts?

Yes. Templates are assignable per storefront, and each storefront gets its own designated default template.

What happens if I only translate part of a template?

Untranslated phrases fall back to the default locale, so the document still renders — as a mix of languages. Use it as a safety net, not a shipping strategy.

How many locales can email templates support?

The translations array accepts up to 20 locale objects per channel, counted separately for each channel.

Can custom data appear on the quote PDF?

Yes. Quote module extra fields can be inserted into templates as variables, which is how customer part numbers, project codes and contract references get onto the document.

Does any of this work on a headless storefront?

Yes. The B2B GraphQL API exposes quote creation, retrieval, messaging, PDF generation and checkout conversion, so a custom frontend can run the full quote-to-cash flow using the same templates.

The bottom line

Custom quote templates turn the most important document in a B2B sale from a fixed output into something you can design around how your customers actually buy. The leverage is not in the styling. It is in printing the buyer's own part numbers, stating the expiry where it will be read, showing list price next to negotiated price, and doing all of that correctly in the buyer's language on the right storefront.

Those are implementation decisions, and they compound. A quote that a procurement team can process without translating between catalogs closes faster than one that looks nicer.

oBundle holds B2B Specialized certification in the BigCommerce Partner Program, and we build quote workflows, custom B2B integrations and the apps that fill the gaps around them. If you are planning a B2B Edition rollout, migrating onto custom quote templates, or trying to get a quote-to-cash process to behave on a headless storefront, get in touch — we are happy to look at what you have and tell you honestly what it needs.