Customer-Specific Pricing: Tiered Discounts, Volume Commitments & Contracts

Master B2B pricing strategies with tiered discounts, volume commitments, contract pricing, and margin protection using Odoo

E

ECOSIRE Research and Development Team

Équipe ECOSIRE

15 mars 202610 min de lecture2.3k Mots

Cet article est actuellement disponible en anglais uniquement. Traduction à venir.

Fait partie de notre série B2B eCommerce & Operations

Lire le guide complet

Customer-Specific Pricing: Tiered Discounts, Volume Commitments & Contracts

A single product in a B2B catalog might have 15 different prices depending on who is buying, how much they are buying, what contract they are on, and when they are buying. Managing this complexity with spreadsheets and tribal knowledge is how companies lose margin. A customer gets the wrong price, a discount stacks where it should not, or a sales rep negotiates below cost because they could not see the floor.

The average B2B company loses 2-5% of gross margin to pricing errors, according to McKinsey. On $50 million in revenue, that is $1-2.5 million in preventable margin leakage.

Key Takeaways

  • Odoo's pricelist system supports six levels of pricing hierarchy, from contract-specific to list price fallback
  • Volume break pricing should be tied to commitments, not just individual order quantities, to prevent cherry-picking
  • Margin floors are non-negotiable --- every pricing rule must have a minimum margin guardrail
  • Pricing transparency builds trust; hidden discounts and opaque formulas erode buyer confidence

The B2B Pricing Hierarchy

B2B pricing is not a flat number. It is a calculation that evaluates multiple rules in order of precedence and returns the best applicable price. In Odoo, this hierarchy is implemented through the pricelist system.

Precedence Order

| Priority | Pricing Level | Example | Override Behavior | |----------|--------------|---------|-------------------| | 1 (Highest) | Contract price | $4.50/unit locked for 12 months | Ignores all lower levels | | 2 | Customer-specific price | $4.75/unit for Acme Corp only | Overrides group/volume | | 3 | Customer group price | $5.00/unit for Gold tier | Overrides volume/promo | | 4 | Volume break price | $5.25/unit for 1000+ units | Overrides promo/list | | 5 | Promotional price | $5.50/unit during Q4 promo | Overrides list only | | 6 (Lowest) | List price | $6.00/unit | Default fallback |

When a buyer places an order, the pricing engine evaluates from the top. If a contract price exists for that product and customer, it is used. If not, the engine checks for a customer-specific price, then group price, and so on down the hierarchy.

Configuring Pricelists in Odoo

Odoo pricelists support three pricing rule types.

Fixed price --- A specific price for a specific product. Use this for contract pricing and customer-specific negotiated rates.

Percentage discount --- A percentage off another pricelist (typically the list price). Use this for customer tier discounts (Gold gets 15% off list, Silver gets 10%).

Formula-based --- A calculation based on cost, list price, or another pricelist, with optional surcharges, rounding, and minimum margins. Use this for cost-plus pricing models.

Each pricelist can contain hundreds of rules covering different products, categories, date ranges, and minimum quantities. Odoo evaluates all applicable rules and applies the one with the highest priority (lowest sequence number).


Volume Break Pricing

Volume breaks reward larger purchases with lower per-unit prices. This is the most common B2B pricing strategy, but it is also the most commonly misconfigured.

Volume Break Structure

| Quantity | Price Per Unit | Discount from List | Margin | |----------|---------------|-------------------|--------| | 1-99 | $6.00 | 0% | 50% | | 100-499 | $5.40 | 10% | 47% | | 500-999 | $4.80 | 20% | 43% | | 1,000-4,999 | $4.20 | 30% | 38% | | 5,000+ | $3.60 | 40% | 33% |

The Volume Commitment Problem

Volume breaks based solely on individual order quantity create a perverse incentive. A buyer who needs 5,000 units over a year might place a single order for 5,000 to get the best price, then carry the inventory themselves. Or worse, they might claim they will order 5,000 units to get the price, then never order again after the first shipment.

The solution is volume commitment pricing: the discounted price is granted based on a contractual commitment to purchase a specified volume over a defined period, not based on individual order size.

