FB70 — Post Customer Invoice in FI
FB70 is the one-screen ('enjoy') transaction for posting a customer invoice directly in Financial Accounting, debiting the customer reconciliation account and crediting revenue or other G/L accounts. It bypasses Sales and Distribution entirely, so it produces no billing document, no delivery reference and no SD pricing procedure. It is used when the invoice originates outside SD, or for correction and intercompany postings.
This page covers FB70, the direct-entry transaction for posting customer invoices in FI without going through SD billing. It focuses on the structural fact that trips up most consultants -- FB70 skips the sales document flow entirely -- and on the diagnostic categories behind reconciliation account, tax and document-splitting failures. It also covers what to check in BKPF and BSEG to prove a posting happened as expected.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,185 words
Purpose
FB70 posts a customer invoice straight into Financial Accounting: it debits the customer's reconciliation account and credits one or more G/L accounts entered manually on the same screen, with tax calculated if a tax code is supplied. It is the enjoy-transaction wrapper around the older FB01 general posting screen, with the posting keys for the customer debit (typically 01) and the offsetting credit already defaulted so the user only sees customer data, amount and G/L lines. The structural fact that explains most confusion: FB70 has no awareness of Sales and Distribution. There is no sales order, no delivery, no billing document, no pricing procedure and no output determination behind it. Anyone expecting revenue recognition, credit management updates driven by SD, or a billing document number to reference later will not find one, because none was created.
When it is used
FB70 is reached for when the receivable does not come out of a sales process: intercompany invoices, interest or penalty invoices, manual corrections to a customer balance, one-off invoices in a company code that has no SD implementation, or data conversion loads during a cutover. It is also common in support work to raise a small test invoice quickly without building an SD order. It sits alongside FB60 (vendor invoice) and FB75 (customer credit memo) as one of the three enjoy transactions for direct AR/AP postings. In an SD-integrated business process, the invoice should come from a billing document (VF01/VF02) instead, which posts to FI automatically through account determination; using FB70 there duplicates or bypasses that flow and breaks reconciliation between SD and FI.
How to use it in practice
- Call FB70, enter company code if prompted
- Enter customer account number, invoice date, posting date, document date and currency
- Enter the gross or net amount and, if net entry is not active, confirm the amount matches the sum of the G/L lines
- Enter tax code and let the system calculate tax, or enter tax manually if the code requires it
- Enter one or more G/L account lines for revenue or other offsetting postings, with cost center or profit center where the account requires it
- Check that the document balance shown at the bottom is zero
- Use Simulate to review the full line item list including tax and any automatically derived lines before posting
- Post the document and note the resulting document number
Key data objects
- BKPF - the document header: company code, document type, posting date, fiscal year, document number range
- BSEG - all line items for the document, including the customer debit line and every G/L credit line, with amount, tax code, cost center and profit center
- BSID - open item index for customer accounts, updated when the customer line is not yet cleared
- BSET - tax line detail when a tax code with amounts is used
- BSEC or the one-time customer fields on BSEG - populated only if the customer master used is a one-time (CPD) account
How to prove it in the data
Start in SE16 on BKPF filtered by company code and a date range, looking for the document type used for direct customer postings (commonly DR or a client-specific variant). Take the BELNR, BUKRS and GJAHR and pull the matching rows from BSEG. The customer line has KOART equal to D; check the KUNNR, DMBTR/WRBTR amount, and SHKZG (debit/credit indicator) match what was entered. Cross-check BSID for that customer and document number to confirm the item is still open, or its absence to confirm it has already cleared.
ECC vs S/4HANA
FB70 still exists and functions the same way on S/4HANA. The underlying posting now writes into the universal journal (ACDOCA) alongside the classic tables, and document splitting is active by default, which is why missing account assignments surface as splitting errors rather than silent postings. A Fiori app for creating supplier and customer invoices covers the same use case with a modern interface, but the tcode is not deprecated and remains the faster route for consultants who need to see posting keys and tax detail directly.
Common pitfalls and how to diagnose them
- Reconciliation account wrong or missing: the customer master for that company code either has no reconciliation account maintained or points to an account that does not exist in the chart of accounts for that ledger. Check the customer master company code segment before touching the posting itself.
- Tax code not calculating: jurisdiction code missing on the customer master or company code, or the tax code entered has no valid condition record for the posting date. Simulate the document first; if tax comes out zero unexpectedly, the tax code configuration is the place to look, not the posting.
- Document does not balance and posting is rejected: usually a rounding difference between the header amount and the sum of G/L lines when net vs gross entry settings are misunderstood. Recheck whether the field status group requires tax to be included in the header amount.
- Zero balance per dimension error on S/4: document splitting cannot derive a profit center or segment for one of the lines, usually because a G/L account used has no default account assignment and none was entered manually.
- Special G/L indicator confusion: a down payment or guarantee should not be posted through FB70 as a normal invoice; using the wrong transaction here corrupts the special G/L ledger and later clearing in F-28 or F-53 fails to match.
- Duplicate postings: FB70 has no built-in duplicate invoice check comparable to SD billing block logic, so the same invoice can be posted twice if a user retries after a timeout. Check BSEG for two documents with matching customer, amount and reference before assuming a system error.
Whose problem this is
Functional AR/FI territory. A good handover includes the document number, company code, the posting keys and tax code used, and whether the failure happened on entry, simulation or posting. ABAP gets involved only if a substitution, validation or BAdI is suspected of altering the posting; Basis is relevant only for authorization or number range lock issues.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/fb70ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.