Releasing Blocked Invoices in SAP (MRBR)
An invoice will not release in MRBR even after automatic release. The reason is which block is on it — a variance, a manual payment block, or a stochastic one each clears differently.
A run of blocked invoices is sitting in MRBR, and you do the obvious thing: start automatic release and let SAP clear the ones whose variances have since resolved. Most of them go. But one keeps coming back. The goods receipt matches, the price matches, the tolerance check passes — and still the invoice will not release. What you are looking at is not a variance at all. Someone set a manual payment block on it, and automatic release is built to ignore exactly that. This is the most common reason a blocked invoice refuses to clear in SAP: the release mechanism you are running was never designed to touch the block that is actually holding it. Releasing a blocked invoice correctly means first knowing which of several different blocks is on it, because each one lives in a different field and clears a different way.
Where a blocked invoice actually hides
The block you can see in the payment status is rarely the whole story. The same invoice can carry different blocks in different places, and only one of them answers to automatic release.
| Where the block lives | Field or procedure | How it clears |
|---|---|---|
| Header payment block | INVFO-ZLSPR, labelled Pmnt Block in MIRO | Set by hand in MIRO or written by the BAdI MRM_PAYMENT_TERMS (export parameter E_ZLSPR); automatic release never touches it |
| Variance block on a line | DRSEG-SPGRP, set automatically on an OMR6 tolerance breach | The "Blocked due to variances" procedure — the only one automatic release and RM08RELEASE clear |
| Manual block on the PO item | DRSEG-SPGRQ, recorded by hand against the PO item | The "Manual payment block" procedure; released only by hand in MRBR |
| Stochastic block | Random sampling, no variance involved | The "Stochastically blocked" procedure; always released by a person |
| Quality block | Raised by a QM inspection, not a tolerance key | Waits on the inspection result, not on MRBR variance logic |
MRBR groups blocked invoices by these three procedures, and the Release Invoice action removes the vendor-line payment block but does not change the item-level reasons underneath it. Run automatic release and only the variance procedure clears; everything else stays exactly where it was. So the first question is never how do I release it but what is holding it — a tolerance breach a machine can reassess, a decision a person made, or a sampling rule that was always going to need a human to sign off.
Before and after: fighting the release vs. clearing the right block
| Fighting the release mechanism | Releasing the right block |
|---|---|
| Automatic release run again and again on an invoice it was never built to clear | The blocking procedure identified first, then the matching release path chosen |
| A manual payment block treated like a variance and left to sit in the queue | The header payment block (ZLSPR) released by hand, since automatic release ignores it by design |
| Tolerance key PP widened in OMR6 to force a variance invoice through | The variance resolved at source and the invoice released with tolerances left strict |
| The whole document reopened to chase one flagged line | One flagged line resolved; the whole-invoice block lifts with it |
| A quality block escalated to AP as if it were a payment problem | The QM inspection result cleared, which is what the quality block was waiting on |
Release the right block — do not just run automatic release
- 1Identify the blocking procedure first
Open the invoice in MRBR and read which procedure holds it: Blocked due to variances, Manual payment block, or Stochastically blocked. Only the first is a candidate for automatic release. Everything after this depends on getting this one reading right.
- 2For a variance block, fix the variance, then release
A price variance on tolerance key PP, a quantity variance, or a unit problem that reads as price all clear once the underlying figure is corrected. If the message points at price but the number is right, the cause is usually the units beneath the price; a price tolerance that never seems to work is a different fix again. Comparing the supplier’s old and new file with a price list diff often shows which figure moved.
- 3For a manual payment block, release it by hand
The header payment block in INVFO-ZLSPR (Pmnt Block) was set deliberately — in MIRO, or programmatically by the BAdI MRM_PAYMENT_TERMS through its E_ZLSPR parameter — so no automatic run removes it. Use the Release Invoice action in MRBR, and remember it removes the vendor-line payment block only: it does not change any item-level reason (DRSEG-SPGRP for an automatic variance, DRSEG-SPGRQ for a manual one) underneath. If a line also carries a variance reason, clearing the header block alone will not settle the invoice.
- 4Check who is allowed to release
Releasing is gated by authorization objects M_RECH_SPG (blocking reason) and M_RECH_EKG (purchasing group). A release that silently does nothing is often a missing authorization, not a stuck invoice.
- 5Schedule background release only for variances
RM08RELEASE clears blocks whose variances have since resolved, on a schedule — a goods receipt that finally posted, a price condition that was corrected. It will never clear a manual or stochastic block, so do not lean on it as a catch-all for the whole queue; those two procedures still need a person to work through them, and an invoice left waiting on automatic release that cannot see it ages quietly in AP.
Build a release checklist into your invoice verification
Why identity resolution is the real fix
MRBR is where blocked invoices surface, but it is not where they are caused. Most variance blocks trace back to one thing: the invoice line and the purchase order line do not resolve to the same item, the same unit, or the same agreed price, so SAP computes a difference and holds the payment. Release one and the next supplier feed reopens the same gap. The durable fix is to reconcile every invoice line against one trusted record — the agreed price, the right unit, the correct conversion — before it ever reaches the block queue, which is the whole job of invoice reconciliation against trusted catalog data. A block is a symptom of two records that should be the same and are not; resolve them once and most variances never compute, so the release queue mostly empties itself and MRBR goes back to being an exception list rather than a daily chore.
Related
Tool
Price List Diff (Old vs New File)
Compare an old and new supplier file to see which figure moved before it blocks an invoice.
Free tool
Margin & Markup Calculator
Check what a released-but-wrong price does to margin before you clear it for payment.
Tool
UNECE Rec 20 Unit Code Validator
Confirm unit strings map to valid standard codes so order and price units stay comparable.
Guide
The Error Says Price. The Cause Is Units.
Why a price-variance block is so often a unit problem in disguise, in SAP and Dynamics.
Guide
SAP Price Variance Tolerance Is Not Working: Why
M8 082 / M8 083, tolerance key PP, and the OMR6 settings behind a price block.
Guide
SAP M8 534 Balance Not Zero: BD, Not AP
Why small differences need key BD, not AP, and how OMRH / OMRI relate to it.
Playbook
Map Supplier Attributes to Your Schema
Resolve supplier units, prices and conversion factors onto one canonical product model.
Glossary
What Is a Blocked Invoice?
The four blocking reasons and the rule that one varying line blocks the whole invoice.
FAQ
What is a blocked invoice in SAP?
A blocked invoice is one that SAP has posted but will not pay: the document and its account movements go through, but it carries a block indicator and cannot be settled until someone releases it. Invoice verification raises four kinds of block — quantity, price, quality and date. Quality comes from a QM inspection result rather than a tolerance key, while the other three come from the tolerance limits set per company code in OMR6. The whole invoice is blocked for payment even if only one line shows a variance.
Why does automatic release not clear my blocked invoice?
Automatic release only clears one of the three MRBR blocking procedures: Blocked due to variances. If the invoice carries a manual payment block or was stochastically blocked, no automatic run will touch it, and that includes the background program RM08RELEASE. A manual header payment block in particular has to be released by hand. Before you widen any tolerance, open the invoice in MRBR and check which procedure is actually holding it.
What is the difference between a header payment block and an item blocking reason?
The header payment block lives in INVFO-ZLSPR, shown as Pmnt Block in MIRO, and is set either by hand or by the BAdI MRM_PAYMENT_TERMS through its export parameter E_ZLSPR. An item blocking reason lives on the line: DRSEG-SPGRP is set automatically when a line breaches a tolerance, and DRSEG-SPGRQ is a manual reason recorded against the PO item. The Release Invoice action removes the vendor-line payment block but does not change these item-level reasons.
Which transaction releases blocked invoices, and what authorization does it need?
MRBR, Release Blocked Invoices, is the transaction; RM08RELEASE is the background program that runs the same logic on a schedule. Releasing is gated by two authorization objects: M_RECH_SPG for the blocking reason and M_RECH_EKG for the purchasing group. A release that appears to do nothing is often a missing authorization rather than a stuck invoice, so check those objects before assuming the block itself is the problem.
Should I raise the tolerance in OMR6 to stop invoices getting blocked?
No. OMR6 tolerances are set per company code, and the whole invoice is blocked for payment even when only one line varies, so widening a key like PP to release today’s invoice quietly accepts real price errors on every invoice afterwards. Fix the underlying variance at source instead — the wrong price, the wrong quantity, or the conversion factor behind it. For a manual or stochastic block, OMR6 is irrelevant anyway, since those are not variance blocks at all.
REVIEW-NOTES
- Glossary pair deferred to the wiring commit. The paired glossary entry
glossary/blocked-invoiceis created in this same batch and may not exist at build time, so it appears only as a<Card>(not audit-checked), never as an inline markdown link. Once it ships, add the inline cross-link (and haveblocked-invoicelink back here) in the final cross-link commit — brief Workflow step 6. For the same reasonrelatedSlugsis omitted: several Related cards (incl.blocked-invoice) are not yet guaranteed present, andrelatedSlugsis audit-checked. - No accuracy flags. Every transaction (MIRO, MRBR, OMR6, OMRM, RM08RELEASE), field (INVFO-ZLSPR, DRSEG-SPGRP, DRSEG-SPGRQ, E_ZLSPR / BAdI MRM_PAYMENT_TERMS), blocking procedure (Blocked due to variances, Manual payment block, Stochastically blocked), blocking reason (quantity, price, quality from QM, date), tolerance key (PP), and authorization object (M_RECH_SPG, M_RECH_EKG) traces to the brief appendix. No M8 short text is quoted verbatim here, so no SE91 spot-check is required for this file. No invented strings or statistics.
- DE/IT CTA localisation remains the open decision in SCHEMA-NOTES §4; it does not affect this
English piece, whose
book-demoCTA renders the brief’s heading and button verbatim.
Claro
Stop maintaining this by hand
Claro keeps product and supplier data trusted as catalogs change — matching, deduplication, enrichment, and validated write-back into the systems you already run.
Book a demo