VoiSAP — SAP FICO Error Guide

SAP Tolerance Group Error:
Invoice Exceeds Tolerance — OBA3 and OBA4 Fix

Your MIRO invoice is blocked or cannot post because the price or quantity deviates from the purchase order beyond the configured tolerance limits. Tolerance groups control how much variance SAP allows before blocking an invoice for review. This guide explains the four tolerance keys, how OBA3 and OBA4 work together, and the exact steps to diagnose and fix the error. Written by an SAP FICO consultant with 18 years of real project experience.

Error Explained
OBA3 · OBA4 Fix
4 Tolerance Keys
MIRO · MRBR
S/4HANA 2026
4
Tolerance Keys
OBA3
Vendor Tolerances
21
FAQ Answers
MRBR
Release Blocked
📖 13 min read
ECC + S/4HANA
Call Us
+1 416-569-4606
Email Us
contact@voisap.com
SAP FICO AP accountant reviewing blocked invoice in MIRO — tolerance group error OBA3 price variance configuration
Tolerance group errors are a deliberate control — SAP is working exactly as designed by flagging an invoice that deviates from the agreed PO price or quantity. The question is whether the variance is a genuine supplier error (fix the invoice) or a configuration gap (fix the tolerance group). Getting this distinction right is the foundation of a good AP process.

Quick Answer — SAP Tolerance Group Error

  • The error means the invoice variance exceeds the configured tolerance limit. SAP compares the invoice price/quantity against the PO and GR. When the deviation exceeds the OBA3 limit, the invoice is blocked or cannot post.
  • Most common cause: PP (price variance) key exceeded. The vendor invoiced at a higher price than the PO. SAP's PP tolerance limit is too tight for the actual variance.
  • The fix is in OBA3 (vendor tolerance groups, SPRO). Increase the PP upper tolerance percentage or amount, transport, and retry MIRO.
  • Also check OBA4 (employee tolerance groups). Even if OBA3 is wide enough, the posting user's employee tolerance may be tighter.
  • Use MRBR to release invoices that were posted but payment-blocked. MRBR lets authorised users review and release blocked invoices without changing config.

Error messages you will see:
"Invoice & blocked due to price variance (tolerance key PP exceeded)"
"Tolerance key PP: upper limit X% exceeded — variance Y%"
"The difference exceeds the tolerance limit"
"Invoice blocked for payment — exceeds tolerance for quantity variance (DW)"
"Moving average price variance (VP) would exceed tolerance"

OBA3
Vendor Tolerances
OBA4
Employee Tolerances
PP
Price Variance Key
MRBR
Release Blocked
FLVN01
Group on Vendor
Key Takeaways
1

Decide first: is the variance a data error or a config gap? If the vendor genuinely overcharged, the fix is a credit note — not widening the tolerance. If the tolerance is too tight for legitimate business variances, the fix is OBA3. Widening tolerance to clear a legitimately wrong invoice is an audit risk.

2

OBA3 and OBA4 are independent gates — both must pass. A vendor tolerance of 10% in OBA3 does not help if the posting user has a 2% limit in OBA4. Check both when troubleshooting.

3

OBA3 changes require a transport. Tolerance group configuration is client-dependent. Transport DEV → QA → PRD. Never change tolerance limits directly in production.

4

A blocked invoice still posts — it just cannot be paid. When SAP blocks an invoice for tolerance (not a hard stop), the invoice posts to the ledger but gets a payment block. It will not appear in F110 until released in MRBR.

5

The blank tolerance group is the default. Vendors with no group assigned in BP use the blank-key group in OBA3. This default group often has tight limits. Create named groups for specific vendor categories and assign them in BP.

Background

How SAP Tolerance Groups Work in Invoice Verification

When a vendor invoice arrives, SAP performs a three-way match: it compares the invoice price and quantity against the purchase order (what was agreed) and the goods receipt (what was actually delivered). In a perfect world, all three numbers match exactly. In reality, small discrepancies are common — rounding differences, freight surcharges, price escalation clauses, or partial deliveries.

