Your Tolerances Are Teaching Suppliers and Buyers
- Beau Schwieso
- 4 days ago
- 5 min read

Somewhere in every ERP implementation, a well-meaning person says: “Just widen the tolerances so invoices stop failing.”
And it works. For about five minutes.
Because tolerances are not a technical setting. They are a behavioral policy.
They teach suppliers what they can get away with, and they teach your buyers what they no longer have to care about. You might call it efficiency. Your AP team will call it “Tuesday.” Your controller will call it “Why did our material costs creep up without anyone noticing?”
In manufacturing, this gets extra spicy because the volume is high, the variability is real, and the downstream consequences are expensive. A one percent drift on a high-volume raw material is not a rounding error. It is a quiet margin haircut.
The point of invoice matching is not to block the business. It is to keep the business honest, moving, and measurable. If your tolerances reduce exceptions but increase leakage, you did not fix a process. You just changed where the pain shows up.
And yes, I am going to say it out loud: if your solution to match failures is “make the system stop complaining,” you are not improving Procure-to-Pay. You are lowering the smoke alarm volume.
What D365 invoice matching actually does (and why it matters)
Dynamics 365 Finance treats invoice matching as comparing vendor invoices to purchase orders and, optionally, product receipts. Discrepancies are evaluated against tolerances, and when a discrepancy exceeds tolerance you see variance indicators on the invoice pages.
D365 gives you a few different “layers” of matching, and they stack:
Invoice totals matching - Matches expected totals to actual totals. It is higher-level control and lower detail.
Two-way matching - Matches invoice to PO pricing. No receipt quantity involvement.
Three-way matching - Matches invoice pricing to PO pricing and matches invoice quantity to received quantity (product receipt).
Price totals matching - Useful when multiple invoices hit the same PO line. D365 can compare invoice line net amounts (including pending and previously posted invoice lines) to the PO line net amount and evaluate variance by percent and or amount.
Charges matching - Compares charge totals per charge code, using a tolerance percentage, and it only applies to charge codes configured for comparison.
And the operational kicker: invoice matching can update automatically during invoice entry, or be triggered manually depending on parameter settings. Microsoft even calls out that automatic updates are recommended unless you have performance concerns, and that disabling automatic updates means users must manually refresh match status to see results.
This matters because “how often the system checks” becomes part of the culture. If mismatches do not surface quickly, they become normalized.
The phrase “tolerances train behavior” is not a metaphor
Here is what happens in the real world.
Suppliers learn your tolerance boundary
If they discover that:
small unit price increases still pass
“freight” can be slapped on as a charge and still pass
partials and substitutions do not trigger real pushback
They adapt. Not maliciously. Efficiently. They stop spending time being precise because you stopped requiring precision.
Your internal teams learn the same boundary
Buyers and requesters also adapt:
PO accuracy becomes “good enough” because AP will clear it
change control gets sloppy because matching will “handle it”
receiving discipline drops because exceptions are “normal”
Once that happens, you are no longer using controls to keep the business moving safely. You are using settings to avoid hard conversations.
Manufacturing: where tolerances either protect you or quietly tax you
Manufacturing has a few realities that make invoice matching tolerances both necessary and dangerous.
Direct materials with real volatility
Metals, resins, chemicals, lumber, components tied to indexes, surcharges, and fuel. If you use tolerance to absorb volatility instead of using pricing agreements, vendor price updates, or disciplined PO change control, you will pay more than you planned and you will not notice until the month-end postmortem.
Partial receipts are normal
If three-way matching depends on product receipts and your receiving process is delayed because of quality inspection, staging constraints, or labor shortages, invoices will arrive first. Then your team feels pressure to “allow with warning” and move on. D365 explicitly supports controlling whether invoices with discrepancies can be posted and how workflow interacts with that choice.
Charges are where leakage hides
Expedite fees, minimum order fees, packaging, hazmat, restocking, energy surcharges, “handling.” D365 supports charges matching with tolerances by charge code, but only if you configure charge codes to be compared. If you do not treat charges as first-class citizens, they become a junk drawer.
Multi-invoice reality
Suppliers split shipments, split invoices, and do progress billing. Price totals matching exists for a reason. It helps when multiple invoices are posted against the same PO line, and it evaluates cumulative variance against tolerances.
The failure modes that show up when tolerances are wrong
These are the ones I see most in manufacturing. Not theoretical. These are the actual reasons match rates fall and leakage rises.
1) Price creep that never trips a failure
Your tolerance absorbs “small” increases. Suppliers repeat them. You just created subscription pricing for your raw materials.
2) Buyers use tolerance as change control
Instead of updating POs when requirements change, they rely on tolerances to get the invoice through.
3) Invoice before receipt becomes the default process
This is usually a receiving discipline issue disguised as an AP parameter decision.
4) UOM and price unit mismatches
The invoice is “right” in vendor logic and wrong in your item setup. Tolerance hides it until it becomes a cost variance pattern.
5) Charge code chaos
Freight is sometimes a header charge, sometimes a line, sometimes embedded, sometimes a separate invoice. If your charge strategy is inconsistent, matching becomes noise.
6) “Allow with warning” becomes “allow forever”
D365 allows workflows plus warnings, but if warnings do not trigger accountability, they are decorative.
7) Quantity variances get normalized
Over-ship and under-ship variances pass, and now inventory accuracy and production planning suffer.
8) Multiple invoices against one PO line without a strategy
This is why price totals matching exists, but teams often do not configure it intentionally.
9) Receipts are posted late, but payments are on time
Finance feels good. Operations pays the price.
10) Vendors learn which exceptions you never enforce
If a supplier sees that you never push back on expedite charges, congratulations, you now buy expedite.
11) Different tolerance rules by site that no one can explain
You can override matching policy by vendor, item, combination, and even purchase order depending on configuration. That flexibility is powerful, and also a fast path to inconsistency if governance is weak.
12) People confuse invoice matching validation with vendor invoice policies
Invoice matching validation is set up in Accounts payable parameters. Vendor invoice policies are separate and do not apply the same way to all invoice entry methods. If you mix these concepts, you end up with controls that look strong and behave unpredictably.
DynamicsDad sign-off: If your match rate improves because you stopped checking, congratulations. You did not fix Procure-to-Pay. You just taught it to lie with confidence.
DynamicsDad



Comments