Pricing optimization for
Dynamics 365 Business Central
Business Central stores your prices and decides which of them applies. It does not decide what the price should be. Price lists, customer price groups, discount groups and line discounts are all places to record a number a person chose. When an order line is entered, the system applies the best price principle and selects among those numbers. Nothing in that path asks whether the number was right. That question — what price, for this customer, on this item, today — is a data-science question, and the app we build answers it and writes the answer back for a human to approve.
What Business Central does with price, and where it stops
Business Central is thorough about pricing as a system of record. You can set a sales price list and point it at a customer, a customer price group, a campaign or all customers. You can layer sales line discounts on top, grouped by customer discount group. You can date-bound every one of them. When a line is entered, the system resolves all of it.
The rule it resolves by is documented and specific:
The best price principle: the lowest permissible price with the highest permissible line discount on a given date.
That is a well-designed rule and it does exactly what it says. But read what it ranges over: permissible prices — the ones already sitting in a price list because somebody typed them there. Business Central selects the lowest one. It is not choosing the best price for the business; it is choosing the lowest price you have already agreed to.
This is the manage-versus-optimize line, and it is not a criticism. Recording, enforcing and consistently applying commercial policy is the job of a system of record, and Business Central does it well. Computing what the policy should be is a different job, and it was never in scope.
What computing an optimal price actually requires
A price list holds one number per combination. The optimal price is not a number you store; it is the output of a function over things that move.
Response to price
How much volume moves when the price moves, estimated per segment rather than assumed globally. Two customers buying the same item rarely respond the same way, and a single elasticity across the catalogue is usually wrong everywhere.
Cost at the moment of sale
Landed cost moves. A margin target set against last quarter's cost quietly becomes a different margin, and the price list has no way to notice.
The discount already granted
Line discounts, invoice discounts and one-off overrides compound. The realised price is frequently some distance from the list price, and the gap is where margin goes without anyone deciding it should.
Constraints you actually have
Contracted floors, most-favoured-customer terms, minimum margins, competitive positions you will not cross. An optimizer that ignores these produces recommendations nobody can act on.
None of these is a field you fill in. Each is estimated from history, and the estimate changes as the history changes. That is why the answer lives in an app that computes, not in a table that stores.
Why pricing is the first place to look
Every order line carries a price, so a pricing decision touches the whole revenue base rather than a corner of it. Nothing has to be moved, installed or physically rearranged for a better price to take effect — the change is a number, and it applies from the next order.
It is also the domain where the gap between what the ERP records and what the business intended is easiest to see. Pull the realised price against list for the last two years, segment it, and the pattern is usually visible without any model at all. That first look is cheap, and it tells you whether there is anything worth optimizing before anyone commits to building.
Dynamics is your system of record. We are your system of intelligence.
How the Pricing Optimizer works
Four steps, in tandem with Business Central rather than around it.
- 1
Read the history
Posted sales lines, the price actually charged, cost at the time, customer, item and date — pulled through the documented API and Dataverse. Read access only, and nothing leaves your tenancy.
- 2
Estimate response, per segment
Fit price response where the history supports fitting it, segment by segment. Where it does not support fitting, the app says so rather than producing a confident number from thin data.
- 3
Solve inside your constraints
Contracted floors, minimum margins and policy limits go in as hard constraints. The result is a recommended price and discount schedule that is feasible by construction, not a theoretical optimum you then have to argue down.
- 4
Write it back for approval
The recommendation returns to Business Central as a proposed price-list entry with the reasoning attached. A person approves it. The price your ERP applies is still a price a human signed off.
On your governed stack, not ours
The app is Dataverse-native and runs on Power Platform, with Azure for the model workload, shipped via AppSource where that fits your procurement. Your pricing and customer history stay inside your own tenancy.
For an IT buyer this is usually the deciding detail, and it is the reason we build this way rather than as an external service with a data export attached. We read and write through documented integration surfaces. The ERP core is not modified, so your upgrade path and your implementation partner's work are both left alone.
What we need, and what we will tell you
The requirement that decides whether this is worth doing is not volume. It is variation. If every customer in a segment has always paid list, there is nothing in the history to estimate a response from, and no amount of modelling invents it.
What makes this work
- Two years or more of posted sales lines
- Price actually charged, not just list price
- Cost as at the transaction date
- Some genuine variation in past prices
- Written constraints — floors, minimum margins
When we will say no
- Everyone has always paid list
- Cost history is missing or unreliable
- Discounts live outside the ERP, in spreadsheets
- Nobody owns the pricing decision internally
We check this before proposing a build, and we say so plainly when the data cannot support it. A pricing recommendation from history that cannot support one is worse than no recommendation, because it looks like arithmetic.
What this is not
- Not a second ERP, and not a migration
- Not a change to the Business Central core
- Not a report or a chart to go and read
- Not a robot quietly changing your prices
- Not a reason to change implementation partner
- Not a shipped product with a user count to quote
A working demo exists and we build the app on request, against your systems and your constraints. That is the honest state of it. When we have delivered pricing engagements worth quoting numbers about, the numbers will appear here — and not before.
Common questions
Does Dynamics 365 Business Central optimize pricing?
No, and it is not meant to. Business Central stores prices in sales price lists and applies the best price principle — the lowest permissible price with the highest permissible line discount on a given date. That is deterministic selection across values a person already entered. It answers 'which of my configured prices applies here?', never 'what should this price be?'. The second question is a data-science question, and it is the one we build for.
Do you change prices automatically in our ERP?
Not unless you ask for that, and it is not where anyone should start. The default is that the app computes a recommended price with the reasoning attached, and a person approves it. The recommendation lands in Business Central as a proposed price-list entry, so the pricing your ERP applies is still the pricing a human signed off. You can move to straight-through processing for defined segments later, once the recommendations have been right for long enough to trust.
What data do you need before this is worth doing?
Transaction history with the price actually charged, the cost at the time, the customer and item, and the date — ideally two years or more. Enough variation in past prices to learn from, which is the requirement most often missing: if every customer in a segment has always paid list, there is nothing to estimate a response from. We check this before proposing any build, and we say so plainly when the data cannot support it.
Do we have to leave our Dynamics implementation partner?
No, and we do not want you to. They put Business Central in and keep it running; that relationship is not one we compete for. We build a companion app that reads from and writes to documented integration surfaces. The ERP core is untouched, your upgrade path is untouched, and your partner's work is untouched.
Where does the app actually run?
On your own governed stack — Power Platform and Dataverse, with Azure for the model workload — and shipped via AppSource where that fits. Your data stays inside your tenancy. For an IT buyer this is usually the deciding detail: nothing here asks you to export pricing and customer history to somebody else's cloud.
Is this available for Finance & Operations too?
Yes. The pricing question is the same on both, and the difference is where the data lives and which integration surface we read: Business Central through its API and Dataverse, Finance & Operations through OData data entities and Business Events. Business Central is where we lead because that is where the mid-market pricing pain concentrates.
The rest of the family
All four Optimizers
Pricing, pick-path, demand and inventory, contract review — and what Dynamics does with each.
Pick-Path & Slotting Optimizer
Travel is roughly half of order-picking time. Where inventory lives decides how far anyone walks.
How we build inside the ERP
The supported integration surface, the security model, and what we do not touch.
Business Central vs Finance & Operations
Which one has which module, and the row where both of them say no.
Start with the data, not the pitch
The first conversation is whether your pricing history can support this at all. If it cannot, that is a useful answer and it costs you one call.
Last updated 2026-07-29