Seven invoice lines to test.
Ask what tolerance to set and the honest answer is that it depends. The most useful current answer, Corpay’s guide to invoice matching, goes further: pair a percentage with an absolute cap, and test two or three candidate settings against last quarter’s invoices, counting the exceptions each produces and the variance each lets through. It calls that a half day of work that most teams skip. Here is the test, run small enough to read.
Seven lines from an example month, each matched to its purchase order and received in full, so only the price differs. Between them the suppliers billed 3,790 dollars more than the orders allowed.
| Line | Qty | PO price | Invoice price | Variance | Overbilling |
|---|---|---|---|---|---|
| Packaging film | 5,000 | 1.20 | 1.21 | +0.83% | 50 |
| Fasteners | 20,000 | 0.08 | 0.09 | +12.50% | 200 |
| Server racks | 2 | 18,500 | 18,870 | +2.00% | 740 |
| Laptops | 40 | 1,400 | 1,425 | +1.79% | 1,000 |
| Resin, per kg | 30,000 | 2.40 | 2.46 | +2.50% | 1,800 |
| Cleaning supplies | 10 | 45.00 | 44.40 | −1.33% | (6) |
| Safety gloves | 600 | 3.50 | 3.50 | 0.00% | 0 |
Three ways to combine a percentage and an amount.
Most systems let you set a percentage, an amount, or both. When both are set, there are two ways to read them, and they behave very differently.
Both must hold. The invoice stops at whichever limit it breaches first. This is how SAP reads its tolerance keys. Each key can carry an absolute and a percentage limit, upper and lower, and per SAP’s help on setting tolerances, once any upper limit is exceeded
“the invoice is blocked for payment when it is posted.”SAP Help Portal, Setting Tolerances
Either may hold. The amount works as a floor: a difference under it passes even when the percentage is high. This suits very cheap items, where a rounding difference of a cent is a large percentage.
Percentage only. The simplest setting, and the one most teams start with.
What each setting lets through.
| Setting | Lines to review | Overbilling paid unreviewed | Overbilling held |
|---|---|---|---|
| A. Exact match, zero tolerance | 6 | 0 | 3,790 |
| B. 2% of unit price, either direction | 2 | 1,790 | 2,000 |
| C. 2% and 250 a line, whichever is breached first | 4 | 50 | 3,740 |
| D. 2%, or within a 2 cent unit price floor | 1 | 1,990 | 1,800 |
| E. 0.5%, or within a 1 cent unit price floor | 4 | 250 | 3,540 |
Exact match catches everything and asks someone to look at six of seven lines, including a one cent difference on packaging film. That queue will not be worked for long.
Two percent on its own clears the queue to two lines, and the two it misses are the expensive ones: 740 dollars on server racks and 1,000 on laptops. A percentage grows with the line, so the largest purchases get the loosest check in dollars.
Adding a 250 dollar ceiling, checked with the percentage, brings those two back into review and lets 50 dollars through. Four lines to look at, and each of them is worth looking at.
The floor is the surprise. A two cent unit price floor sounds like rounding, but it is measured per unit and multiplied by the quantity. The fasteners went from 8 cents to 9, a 12.5 percent rise, and 200 dollars passed because the difference was one cent a unit. A floor belongs on prices quoted to fractions of a cent, set to the smallest unit the supplier rounds to.
Quantity is a separate question.
In a three way match the quantity check compares what was billed with what was received. Oracle Payables calls this the received percentage, the difference above the received quantity that you allow suppliers to invoice, checked without considering price. For goods you count, there is rarely a reason to allow more than zero: billing for eleven chairs when ten arrived is a question to ask every time.
For goods sold by weight or volume, a small percentage avoids a queue of honest differences. A supplier billing 30,000 kilos of resin against a weighbridge receipt of 29,940 is normal. SAP sets quantity tolerances on separate keys from price, and its invoice verification course notes that an absolute quantity limit is judged on the amount of the invoice item, so a cheap line shows a large variance and an expensive one a small variance. A percentage avoids that.
Know what an empty field means.
The most consequential tolerance is often the one nobody filled in, and systems read a blank differently. Oracle’s documentation is explicit: a percentage of zero allows no variance, but an active tolerance with no value allows infinite variance. In Dynamics 365 Finance the legal entity default price tolerance is zero percent, and negative price differences are allowed unless you choose to flag both directions. SAP switches a limit off with Do not check, and blocks a variance in every case when the upper limit is zero with Check limit set.
So the same blank can mean “block everything” in one system and “check nothing” in another. When you move ERP, read the setting in the new system rather than copying the field values across.
A starting setting you can defend.
- Price: a percentage with an amount ceiling per line, both checked, so the invoice stops at whichever limit it breaches first. 2 percent and 250 dollars is a reasonable place to start for mixed spend; test it before you adopt it.
- Quantity against the receipt: zero for goods you count, a small percentage for goods you weigh or measure, such as resin or fuel, where the receipt and the invoice will rarely agree to the kilo.
- Undercharges: let them through with a warning unless your auditors want them reviewed. A short bill is usually a partial invoice or a credit to come, and it costs you nothing today.
- Freight, tax and unit of measure differences: match them with rules instead of tolerance. A tight band on a structural difference fills the queue with lines that are correct.
- Ownership: the controller owns the numbers, accounts payable reports the exception volume each month, and the settings are reviewed when prices move or the supplier mix changes.
Then run your own version of the table above on a real quarter. If the queue is more than your team can clear each week, widen the percentage before you raise the ceiling. The ceiling is what protects the large lines.
How Rivane applies a tolerance set.
In Rivane, matching runs on a bill linked to a purchase order, as a two, three or four way match. Each entity can hold a default tolerance set with a price percentage, a quantity percentage, a band for the invoice total against the order total, and an absolute unit price floor. In a three way match the quantity is compared with the quantity received; in a four way match, with the quantity accepted at the latest inspection.
A Rivane tolerance set and how it is applied
# A Rivane PO tolerance set, one per entity by default.
# Example values. Shape only.
name Default tolerance
price_variance_pct 2.0 % of PO unit price
quantity_variance_pct 0.0 % of received qty (3-way)
% of accepted qty (4-way)
total_variance_pct 2.0 % of PO total
price_variance_absolute 0.00 per unit, entity currency
is_default true
each bill line
price ok if |variance %| <= price pct
or |unit price difference| <= absolute
qty ok if |variance %| <= quantity pct
bill matches if every line ok and total within band
otherwise -> payment blocked until an override
no set -> every threshold is zero
A bill that is not a full match stays out of the open state, so it cannot be paid, until someone records a tolerance exception. The exception keeps who made it and when, and running the match again does not undo it. If no tolerance set exists, every threshold is zero, so the default is to block rather than to pass.
Some limits to plan around, as built today. The floor works as “either may hold”, per unit, like setting D, and there is no amount ceiling per line yet, so setting C cannot be entered exactly. The closest is setting E: a tight percentage with a one cent floor, which on this example also sent four lines to review and let 250 dollars through, the fasteners among them. Variances block in both directions, so an undercharge goes to review. The total band compares the bill with the whole order, so a partial invoice against a partly received order lands in review, and the band should be at least as wide as the price percentage. The 3-Way Matching screen edits the price and quantity percentages; the total band and the floor are set through the tolerance API.
Write the decision down.
- The settings in force, per entity and per category where they differ, with the date they took effect.
- The test: the invoice population used, the candidate settings, and the exceptions and unreviewed overbilling each produced, as in the table above.
- What an empty field means in your system, written down, so nobody reads a blank as zero.
- A monthly count of exceptions, overrides and the reasons given, so the setting can be tightened or relaxed on evidence.
Pick the rule before the number.
Teams spend their time debating 2 percent against 5. On this example, the bigger decision was how the percentage and the amount combine: checked together, they kept the large lines in review and let 50 dollars through; used as a floor, the same kind of setting let 1,990 dollars through. Choose the rule, test it on a real quarter, and write down what you chose and why.
To see how purchase orders, receipts and the match work together in Rivane, look at purchase orders in Rivane.
Sources
- SAP Help Portal, Logistics Invoice Verification, Setting Tolerances (SAP ERP 6.0 EHP8). Read in the page for the four limits per tolerance (absolute and percentage, upper and lower), the rule that exceeding a lower limit gives a warning while exceeding an upper limit blocks the invoice for payment, the Do not check setting, and the advice to block a variance in all cases by setting the upper limit to zero with Check limit.
- SAP Learning, Invoice Verification in SAP S/4HANA, Entering Invoices with Variances. Read in the page for the tolerance keys by variance type (DQ and DW for quantity, PP for price), where the limits are set per company code, and how the absolute quantity limit is evaluated on the amount of the invoice item.
- Oracle Fusion Cloud Financials 26B, Using Payables Invoice to Pay, Invoice Tolerances. Read in the page for the received percentage and price percentage tolerances, both measured as the difference above the purchase order, and the note that a percentage tolerance of zero allows no variance while an active tolerance with no value allows infinite variance.
- Microsoft Learn, Dynamics 365 Finance, Set up accounts payable invoice matching validation. Read in the page for the legal entity default price tolerance of zero percent, the choice of percentage, amount or percentage and amount for price totals, and the option to flag a discrepancy only above the tolerance or in both directions.
- Corpay, Invoice Matching Software: Two-Way, Three-Way, and Where the Match Fails (updated 16 September 2026). Read in the page as the current answer. It recommends pairing a percentage with an absolute cap and testing two or three candidate settings against a quarter of invoices, without working an example.
A note on how this was researched. The SAP, Oracle and Microsoft behaviour comes from each vendor’s own documentation, read in the page, and may differ by release; test any setting in a sandbox first. The invoice lines are an example, and every figure was calculated in a script, which you can repeat with a spreadsheet. The Rivane section describes the matching engine as built today, checked against the code rather than marketing copy.
On embedded social posts: we looked for public posts from vendors or practitioners on setting matching tolerances and found none we could verify as current, relevant and authentic, so this article uses ordinary citations instead.