Creating Pricelists

Step-by-step guide to creating your first pricelist with products and customer assignments.

Quick Start

  1. Catalog >Pricelists → Click "Add New"
  2. Fill basic info (name, dates, priority)
  3. Configure customer matching rules OR assign groups
  4. Save pricelist
  5. Add products with prices
  6. Activate pricelist

Creating a Pricelist Container

Step 1: Navigate to Grid

Admin Panel >Catalog > Pricelists

Grid shows existing pricelists with:

  • Name
  • Active status
  • Priority
  • Date range
  • Website
  • Base pricelist flag
  • Actions

Step 2: Add New Pricelist

Click Add New button.

Step 3: Fill Basic Information

Name (Required)

Descriptive name for the pricelist.

Examples:

  • "Wholesale 2025"
  • "VIP Pricing Q1"
  • "US Region Standard"
  • "Black Friday Sale"
  • "Contract - ACME Corp"

Is Active (Required)

Toggle pricelist on/off.

  • Yes: Pricelist is evaluated for customer matching
  • No: Pricelist ignored, even if customers match

Use Case: Prepare pricelists in advance, activate when ready.

Priority (Optional)

Numeric value (0-999) for conflict resolution.

  • Default: 0
  • Higher = precedence
  • Examples:
    • 10: Standard pricing
    • 20: Promotional pricing
    • 30: VIP pricing
    • 40: Contract overrides

From Date (Optional)

Start date for pricelist validity.

  • Format: YYYY-MM-DD
  • NULL: Active immediately
  • Example: 2025-06-01 (Summer campaign start)

To Date (Optional)

End date for pricelist validity.

  • Format: YYYY-MM-DD
  • NULL: No expiration
  • Must be >= From Date
  • Example: 2025-08-31 (Summer campaign end)

Website (Required)

Website scope for pricelist.

  • Default: Default website
  • Multi-website: Select specific site
  • Effect: Only customers on this website see prices

Is Base Pricelist (Optional)

Designate as fallback pricelist.

  • Default: No
  • Effect: Customers without specific pricelist assignments get this pricelist
  • Limit: Only ONE base pricelist per website
  • Validation: Enforced by enable_base_pricelist_validation config

Customer Matching Attributes

These fields enable automatic customer assignment. When customers match attributes, they're auto-assigned to pricelist.

Customer Group

Match by customer group ID.

  • Example: Group ID 2 (Wholesale)
  • Effect: All wholesale customers get this pricelist

Company

Match by company name from customer account.

  • Example: "ACME Corporation"
  • Loose matching: "ACME" matches "ACME Corp" if match_exact_type = No
  • Exact matching: Must be exactly "ACME" if match_exact_type = Yes

Tax/VAT Number

Match by tax ID.

  • Example: "DE123456789"
  • Use Case: EU VAT-registered businesses

Postcode

Match by billing/shipping postcode.

  • Example: "90210"
  • Use Case: Regional pricing by ZIP code

Region

Match by region/state.

  • Example: "California"
  • Use Case: State-specific pricing

Country

Match by country code.

  • Example: "US"
  • Use Case: Country-specific pricing

Note: Leave all matching fields empty to use manual assignment only (via groups or customer table).


Step 4: Save Pricelist

Click Save button.

Pricelist container created! Now add products.


Adding Products to Pricelist

Method 1: From Pricelist Edit Page

  1. Edit pricelist → Navigate to "Products" tab
  2. Click "Add Products"
  3. Select products from grid (checkboxes)
  4. Set prices:
    • Quantity: Tier threshold (e.g., 1, 10, 50)
    • Price: Price value
    • From Date: Start date (optional)
    • To Date: End date (optional)
  5. Save

Method 2: Import/Export Add-On

Use the CSV Import/Export Add-On for bulk changes:

The Magento ImportExport entity Pricesystem Pricelist supports importing/exporting pricelists including assignments and product rows.

Tip: Export first and use the exported CSV as your template (it matches your installed version/config).


Creating Quantity Tiers

Add multiple price entries for same product with different qty values.

Example: Graduated Wholesale Pricing

Pricelist: "Wholesale 2025" Product: "Widget Pro"

Qty TierPriceDescription
1$100Standard price
10$95Bulk discount (5%)
50$90Volume discount (10%)
100$85Major volume (15%)

Customer orders 75 units: Gets $90/unit (Qty 50 tier)

Configuration Required:

  • can_product_have_multi_qty_price = Yes

Assigning Customers to Pricelists

Configure matching attributes on pricelist (see above).

Example:

  • Pricelist: "Wholesale 2025"
  • Customer Group: 2 (Wholesale)
  • Region: "California"

Result: All wholesale customers in California auto-assigned.

Configuration Required:

  • enable_auto_assign_customers_to_pricelist = Yes

Method 2: Group Assignment

Pricelist Edit Page >Groups Tab:

  1. Click "Add Groups"
  2. Select customer groups (Wholesale, Retail, VIP)
  3. Save

Result: All members of selected groups assigned.

Method 3: Manual Customer Assignment