Tolerance groups define how much variance is acceptable before SAP takes action. If the variance is within tolerance, the invoice posts and proceeds to payment automatically. If the variance exceeds tolerance, SAP either blocks the invoice for payment (posts it but prevents F110 from paying it until a user reviews and releases it in MRBR) or prevents posting entirely with a hard stop error.

Plain English. Think of a tolerance group as a manager's approval threshold. If the invoice is within 3% of the PO price, the system trusts it and lets it through. If it is 8% over, a human needs to review it. The tolerance group is the rule that defines that threshold. OBA3 is where you set the rule per vendor type. The vendor master is where you say "this vendor uses this rule."

SAP three-way match invoice verification — purchase order goods receipt and vendor invoice tolerance comparison
The three-way match compares Purchase Order (agreed price/quantity), Goods Receipt (received quantity), and Vendor Invoice (billed price/quantity). Tolerance groups define the acceptable gap between these three documents. When the gap exceeds the configured limit, SAP blocks the invoice — either preventing posting or allowing posting with a payment block that appears in MRBR.
Tolerance Keys

The 4 SAP Tolerance Keys — BD, DW, PP, VP Explained

Each tolerance key controls a different type of variance. The error message tells you which key is failing — use that to go directly to the relevant limit in OBA3.

SAP Invoice Verification Tolerance Keys in OBA3
KeyControlsHow It WorksMost Common?
PPPrice VarianceDifference between invoice unit price and PO price. Expressed as upper/lower percentage AND upper/lower absolute amount. Both must be within limits.Yes — most common
BDSmall DifferencesAbsolute amount below which SAP auto-posts to a difference account without blocking. A safety net for trivial rounding. If variance exceeds BD, it moves to PP check.Low — rounding
DWQuantity VarianceDifference between invoice quantity and goods receipt quantity. Percentage and absolute amount. Triggered when vendor bills for more than was received.Moderate
VPMoving Avg PriceApplies to materials with moving average price (V). Controls how much the invoice can shift the material's MAP. Percentage only.MAP materials
SAP OBA3 tolerance group configuration screen — PP price variance key upper and lower percentage limits
In OBA3, each tolerance group shows all four keys. For PP, you set an upper tolerance percentage (how much over PO price is acceptable) and a lower percentage (how much under). You also set absolute amount limits — an invoice can pass the percentage check but fail the absolute amount check if the variance amount is too large, or vice versa. Both must pass.
The Fix

Step-by-Step: Fix the Tolerance Error in OBA3

Confirm first whether the variance is a legitimate supplier error or a config gap. If the invoice is genuinely wrong, get a credit note — do not widen the tolerance. If the config is too tight for real business variances, fix OBA3.

1
Read the error — note the tolerance key, actual variance, and allowed limit
The MIRO error shows which key (PP, DW, BD, VP), the actual variance percentage or amount, and the current allowed limit. For example: "PP upper limit 3% exceeded — actual variance 5.2%." This tells you the limit needs to increase from 3% to at least 5.3% for this invoice to pass. Note the exact numbers before going to SPRO.
2
Find the vendor's tolerance group in BP
Go to transaction BP, open the vendor, switch to role FLVN01, enter the purchasing organisation. Look for the Tolerance Group field. Note the group code (e.g. "STD" or "COMM") or blank (default). This tells you which group to adjust in OBA3.
3
Adjust the tolerance limit in OBA3
In DEV system: go to SPRO > Materials Management > Logistics Invoice Verification > Invoice Block > Set Tolerance Limits (transaction OBA3). Select the company code. Find the tolerance group from step 2 (or blank for default). Find the failing key (e.g. PP). Adjust:
Upper tolerance %: increase to cover the actual variance (e.g. from 3% to 8%)
Upper tolerance amount: set a reasonable absolute ceiling
• For commodity or volatile-price vendors, setting both to blank removes the PP limit entirely for that group
Save and create a transport.
4
Transport DEV → QA → PRD
OBA3 tolerance configuration is client-dependent. The change must be transported. Test in QA by posting a test invoice with the same variance — confirm it now passes without blocking. Then transport to production. After the PRD transport, the new limits take effect immediately for new MIRO postings.
5
Release previously blocked invoices in MRBR
After the transport, any invoices that were already blocked before the config change do not automatically unblock. Go to MRBR (Release Blocked Invoices), select the company code and vendor, execute. Review the blocked invoices — the ones blocked by the now-corrected tolerance key can be released. Click Release. They will now appear in the next F110 payment run.