Commitment-based volume pricing works as follows:

  1. Buyer commits to purchasing 5,000 units over 12 months
  2. Buyer receives $3.60/unit pricing on all orders during the contract period
  3. Orders can be any size (even 50 units at a time)
  4. If the buyer falls short of the commitment, a reconciliation adjustment is applied at contract end
  5. The adjustment invoices the difference between the commitment price and the actual earned price

This approach gives buyers flexibility in ordering patterns while protecting your margin from cherry-picking behavior.


Customer Tier Pricing

Customer tiers segment your buyer base into groups that receive different pricing based on their relationship value. This is simpler than individual customer pricing but more targeted than volume breaks.

Tier Definition Framework

| Tier | Annual Revenue | Discount | Payment Terms | Support Level | |------|---------------|----------|---------------|---------------| | Platinum | Above $500K | 25% off list | Net-60 | Dedicated rep | | Gold | $100K-$500K | 20% off list | Net-45 | Priority queue | | Silver | $25K-$100K | 15% off list | Net-30 | Standard | | Bronze | $5K-$25K | 10% off list | Net-30 | Standard | | Standard | Below $5K | 5% off list | Net-15 | Self-service |

Tier Movement Rules

Tiers should be dynamic, not permanent. A buyer who qualified for Gold last year but only spent $80,000 this year should be moved to Silver. Conversely, a Silver buyer who hits $120,000 should be upgraded to Gold mid-year.

Define clear rules for tier upgrades and downgrades.

  • Upgrade: Trigger when trailing 12-month revenue exceeds the next tier threshold. Apply the new pricing immediately to reward growth.
  • Downgrade: Trigger when trailing 12-month revenue falls below the current tier minimum for two consecutive quarters. Apply the new pricing at the next contract renewal to avoid punishing temporary dips.
  • Grace period: New customers start at the tier that matches their projected annual volume, with a 6-month review to confirm actual purchasing behavior.

In Odoo, tier-based pricing is implemented by creating a pricelist for each tier, assigning customers to the appropriate pricelist, and updating assignments through automated actions or manual review.


Contract Pricing

Contract pricing locks in specific rates for specific products over a defined period. This provides price stability for the buyer and revenue predictability for the seller.

Contract Pricing Components

A complete contract pricing agreement includes:

  • Product scope --- Which products are covered at contracted rates
  • Price schedule --- The specific price for each product
  • Volume commitment --- Minimum purchase quantity during the contract period
  • Term --- Contract duration (typically 12-24 months)
  • Escalation clause --- How prices adjust for cost changes (CPI index, raw material index, fixed annual increase)
  • Renegotiation triggers --- Events that allow price reopening (raw material cost exceeds threshold, volume exceeds/falls short of commitment)
  • Exclusions --- Products or services not covered by contract pricing

Price Escalation Strategies

| Strategy | Description | Buyer Preference | Seller Preference | |----------|-------------|------------------|-------------------| | Fixed for term | No price changes during contract | High | Low (cost risk) | | Annual fixed increase | 3-5% increase each year | Medium | Medium | | CPI-indexed | Tied to Consumer Price Index | Medium | Medium | | Raw material indexed | Tied to commodity prices | Low | High (cost pass-through) | | Open book | Cost + fixed margin | Low | High (margin protected) |

For more on managing the full contract lifecycle, see our guide on contract lifecycle management and renewals.


Promotional and Time-Limited Pricing

Promotions in B2B are not flash sales. They are strategic tools for clearing excess inventory, driving trial of new products, filling capacity during slow periods, or incentivizing early ordering.

B2B Promotion Types

Early order discount --- Buyers who place orders for next quarter's delivery by a deadline receive a 5-10% discount. This gives you demand visibility and smooths production scheduling.

New product introduction --- Launch pricing for the first 90 days of a new product, typically 10-15% below the expected list price. Designed to drive trial and build initial volume.

Excess inventory clearance --- Deep discounts on overstocked items, offered to specific customer groups most likely to use the product. Unlike consumer clearance, B2B clearance is targeted, not broadcast.

Bundled discount --- Discounts for purchasing complementary products together. A buyer who orders both the base chemical and the additive gets 8% off the combined order.

Stacking Rules

Promotional pricing must have clear stacking rules. Can a buyer on Gold tier pricing also receive the early order discount? Can contract pricing be combined with a new product introduction discount?

