Customer-Specific Prices
Assign unique product prices to individual customers with full support for quantity tiers, date ranges, and multi-website scoping.
Overview
Customer Prices allow you to:
- Set specific prices per customer per product
- Define quantity-based price breaks
- Schedule prices with start/end dates
- Scope prices to specific websites
Database Structure
| Column | Type | Description |
|---|---|---|
| entity_id | INT | Product ID |
| customer_id | INT | Customer ID |
| qty | DECIMAL | Quantity threshold |
| value | DECIMAL | Price value |
| from_date | DATE | Valid from |
| to_date | DATE | Valid until |
| price_application_type | TINYINT | Price application mode (fixed/surcharge/discount/%). |
| price_attribute_id | SMALLINT | Optional base price attribute used for calculations. |
| website_id | INT | Website scope |
Creating Customer Prices
Via Admin Panel
- Navigate to Pricesystem >Customerprice > All Customerprices
- Click Add New
- Fill in the form:
- Select Product (searchable dropdown)
- Select Customer (searchable dropdown)
- Enter Quantity (minimum qty for this price)
- Enter Price value
- Select Price Application Type (Fixed / Surcharge / Surcharge % / Discount / Discount %)
- Select Base Price (optional)
- Set From Date and To Date (optional)
- Select Website scope
- Click Save Customerprice
Quantity Tiers Example
To set up volume discounts for Customer ABC on Product XYZ:
| Qty | Price | Notes |
|---|---|---|
| 1 | $100 | Standard price |
| 10 | $95 | 5% discount |
| 50 | $90 | 10% discount |
| 100 | $80 | 20% discount |
Create 4 entries with the same customer/product but different qty values.
Time-Based Pricing
For promotional periods, set date ranges:
- Contract pricing: from_date = contract start, to_date = contract end
- Seasonal pricing: from_date = season start, to_date = season end
- No dates: Price always active
Customer "My Prices" Feature
If My Prices is enabled and the customer is logged in, they can view and download assigned prices:
- Customer logs into their account
- Navigates to My Prices section
- Selects a price type and views available prices for that selection
- Downloads prices as CSV (if enabled)
Enable at: Stores >Configuration > MageB2B > Pricesystem > Customerprice settings > Enable download link
Validation Rules
- Frontend scope: Guest sessions do not resolve customer-specific prices; API/admin flows can resolve a customer explicitly by ID
- Unique constraint: (entity_id, customer_id, qty, from_date, to_date, website_id)
- Date validation: date format is validated; there is no enforced
from_date <= to_daterule in the current save flow
Use Cases
Contract Pricing
Set negotiated prices for specific customers with contract validity dates.
Volume Discounts
Reward bulk purchases with quantity-based tier pricing.
Seasonal Promotions
Time-limited pricing for specific customers during promotional periods.
Regional Pricing
Different prices per website for multi-region operations.
Best Practices
- Use date ranges for contract pricing to auto-expire
- Set website scope for regional pricing
- Document qty tiers in customer contracts
- Regular audits to clean expired prices
