SAP BAPIObjectBAPI_INCOMINGINVOICE_RELEASEModuleMM_P2P

BAPI_INCOMINGINVOICE_RELEASE — Release a Blocked Incoming Invoice

BAPI_INCOMINGINVOICE_RELEASE removes the payment block from a logistics invoice verification document that was blocked automatically for price or quantity variance, or blocked manually. It mirrors transaction MRBR for individual release. It does not release a purchase order, does not clear the block if the reason requires a different authorization role, and requires an explicit commit to persist.

This page covers the release of a blocked incoming invoice document via BAPI, the interface it exposes, and the recurring bugs where a caller trusts SY-SUBRC instead of the RETURN table and loses invoices in a batch loop. It also distinguishes this call from purchase order release, which is a separate object entirely.

Published 16 Sept 2026· 1,004 words

What it does

The BAPI acts on the invoice document created by logistics invoice verification, the object stored across the invoice header and item tables. It mirrors transaction MRBR used for individual release of blocked invoices, not the release strategy transactions used for purchase orders or purchase requisitions. An invoice ends up blocked either automatically, because the posted quantity or price falls outside the configured tolerance limits, or manually, because someone set a payment block reason during MIRO. This BAPI clears that block on a single invoice document so it becomes eligible for the next automatic payment run. It does not create, park, or reverse an invoice, and it does not touch the purchase order it references.

Important parameters

The interface is deliberately narrow, matching the fact that MRBR releases one document at a time in its BAPI form.

  • INVOICEDOCNUMBER - the invoice document number to be released, matching the accounting document number assigned at posting
  • FISCALYEAR - the fiscal year the invoice document was posted in, required together with the document number to identify the record uniquely
  • RETURN - the standard return table carrying success, warning, and error messages from the release attempt; this is the only place the outcome of the call is reported

Commit behaviour

The BAPI does not commit. It updates the invoice block status inside the current logical unit of work and leaves the decision to persist that change to the caller, exactly like every other classic BAPI. A separate call to the transaction commit function module is required immediately afterward. If the caller forgets it, the release looks successful in RETURN, the invoice appears unblocked in the same session, but nothing is actually written to the database. The next payment run still sees the invoice as blocked, and there is no error anywhere in the log to explain why, because the failure is an omission, not a rejected operation.

Return handling

SY-SUBRC after the call is essentially useless; it stays zero whether the release succeeded, was rejected, or the invoice did not exist. All meaningful information sits in the RETURN table, and it can carry more than one line. A correct check scans every entry for TYPE E or TYPE A, not just the first row, because a single call can return an informational message alongside an error, and code that inspects only line one will treat a real failure as success. A frequent interface bug is checking whether RETURN is initial and calling that success; an invoice that is already released, not found, or blocked for a reason this BAPI cannot touch will still populate RETURN with a message, sometimes type I or W rather than E, and lazy filtering waves those through as if the release happened. In batch programs, RETURN must be captured per invoice and logged with the invoice number, not overwritten on each loop iteration, or a mid-batch failure disappears silently.

ECC vs S/4HANA

The underlying process, invoice verification with tolerance-based blocking and release, is unchanged on S/4HANA, and this BAPI remains valid for programmatic release. There is a Fiori app for end users to manage and release blocked invoices interactively, but that does not replace this BAPI for custom integrations, interfaces, or batch release jobs, which continue to call it directly. No newer released communication scenario has superseded it for this specific operation.

Common pitfalls

Most failures trace back to loop handling, commit placement, or a mismatch between the block reason and what this BAPI is actually able to clear.

  • Calling this BAPI against a block reason that requires manual clearing through an accounting role rather than invoice verification release; the call returns a message and does nothing, and the caller reads it as a no-op success
  • Looping over many blocked invoices and checking only the RETURN of the last call, missing failures on earlier invoices in the batch
  • Omitting the commit inside the loop and batching a single commit at the end, so a job that terminates partway through leaves some invoices genuinely released and others only appearing released within the dead session
  • Confusing this object with purchase order release; developers new to the interface sometimes wire this call into a PO approval workflow by mistake, and it does nothing to the order
  • Authorization shortfalls in a background user running the release job: the call fails with a message in RETURN rather than a hard error, and unless that message is surfaced, the job reports green while invoices stay blocked
  • Attempting release on an invoice that already has a follow-on document, such as a credit memo referencing it, where the block cannot be cleared until that dependency is resolved

Whose problem this is

Functional MM invoice verification consultants own the tolerance configuration and the list of valid block reasons, and are the ones who can say whether a given invoice should even be releasable through this path. Developers own the calling program: commit placement, loop structure, and RETURN parsing. When a release job reports success but invoices stay blocked, the evidence needed is the RETURN table contents per invoice plus confirmation of whether a commit call followed the BAPI in that run.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-bapis/bapi-incominginvoice-releaseERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.