Never widen tolerance to cover a genuinely wrong invoice. If a vendor charged 20% more than the PO price without a contract amendment, widening the tolerance to clear it is an internal control failure and an audit finding. Get a credit note from the vendor or issue a formal price amendment to the PO before widening limits. Document the business justification for any tolerance limit increase.

Employee Tolerances

OBA4 — Employee Tolerance Groups Explained

OBA4 is the second tolerance gate. Even if the vendor tolerance in OBA3 allows a variance, the SAP user posting the invoice must also have an employee tolerance group (OBA4) that allows the same level of variance. If the posting user's OBA4 limit is tighter than OBA3, the posting fails at the employee level.

OBA4 controls: the maximum amount a user can post as a payment difference in clearing; the maximum residual item amount; and in some configurations, limits on how much a user can manually override in MIRO. Employee tolerance groups are assigned to SAP user IDs in the user master (SU01) or user parameter settings.

SAP OBA4 employee tolerance group configuration — user level payment difference and residual item limits
OBA4 employee tolerances sit on top of OBA3 vendor tolerances. A senior AP manager may have a higher OBA4 tolerance than a junior AP clerk — meaning the same invoice blocked for a junior poster may be postable by the manager. This creates a built-in approval escalation: blocked invoices can be released by users with higher tolerance authority.

How to check a user's OBA4 group: Go to SU01 (User Maintenance), enter the user ID, go to the Parameters tab, and look for the parameter KTG (tolerance group for accounting). The value is the OBA4 group assigned to that user. Then check OBA4 in SPRO for that group's limits. Users with blank KTG parameter use the default OBA4 group (blank key in OBA4 table).

FAQ

SAP Tolerance Group Error — 21 Questions Answered

A tolerance group defines acceptable variance limits between an invoice and the corresponding purchase order or goods receipt. When MIRO detects a deviation beyond these limits, SAP blocks the invoice or prevents posting. The error means the actual variance — in price (PP), quantity (DW), small difference (BD), or moving average price (VP) — exceeds the upper or lower limit configured in OBA3 for the vendor's tolerance group. Fix: adjust the relevant limit in OBA3 and transport, or release the specific invoice in MRBR if the variance is acceptable.

BD (Small Differences) — absolute amount below which SAP auto-clears differences to a difference account; DW (Quantity Variance) — acceptable deviation between invoice quantity and GR quantity; PP (Price Variance) — acceptable deviation between invoice unit price and PO price, as percentage and absolute amount — the most commonly exceeded key; VP (Moving Average Price Variance) — for materials with MAP (price control V), controls how much an invoice can shift the material's moving average price as a percentage.

OBA3 defines vendor-side tolerances — how much the invoice amount can deviate from the PO/GR before SAP blocks posting. Assigned per vendor type in the vendor master. OBA4 defines employee-side tolerances — how much variance an individual SAP user can post or approve. Both must be satisfied for a posting to succeed. A vendor tolerance of 10% in OBA3 does not help if the posting user's OBA4 group only allows 2%. Assign employee tolerance groups via SU01 parameter KTG.

