Price Lists
Technical documentation for understanding price lists and their implementation in the Axiom platform.
Looking for hands-on instructions? Check out our Price Lists Guide for step-by-step directions.
Overview
Price lists are a fundamental component of the B2B pricing system, enabling suppliers to manage product pricing across multiple dimensions:
- Store-specific pricing
- Geographic pricing (country and region)
- Currency-based pricing
- Time-based pricing
In B2B commerce, price changes require auditability and approval, unlike B2C where prices can be changed directly. This approval process is managed through the offer approvals system, where each price represents an "offer" that must be reviewed before becoming active.

Price List Architecture
Price lists operate on a hierarchical system with multiple components:

Geographic Pricing Structure
- Country Level: Base pricing for each country market
- Regional Level: Specific pricing for regions within countries (e.g., states, provinces)
- Store Level: Individual store pricing requiring procurement approval
Temporal Pricing System
Price lists incorporate temporal aspects through:
- Start dates (optional) - Defines when pricing becomes active
- End dates (optional) - Indicates when pricing should be superseded
- Precedence rules - Newer price lists take precedence over older ones
Pricing Models

-
Standard Pricing
- Fixed price per unit
- Simplest pricing model
- Suitable for consistent pricing needs
-
Volume Pricing
- Price varies based on total quantity
- All units priced at tier rate
- Optional flat fee per tier
-
Graduated Pricing
- Different prices for quantity ranges
- Each tier priced separately
- Cumulative pricing calculation
Price Resolution System
The platform implements a sophisticated price resolution system to determine which price should be active at any given time:

Resolution Rules
- Store-specific prices take precedence over public prices
- Regional prices override country-level prices
- Active date ranges take priority over indefinite prices
- Newer price lists supersede older ones for the same scope
Approval Process
The approval workflow ensures proper oversight of pricing changes in the B2B context:

