Your pricing process took a decade to build. A vendor's rule grammar wasn't built for it.
Most platforms treat B2B pricing as a one-size-fits-all problem with a fixed rule grammar bolted to the catalog. The pricing your company actually runs is a process built inside the business over years, sometimes decades. It has its own scoping dimensions, override hierarchy, and contract lifecycle. The grammar a vendor ships was never going to fit it.
The bespoke pricing service is the other dead end. A standalone engine sitting in front of checkout, owned by your team forever, drifting against the catalog every release and becoming the most expensive thing to touch.
B2B pricing makes pricing rules a first-class platform primitive. Commercial operations configures them in the dashboard. Engineering extends them in TypeScript. The engine evaluates them inside the checkout chain Vendure already runs.
The pricing rules a real B2B catalog needs
Five capabilities, all configurable from the dashboard, all extensible in TypeScript.
Quantity breaks and customer groups
Define per-variant quantity breaks (fixed price, fixed discount, or percentage off) scoped to a price group. Assign customers to groups in the dashboard or by code, and the engine applies the right break automatically at checkout.
Customer-specific price lists
A price negotiated in EUR for the EU channel stays in EUR on the EU channel. The scoping lives on the price-list entry itself (per customer group, per currency, per channel), built into the model, not bolted on with custom fields.
Scheduled activation
Every rule has optional start and end timestamps. Promotional windows, price-list renewal cycles, and seasonal pricing activate and expire on schedule. No CI job, no manual flip.
Bulk CSV import and export
Export the current channel's price list as CSV. Edit in your spreadsheet of choice. Import it back. Rows are validated by SKU, channel, currency, price type, and quantity before the replacement applies per variant.
Priority and exclusivity
When more than one rule matches a line item, priority decides. Lower priority numbers evaluate first, and an exclusive rule short-circuits the rest. Stacking and override behaviour is deterministic, not "the cheapest discount wins" guesswork.
One step in the checkout chain you already have
The same pricing pass that drives the catalog also drives B2B rules. Cart, checkout, and order all resolve through one engine, not a parallel service bolted on at the edge.
For each order line the engine evaluates the configured rule sources and runs the matching calculator.
Built-in rule sources: channel, customer group, quantity break, time window, order history, and product collection.
The price the buyer sees on the storefront, the price the rep sees on a quote line, and the price a returning customer pays at reorder all flow through the same code path.
When you need a rule the defaults do not express, write a new PriceRuleSource or PriceRuleCalculator in TypeScript, register it in plugin options, and it appears in the dashboard alongside the built-in ones. No catalog fork. No proprietary pricing DSL.
Commercial models the plugin handles directly
The shapes B2B pricing was designed against.
CSV is the source of truth procurement already trusts
The export and import flow uses a flat CSV: sku, minQuantity, priceType, value, priceGroup, currencyCode, channelCode. Rows are validated row-by-row, with the row number and a specific message returned for every rejected line so procurement can fix the spreadsheet and re-run.
Import behaviour is precise:
- Per-variant atomic: for every SKU present in the CSV, the variant's price list is replaced with the new rows.
- Absent SKUs untouched: variants not in the CSV keep their existing prices.
- Row-level failure: a failed row stops the row, not the import. The response counts imports, skips, and per-row errors.
Scoping is by current channel: a user importing in the EU channel cannot rewrite US prices, and channel codes in the CSV must resolve to channels the user can already write to.
Trusted by complex B2B commerce and enterprise retail.
What teams ask before they commit to a pricing engine
Real questions from commercial, procurement, and engineering teams evaluating B2B pricing.
Pricing is one part of Vendure Platform's B2B suite
The plugins that share the same pricing chain.