Read the error to identify the failing key and variance amount. Find the vendor's tolerance group in BP (FLVN01 role, Tolerance Group field). In DEV, go to OBA3 (SPRO > Materials Management > Logistics Invoice Verification > Invoice Block > Set Tolerance Limits), find the group and key, increase the limit to cover the actual variance. Transport to PRD. Then go to MRBR to release any previously blocked invoices. If the invoice price genuinely exceeded the PO (not a config gap), get a credit note instead of widening tolerance.

In S/4HANA, the tolerance group is in the Business Partner (BP) record. Open BP, find the vendor, switch to role FLVN01 (MM Vendor), enter the purchasing organisation. Look for the Tolerance Group field in the purchasing organisation data screen. Enter the tolerance group code from OBA3. If blank, the vendor uses the default group (blank key in OBA3). In ECC, the same field is in MK01/MK02 (vendor purchasing data screen).

Two possible behaviours: (1) Payment block — the invoice posts to the ledger but is automatically blocked for payment. It does not appear in F110 until released in MRBR. (2) Hard stop — SAP prevents posting entirely and shows an error. Which behaviour applies depends on whether the tolerance key is configured as a soft block or hard error in OBA3. Most implementations use payment block for PP variances, allowing invoices to post but requiring manual review before payment.

PP (Price Variance) controls the acceptable difference between the invoice unit price and the PO price. If the PO price is CA$100 and PP upper tolerance is 3%, an invoice at CA$104 (4% over) triggers the error. Fix: go to OBA3 in DEV, find the vendor's tolerance group, increase the PP upper tolerance percentage or absolute amount to cover the variance. Transport. If the vendor legitimately has variable pricing (commodities, fuel surcharges), set a wider PP tolerance for their group or use a dedicated tolerance group with appropriate limits.

MRBR (Release Blocked Invoices) lists all invoices blocked by tolerance violations — showing the blocking reason (PP, DW, BD, VP), variance amount, and vendor. Authorised users review each blocked invoice and either release it for payment (if the variance is acceptable) or return it for correction. Released invoices appear in the next F110 payment run. Running MRBR regularly is part of the standard AP month-end close — blocked invoices accumulate quickly if not reviewed and can delay supplier payments.

Yes — leaving amount and percentage fields blank for a tolerance key removes the limit for that key. Invoices will never be blocked for that variance type regardless of the deviation size. This is sometimes done for utility or service vendors where exact price matching is not meaningful. However, removing all limits defeats the three-way match control and creates audit risk. Document the business justification for any blank limit clearly — auditors will ask.

The default tolerance group is the group in OBA3 with a blank key. Any vendor with no tolerance group assigned in their BP purchasing data uses this default. In many implementations, the default group has tight limits (e.g. 1-2% PP tolerance) suited to standard commercial goods. Vendors with commodity pricing, fuel surcharges, or variable service rates should have a dedicated group with appropriate limits and that group explicitly assigned in BP — rather than relying on a tight default.

Go to MRBR. Enter company code, optionally vendor range, and execute. The report lists all currently blocked invoices with the blocking reason (tolerance key), the variance amount, and the vendor. From MRBR you can drill into each invoice for detail, then release or flag for correction. For a broader view across vendors, filter by blocking reason code to see all PP-blocked invoices as a group.

Vendor tolerance groups in OBA3 apply specifically to Logistics Invoice Verification — MIRO and MRRL. They compare the invoice against PO and GR. FB60 (direct FI vendor invoice) does not reference a PO or GR, so OBA3 vendor tolerances do not apply. OBA4 employee tolerances do apply to FB60 — they control how much a user can post as a payment difference or residual item in direct FI postings. If a user hits a tolerance error in FB60, check OBA4 first.

Evaluated Receipt Settlement (ERS, transaction MRRL) automatically creates the vendor invoice based on GR quantity and PO price — no manual invoice entry. Because price and quantity come from PO and GR directly, PP variance errors should not occur in ERS. The BD (small differences) key can still apply for minor rounding. ERS is enabled per vendor in BP purchasing data (ERS indicator) and requires GR-based invoice verification to be active. For ERS vendors, tolerance group errors are rare — they indicate an unusual scenario like a price change on the PO after GR was posted.