Process Components
- Creation: Supplier defines new price list
- Validation: System checks for required fields and valid ranges
- Approval Flow:
- Public prices: Automatically approved
- Store prices: Requires procurement review
- See offer approvals for detailed approval workflow
- Activation: Approved prices become available in relevant stores
System Constraints
Understanding these constraints is crucial for proper price list management:
-
Immutability
- Price lists cannot be edited after creation
- Changes require creating new price lists
- Old prices remain in history for audit purposes
-
Approval Requirements
- Store-specific prices always require approval
- Public prices are automatically approved
- Approval status cannot be bypassed
-
Currency Constraints
- Prices must match store's accepted currencies
- Currency conversion is not automatic
- Each currency requires separate price lists
-
Date Handling
- Dates use YYYY-MM-DD format
- End dates are indicative only
- Prices continue until explicitly replaced
Integration Considerations
When implementing price lists in your system:
-
Data Requirements
- Mandatory fields must be populated
- Optional fields provide additional control
- Field validation follows strict rules
-
Performance Implications
- Price resolution may impact query performance
- Consider caching strategies
- Batch operations for bulk updates
-
Audit Requirements
- All price changes are tracked
- History is maintained indefinitely
- Approval status changes are logged
API Implementation
The Price Lists API provides comprehensive endpoints for managing price lists programmatically. For detailed API specifications and endpoints, visit our API Documentation.
Core Concepts
-
Multiple Price Lists
- Create one or more price lists per product
- First price list becomes default for country
- Default price acts as public/list price
-
Price List Behavior
- Prices cannot be edited after creation
- New prices override existing ones
- Store-specific prices require approval
- Public prices auto-approve
API Examples
Standard Public Price List
Create a public price list for a product in a specific country:
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List",
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme": "standard",
"unit_amount": "300.00",
"currency_code": "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive"
}'
Store-Specific Price List
Create a store-specific price list:
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List",
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme": "standard",
"unit_amount": "300.00",
"currency_code": "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive",
"store_id": 1
}'
Volume Pricing Implementation
Create a price list with volume-based pricing tiers:
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List",
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme": "volume",
"tiers": [
{
"up_to": 100,
"flat_amount": 50,
"unit_amount": 50
},
{
"up_to": 200,
"flat_amount": 50,
"unit_amount": 50
}
],
"currency_code": "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive",
"store_id": 1
}'
Graduated Pricing Implementation
Create a price list with graduated pricing tiers:
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List",
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme": "graduated",
"tiers": [
{
"up_to": 100,
"flat_amount": 50,
"unit_amount": 50
},
{
"up_to": 200,
"flat_amount": 50,
"unit_amount": 50
}
],
"currency_code": "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive",
"store_id": 1
}'
Price List Management
Store Price Creation
When implementing store-specific pricing:
- Store ID must be specified
- Approval required from store administrators
- Price becomes active only after approval
- Status remains pending until approved
Price Deletion and Archives
To maintain pricing integrity:
- Approved prices cannot be deleted
- Updates require new price list creation
- Pricing changes go through approval
- Archival available for incorrect pricing
For step-by-step instructions on managing price lists through the UI, see our Price Lists Guide.
Create a Price List with the API
- You can create one or more price lists per product
- Every product has a default price list for a country, this is a price where a store is not specified and can be regarded as the public or list price for that country. The first price created for the product will automatically be set as the default price for that country.
- Prices cannot be edited or deleted, only overridden by new prices.
- If a price is created for a specific store this price must first be approved by the supplier (if required) and then by the store. Until the price is approved the status will be "pending".
- Prices created without a store specified are automatically approved.
Examples
Standard Price List - Public
New price list for the public pricing of a specific product in a specific country and currency
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List", //optional
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme":"standard",
"unit_amount" : "300.00",
"currency_code" : "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive"
}'
Standard Price List - Store
New price list for the store pricing of a specific product in a specific country and currency
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List", //optional
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme":"standard",
"unit_amount" : "300.00",
"currency_code" : "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive",
"store_id": 1
}'
Volume Price List - Store
New price list for the pricing of a specific product in a specific store, country and currency, with volume pricing.
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List", //optional
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme":"volume",
"tiers": [
{
"up_to" : 100, //integer only
"flat_amount" : 50, //accept digit and decimal
"unit_amount": 50 //accept digit and decimal
},
{
"up_to" : 200, //integer only
"flat_amount" : 50, //accept digit and decimal
"unit_amount": 50 //accept digit and decimal
}
],
"currency_code" : "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive",
"store_id": 1
}'
Graduated Price List - Store
New price list for the pricing of a specific product in a specific store, country and currency, with graduated pricing.
curl --location --request POST 'https://api.axiomdata.io/api/suppliers/price-lists' \
--data-raw '{
"name": "New Price List", //optional
"priceable_type": "product",
"priceable_identifier": "testproduct",
"billing_scheme":"graduated",
"tiers": [
{
"up_to" : 100, //integer only
"flat_amount" : 50, //accept digit and decimal
"unit_amount": 50 //accept digit and decimal
},
{
"up_to" : 200, //integer only
"flat_amount" : 50, //accept digit and decimal
"unit_amount": 50 //accept digit and decimal
}
],
"currency_code" : "CHF",
"country_code": "CH",
"tax_behaviour": "inclusive",
"store_id": 1
}'
Create Price for a Store
When creating a new price list you must specify the store where the price is applicable. Once the price list has been created and approved by one of the store administrators it will become live in the store.
Delete a Price
In order to make it easy for suppliers and store operators to maintain trust in their pricing it is not possible to fully delete approved prices. If you would like to update your pricing for a particular store you will have to upload new pricing and have it approved. If you would like to remove your pricing for a particular country or if it is incorrect, then you can archive it.
- Overview
- Price List Architecture
- Geographic Pricing Structure
- Temporal Pricing System
- Pricing Models
- Price Resolution System
- Resolution Rules
- Approval Process
- Process Components
- System Constraints
- Integration Considerations
- API Implementation
- Core Concepts
- API Examples
- Standard Public Price List
- Store-Specific Price List
- Volume Pricing Implementation
- Graduated Pricing Implementation
- Price List Management
- Store Price Creation
- Price Deletion and Archives
- Create a Price List with the API
- Examples
- Standard Price List - Public
- Standard Price List - Store
- Volume Price List - Store
- Graduated Price List - Store
- Create Price for a Store
- Delete a Price