BAPI_ACC_INVOICE_RECEIPT_POST — Posting invoice receipts into FI via BAPI
BAPI_ACC_INVOICE_RECEIPT_POST creates an FI accounting document that represents an invoice receipt, mirroring the postings normally generated by Logistics Invoice Verification. It is used when an external or non-standard process needs to post the vendor, G/L and tax lines directly into accounting without running MIRO, and it does not commit the database on its own — the caller must trigger the commit explicitly after checking RETURN.
Covers BAPI_ACC_INVOICE_RECEIPT_POST, one of the accounting-interface family of BAPIs used to post invoice receipt documents into FI from outside the normal Logistics Invoice Verification flow. Focuses on the parameters that carry header, vendor, G/L and tax data, the commit sequence, and the RETURN-table mistakes that cause silent failures or duplicate postings in integration scenarios.
Published 16 Sept 2026· 1,050 words
What it does
BAPI_ACC_INVOICE_RECEIPT_POST posts an accounting document representing an invoice receipt against a vendor, mirroring the FI side of what Logistics Invoice Verification produces when an invoice is entered against a purchase order or goods receipt. It exists for integration scenarios where the invoice originates outside the standard MM invoice-verification path — external billing systems, industry components, or custom interfaces that need to book the vendor liability, offsetting G/L accounts and tax lines straight into accounting without stepping through MIRO or MIR7. The object it creates is a normal FI document, subject to the same posting period, tolerance and account-determination rules as a document posted through the transaction it stands in for. It does not itself touch the purchase order history or GR/IR clearing account logic unless the calling program supplies the matching G/L or offsetting entries.
Important parameters
- DOCUMENTHEADER - company code, posting date, document date, document type and header text for the accounting document being created.
- ACCOUNTGL - the G/L account lines: account number, cost object assignments, and item text for the non-vendor side of the posting.
- ACCOUNTPAYABLE - the vendor line item: vendor account, payment terms data, and reference fields that identify the invoice on the vendor account.
- ACCOUNTTAX - tax line data where the invoice carries input tax that must post alongside the vendor and G/L lines.
- CURRENCYAMOUNT - amount and currency for every line referenced in the G/L, vendor and tax tables, matched by item number.
- RETURN - the message table returned by the call; the only reliable indicator of whether the document was created or rejected.
Commit behaviour
Like the rest of the accounting-interface BAPI family, this call does not commit the database update on its own. It performs the checks and, if successful, hands the document to the update task, but the change only becomes permanent when the caller invokes BAPI_TRANSACTION_COMMIT afterward. Skip that call and the document is either rolled back at the end of the logical unit of work or left pending inside a dialog transaction that never gets flushed. In batch interfaces this is the single most common cause of postings that appear to succeed — RETURN carries a document number — but never show up in the vendor account or in FBL1N, because the commit step was never reached or was skipped after an unrelated error further down the program.
Return handling
RETURN is a table, not a flag, and every entry has to be inspected by message type, not just counted. A successful posting normally returns an entry of type S carrying the generated document number in the message variables; interfaces that only check whether RETURN is initial will treat a rejected posting as successful because RETURN is never empty on error either — it is full of E and A entries describing exactly why the document was refused. The reverse mistake is just as common: code that greps for any entry of type E and aborts, without noticing that an earlier W entry (a tolerance warning, a tax adjustment) was informational and the document actually posted. The safe pattern is to scan for message type E or A across the whole table before deciding the call failed, extract the document number only from a genuine S entry, and log the full table rather than the first entry, because the root cause of a rejection is frequently the second or third message, not the first.
ECC vs S/4HANA
BAPI_ACC_INVOICE_RECEIPT_POST remains callable on S/4HANA and is not formally deprecated, but it sits in the same older accounting-interface family as BAPI_ACC_DOCUMENT_POST and is not the preferred entry point for new integrations. Where the requirement is a general FI posting rather than something that specifically has to look like an invoice receipt, BAPI_ACC_DOCUMENT_POST is the more common choice going forward. There is no confirmed released OData or API-Business-Hub replacement specific to this BAPI, so existing interfaces built on it continue to run unchanged, but new builds should evaluate the generic document-posting BAPI or a released API for the same outcome before reusing this one.
Common pitfalls
- Interfaces that retry on timeout without checking whether the prior call already posted end up with duplicate invoice receipts on the vendor account.
- Posting period closed for the company code passed in DOCUMENTHEADER produces a rejection that looks like a technical error but is a master-data/period-control issue.
- Currency amount rows that do not sum to zero across debit and credit, or that are missing for a line referenced in ACCOUNTGL or ACCOUNTPAYABLE, fail with an unbalanced-document message that is easy to misread as an authorization problem.
- Withholding tax or extended tax configuration on the vendor that the calling program does not populate causes silent rejection or an amount mismatch discovered only during vendor reconciliation.
- Because the call bypasses MM invoice verification, it does not automatically clear GR/IR; interfaces that assume it behaves like MIRO end up with GR/IR accounts that never clear.
Whose problem this is
The interface developer owns the mapping of vendor, G/L, tax and currency data into the correct structures and the commit sequence around the call. The FI functional consultant owns account determination, tax procedure, tolerance groups and posting period control that decide whether the data the developer sends is actually postable — a RETURN rejection needs the full message text and company code before either side can act on it.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-bapis/bapi-acc-invoice-receipt-postERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.