Without explicit rules, discounts stack in ways that destroy margin. Define a stacking policy.

  • Exclusive promotions --- This discount replaces all other pricing. The buyer gets the promotional price or their regular price, whichever is lower.
  • Additive promotions --- This discount applies on top of the buyer's existing pricing. Use sparingly and with margin floors.
  • Best-price policy --- The system calculates all applicable prices and returns the lowest one. Simple but requires strong margin floors.

Margin Protection

Every pricing strategy must include margin protection. Without it, the combination of volume discounts, tier pricing, promotional overlays, and sales rep negotiations can push prices below cost.

Implementing Margin Floors

In Odoo, margin floors are configured at the pricelist rule level. Each rule can include a minimum margin percentage that prevents the calculated price from falling below cost plus the specified margin.

| Product Category | Minimum Margin | Reason | |-----------------|----------------|--------| | Commodity products | 15% | High volume, low differentiation | | Specialty products | 30% | Value-added, limited competition | | Custom products | 40% | Engineering/setup costs | | Service items | 50% | Labor-intensive, capacity-limited | | Loss leaders | 5% | Strategic, drives other purchases |

Price Exception Workflow

When a price request falls below the margin floor, it should not be automatically rejected. Instead, route it through an exception workflow.

  1. Sales rep requests a price below floor
  2. System flags the request and routes to pricing manager
  3. Pricing manager reviews the request with context (strategic account, competitive situation, total account value)
  4. Pricing manager approves, modifies, or rejects
  5. Approved exceptions are logged with reason codes for analysis
  6. Exception reports identify patterns (same rep requesting exceptions repeatedly, same customer always negotiating below floor)

This balances margin protection with commercial flexibility. The goal is not to prevent all below-floor pricing but to ensure it happens deliberately, with visibility, and for defensible business reasons.


Pricing Transparency and Communication

Price Lists and Catalogs

B2B buyers expect to know their pricing before they order. Publishing customer-specific price lists (not your internal cost-plus calculations, but the resulting prices) builds trust and reduces friction.

In the B2B buyer portal, buyers should see their prices when browsing the catalog, not discover them at checkout. This means the portal must resolve the pricing hierarchy in real time and display the resulting price with a clear indication of which discount or tier is being applied.

Price Change Notifications

When prices change, affected customers must be notified in advance. Best practice is 30 days notice for list price increases, 60 days for contract-affected changes, and immediate notification for price decreases (which are good news).

Price change notifications should include the effective date, affected products, old price, new price, and the reason for the change. Transparency about cost drivers (raw material increases, tariff changes) builds understanding even when the news is unwelcome.


Frequently Asked Questions

How many pricelists should we create in Odoo?

Create one pricelist per pricing tier or customer group, plus one for each major contract with unique pricing. A typical B2B company with five customer tiers and 20 contract customers would have 25 pricelists. Avoid creating a pricelist per customer unless they have genuinely unique pricing --- use tier-based pricelists to keep management overhead reasonable.

Can we show the buyer what discount they are receiving?

Yes. Odoo can display the list price alongside the discounted price on quotations and in the portal, showing the buyer the discount they are receiving. This transparency reinforces the value of their tier or contract and can be a retention tool --- "you saved $45,000 last year through your Gold tier pricing."

How do we handle pricing for new products without cost history?

For new products, use a target margin approach. Set the list price based on your target margin and competitive analysis. Set the initial cost based on estimated production costs with a contingency buffer. After 3-6 months of actual cost data, recalibrate the pricing structure. During the initial period, set a higher margin floor (40-50%) to protect against cost estimate errors.


What Is Next

Pricing is where margin is won or lost. A well-configured pricing engine ensures that every customer gets a fair, consistent price while protecting your bottom line. The combination of tier pricing, volume commitments, and margin floors creates a system that rewards your best customers without eroding profitability.

ECOSIRE's Odoo customization team specializes in configuring complex pricing engines for B2B operations. From pricelist hierarchy setup to margin protection rules, we help you build pricing systems that scale.

Contact us to discuss your pricing strategy and see how Odoo can automate your pricing operations.


Published by ECOSIRE --- helping businesses scale with AI-powered solutions across Odoo ERP, Shopify eCommerce, and OpenClaw AI.

E

Rédigé par

ECOSIRE Research and Development Team

Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.

Discutez sur WhatsApp