Pricelist Edit Page >Customers Tab:

  1. Click "Add Customers"
  2. Search and select customers
  3. Save

Result: Only selected customers assigned.

Use Case: Override automatic rules for specific customers.


Common Workflows

Workflow 1: Wholesale Pricelist

Goal: Create wholesale pricing for 2025.

  1. Create pricelist:

    • Name: "Wholesale 2025"
    • Active: Yes
    • Priority: 15
    • From Date: 2025-01-01
    • To Date: 2025-12-31
    • Customer Group: 2 (Wholesale)
  2. Add products:

    • Import CSV with all products
    • Or add manually via Products tab
  3. Test:

    • Log in as wholesale customer
    • Verify prices display

Workflow 2: Seasonal Campaign

Goal: Black Friday sale (Nov 29 - Dec 2, 2025).

  1. Create pricelist:

    • Name: "Black Friday 2025"
    • Active: Yes
    • Priority: 25 (higher than standard)
    • From Date: 2025-11-29
    • To Date: 2025-12-02
    • Customer Group: 1 (General - all customers)
  2. Add products:

    • Select sale products
    • Set discounted prices
  3. Automatic:

    • Activates Nov 29
    • Deactivates Dec 3
    • No manual intervention

Workflow 3: Regional Pricing

Goal: US customers get USD pricing.

  1. Create pricelist:

    • Name: "US Standard Pricing"
    • Active: Yes
    • Priority: 10
    • Website: US Website
    • Country: US
  2. Add products:

    • All products with USD prices
  3. Result:

    • US customers see USD prices
    • EU customers see different pricelist (EUR)

Workflow 4: VIP Customer Program

Goal: Top customers get 15% off everything.

  1. Create pricelist:

    • Name: "VIP 15% Discount"
    • Active: Yes
    • Priority: 30 (highest)
    • Customer Group: 4 (VIP)
  2. Add products:

    • All products with 15% discount applied
    • Or use price calculation rule if available
  3. Result:

    • VIP customers automatically see reduced prices

Workflow 5: Contract Pricing

Goal: ACME Corp has annual contract with specific pricing.

  1. Create pricelist:

    • Name: "Contract - ACME Corp 2025"
    • Active: Yes
    • Priority: 30
    • From Date: 2025-01-01
    • To Date: 2025-12-31
    • Company: "ACME Corporation" (exact match)
  2. Add products:

    • Contract products with agreed prices
  3. Renewal:

    • Create "Contract - ACME Corp 2026" before expiry
    • Set From Date: 2026-01-01
    • Seamless transition on Jan 1

Priority System in Action

Scenario: Customer Matches Multiple Pricelists

Setup:

  • Customer: John Doe (Wholesale group, California, ACME Corp)
  • Pricelist A: "Wholesale 2025" (Priority 15) - Matches group
  • Pricelist B: "California Special" (Priority 20) - Matches region
  • Pricelist C: "ACME Contract" (Priority 30) - Matches company

Configuration 1: merge_pricelist_qtys = No

  • Result: Only Pricelist C applies (highest priority)

Configuration 2: merge_pricelist_qtys = Yes

  • Result: Merge qty tiers from all three
    • Pricelist A: qty=1 ($100), qty=10 ($95)
    • Pricelist B: qty=25 ($92)
    • Pricelist C: qty=50 ($88)
    • Customer gets: qty=1 ($100), qty=10 ($95), qty=25 ($92), qty=50 ($88)
    • Best of all lists!

Base Pricelist Setup

Purpose

Fallback pricing for customers without specific pricelists.

Setup

  1. Create pricelist:

    • Name: "Base Pricing - Main Website"
    • Active: Yes
    • Priority: 0 (lowest)
    • Is Base Pricelist: Yes
    • Website: Main Website
    • Leave all matching attributes empty
  2. Add products:

    • All products with default prices
  3. Effect:

    • Customers without any pricelist → see base prices
    • Customers with specific pricelist → base ignored

Validation:

  • Only ONE base pricelist per website
  • System prevents creating second base pricelist if validation enabled

Troubleshooting

Pricelist Not Showing for Customer

Check:

  1. ✓ Is Active = Yes?
  2. ✓ Date range valid? (from_date <= today <= to_date)
  3. ✓ Website matches?
  4. ✓ Customer matches attributes OR assigned via group/manual?
  5. ✓ Auto-assignment enabled? (enable_auto_assign_customers_to_pricelist = Yes)
  6. ✓ Cache cleared?

Wrong Prices Displaying

Check:

  1. ✓ Multiple pricelists match? (check priority)
  2. ✓ Merge config? (merge_pricelist_qtys setting)
  3. ✓ Product exists in pricelist?
  4. ✓ Quantity tier matches cart quantity?
  5. ✓ Pricesystem Core price order correct?

Can't Create Second Base Pricelist

Expected behavior!

  • Only one base pricelist per website
  • Disable enable_base_pricelist_validation to override (not recommended)
  • Or deactivate existing base pricelist first

Next Steps

Found an issue with this documentation? Let us know