The three-way match compares PO (agreed price/quantity), GR (quantity received), and Invoice (price/quantity billed). Tolerance groups define how strict this match must be — the acceptable gap between the three documents. A perfect three-way match passes all tolerance checks automatically. Deviations trigger the relevant key: PP for price differences between invoice and PO, DW for quantity differences between invoice and GR. Tolerance groups are the configuration layer that determines whether the three-way match control is tight (for standard goods) or flexible (for services or commodities).

BD (Form Small Differences Automatically) defines the absolute amount below which SAP automatically posts a residual difference to a price difference GL account without blocking or user intervention. For example, if BD is CA$5 and the invoice is CA$2 over the PO/GR value, SAP posts CA$2 to the price difference account and clears the invoice automatically — no MRBR review needed. If the difference exceeds BD, SAP checks the PP percentage/amount limits instead. BD is a convenience feature for rounding — set it to a small amount (CA$1-10) to eliminate trivial invoice blocks.

Yes — OBA3 tolerance groups are company code-specific. Each company code has its own set of tolerance groups with different limits. A vendor may use a wider tolerance group in one entity (commodity pricing) and a tighter one in another (standard goods). In BP, the tolerance group is assigned per purchasing organisation — and a purchasing organisation can serve one or multiple company codes. Design your tolerance group structure with the entity's AP policy in mind, not as a global setting.

VP (Moving Average Price Variance) applies to materials managed with moving average price (price control V in the material master). It controls how much an invoice can shift the material's MAP as a percentage. For example, if VP is set to 10% and posting an invoice would increase the MAP by 15%, SAP blocks it. VP errors are most common when a large-value invoice is posted against a low-stock material — the price impact is amplified when there are few units to absorb it. Fix: increase the VP limit in OBA3 for the vendor's tolerance group, or investigate why the MAP impact is so large (usually a price error on the invoice).

Go to MRBR. Select the blocked invoice. Review the blocking reason and variance. If the variance is acceptable for this specific case (e.g. vendor provided a valid price amendment), click Release. The invoice is unblocked and included in the next F110 run. Releasing in MRBR does not change OBA3 or the vendor's tolerance group — it is a one-time manual override for that invoice. If the same vendor regularly exceeds tolerance, fix the config in OBA3 rather than releasing repeatedly in MRBR.

Yes — OBA3, OBA4, the four tolerance keys (BD, DW, PP, VP), MRBR, and the blocking logic are identical in ECC and S/4HANA. The only S/4HANA difference in this area is the vendor master path: tolerance group is assigned via BP transaction (FLVN01 role) in S/4HANA instead of MK02 in ECC. All SPRO paths, configuration objects, and MIRO posting logic are unchanged.

Vendor tolerance groups: SPRO > Materials Management > Logistics Invoice Verification > Invoice Block > Set Tolerance Limits (transaction OBA3). Employee tolerance groups: SPRO > Financial Accounting (New) > Accounts Payable > Business Transactions > Outgoing Payments > Manual Outgoing Payments > Define Tolerance Groups for Employees (transaction OBA4). Both are client-dependent — changes require transport from DEV to QA to PRD.

Yes — VoiSAP's SAP FICO training covers the full AP cycle: MIRO invoice verification, three-way match, tolerance group configuration (OBA3 and OBA4), blocked invoice release (MRBR), and F110 automatic payment — all on a live SAP S/4HANA system. Book a free demo to discuss your background and the fastest path to your first SAP FICO role.

Learn SAP FICO Invoice Verification —
On a Real System, Not a Manual.

Book a free demo class with Gourav. See MIRO, OBA3, and F110 on a live SAP S/4HANA system before you commit to anything.

✅ Thank you! Gourav will be in touch within one business day.