Magento
Magento Dynamic Pricing: Catalog Rules, APIs and Pricing Engines
Sergey
Published
Updated
9 min read

Dynamic pricing means the price of a product changes with the situation: the quantity in the cart, the customer, the date, stock levels, or what competitors charge. In Magento 2, part of this works out of the box, part needs an integration, and part needs a separate pricing engine. This guide explains what Magento can do on its own, when you need an external system, how to update prices through the API, and which pitfalls to plan for: cache, indexing and rules that overlap.
What dynamic pricing means in Magento
There are two kinds of dynamic pricing, and they are built differently:
- Rule-based pricing. Prices follow rules you set in advance: buy 50 units and pay less, a 10% discount for wholesale customers, a sale price for one week. Magento handles most of this itself.
- Data-driven pricing. Prices are calculated from outside data: competitor prices, stock in the warehouse, purchase costs, demand. Magento doesn't collect or analyse this data. Another system calculates the price, and Magento receives it through the API.
Most stores start with rules. Data-driven pricing makes sense when you have many products, strong competition on price, or prices that already live in an ERP.
What Magento can do out of the box
Magento Open Source has several price mechanisms. Each one solves a different task.
Special price
A temporary price for a product, with optional start and end dates. Good for sales and promotions on specific products.
Tier prices
A lower price for larger quantities: for example, 1–9 units at $20, 10–49 at $18, 50 and more at $16. Tier prices can be set per website and per customer group, as a fixed price or as a percentage discount. Magento shows the tiers on the product page, so buyers see why ordering more pays off.
Customer group prices
Each customer group (retail, wholesale, dealers) can have its own price. Technically, it's a tier price for quantity 1 in that group. For B2B stores with many price lists, see our guide to personalized B2B catalogs.
Catalog price rules
Discounts applied to groups of products before they reach the cart: for example, 15% off a brand or category for one customer group, between two dates. A rule can lower the price by a percentage or a fixed amount, or set it to a percentage or a fixed price. Rules have priorities, and a rule can stop the rules after it from applying.
Cart price rules
Discounts calculated in the cart: coupons, free shipping, "buy 3, pay for 2", a discount when the cart total passes a threshold. Unlike catalog rules, the shopper sees them only in the cart, not on the product page.
What Adobe Commerce adds
Adobe Commerce adds customer segments (prices and promotions for shoppers based on behaviour, not only on their group), scheduled content and price updates with a preview, and B2B features: shared catalogs with custom prices and negotiable quotes.
Where the built-in tools stop
- Catalog rules are not real time. Magento recalculates rule prices through an indexer and a nightly cron job. A rule that starts today is applied when the index is updated, not at the second you saved it. Dates are set by day, not by hour.
- No outside data. Magento doesn't know competitor prices, purchase costs or demand forecasts, so it can't calculate a price from them.
- Many rules are hard to control. With dozens of overlapping rules, it gets difficult to say which price a customer will see, and why.
- Manual work grows with the catalogue. Updating thousands of prices by hand or by CSV import is slow and error-prone.
When you hit these limits, prices should come from another system.
When you need an external pricing engine
An external system calculates prices, and Magento only receives and displays them. Typical sources:
- ERP. In most B2B companies, price lists, customer prices and discounts already live in the ERP. The store should receive them, not keep a second copy. See how Magento system integrators connect ERP, CRM and PIM.
- Repricing tools. Services that watch competitor prices and marketplaces and suggest or set a new price within limits you define.
- Custom pricing logic. A small service of your own, when the rules are specific to your business: prices from purchase costs plus a margin, from exchange rates, or from stock levels.
The question to answer first is which system owns the price. If prices can be changed both in the ERP and in Magento, they will drift apart. Choose one owner, and let the other systems read from it.
How to update prices through the Magento API
Magento 2 has REST endpoints made for price updates. They change only prices, so they are lighter and faster than saving whole products:
| Endpoint | What it changes |
|---|---|
POST /V1/products/base-prices |
The regular price of many products in one request |
POST /V1/products/special-price |
Special prices with start and end dates |
POST /V1/products/tier-prices |
Adds tier prices; PUT replaces all tier prices of the listed products |
POST /V1/products/cost |
Purchase cost, useful for margin reports |
Practical points:
- Send prices in batches, not one request per product. Thousands of single requests load the server and take hours.
- Use asynchronous bulk endpoints for large updates. Magento accepts the request at
/async/bulk/V1/..., puts the operations into a message queue and processes them in the background, so the integration doesn't wait for every product to save. - Check the price scope. In Stores > Configuration > Catalog > Price, the price scope is either global or per website. If you run several websites with different prices, the scope must be "Website", and every update must say which website it's for.
- Validate before you write. The integration should reject a price of zero, a negative price, or a price that changed by an unusual amount, and log it for a person to check.
Safety limits for automatic prices
Automatic pricing needs limits, or one wrong number in a feed reaches every customer:
- Margin floor. The price never drops below purchase cost plus a minimum margin.
- Maximum change. The price can't change by more than a set percentage in one update.
- Minimum advertised price (MAP). Some brands don't allow selling below a set price. Respect it in the pricing logic.
- Price history. Keep the old price for every change, so you can see what happened and roll back.
These limits belong in the system that calculates prices, with a final check in the integration before data reaches Magento.
Cache and indexing: the hidden cost of frequent updates
Every price change has a cost for performance:
- Price indexing. Magento keeps calculated prices in an index. Set the indexers to "Update by Schedule", so changes are processed in the background, not on every save.
- Full page cache. When a price changes, Magento clears the cached pages of that product and its categories. Updating thousands of prices every few minutes keeps the cache cold, and the store gets slow.
- How often is enough. For most stores, updating prices a few times a day, or when the source really changes, is enough. Real-time repricing of the whole catalogue is rarely worth the load.
If the store slows down after price updates, a performance audit shows whether indexing and cache are the cause.
When price rules overlap
A product can have a regular price, a special price, a catalog rule price and a tier price at the same time. Magento doesn't add them up. It shows the lowest of the prices that apply to the customer and quantity. Cart price rules are applied on top, in the cart.
This often surprises store owners: a 10% catalog rule "doesn't work" because a special price is already lower, or a tier price disappears because a sale price beats it. Before launching a promotion, check the final price as several customer groups and at several quantities.
Testing and rollback
- Test price rules and integrations on a staging copy of the store with real data.
- Log in as customers from different groups and check product pages, the cart and checkout.
- Keep an export of current prices before any mass update, so you can restore them in minutes.
- After launch, compare the prices in Magento with the source system for a sample of products.
Example: tier prices and a quote threshold in B2B stores
We built B2B stores on Magento connected to the customer's ERP. Tier prices are kept in Magento, but they aren't typed in by hand: the integration brings them from the ERP, so the price list has one owner. Buyers see a classic volume discount: the more units they order, the lower the unit price.
On one of these stores, large orders work differently. When a buyer puts more than 299 units of a product in the cart, the cart page changes: instead of "Go to checkout", the buyer sees "Send a request" and a note that they will receive an individual price. The buyer doesn't go to checkout at all. The sales team gets the request, prepares an offer, and the price for a large volume stays a conversation, not a number in a table.
This is a simple form of dynamic pricing that many B2B stores need: automatic prices for typical orders, and a human decision for the large ones. More on what we connect to Magento on our e-commerce integrations page.
Questions about Magento dynamic pricing
Does Magento support dynamic pricing out of the box?
Partly. Magento has special prices, tier prices, customer group prices, catalog price rules and cart price rules. Prices based on competitors, costs or demand need an external system that sends prices to Magento through the API.
How often can prices be updated through the API?
Technically, as often as you like. In practice, each update clears cached pages and triggers indexing, so mass updates every few minutes slow the store down. A few times a day, in batches, is enough for most stores.
Which price does Magento show if several rules apply?
The lowest of the regular price, special price, catalog rule price and tier price that apply to that customer and quantity. Cart price rules are applied afterwards, in the cart.
Can Magento show "request a quote" instead of a price for large orders?
Yes. Adobe Commerce has negotiable quotes in its B2B features. On Magento Open Source, it's done with an extension or a custom module, for example by replacing the checkout button with a quote request above a set quantity.
Is dynamic pricing only for large retailers?
No. Tier prices, customer group prices and simple rules help small and medium stores too, especially in B2B. External pricing engines pay off when the catalogue is large or prices change often.
SYSINT develops Magento stores and integrations for agencies and online stores, including custom pricing logic and ERP price sync. See Magento development.