SAP In-House Cash (IHC)
SAP In-House Cash runs an internal bank — bank areas, IHC payment orders, the IHC_DB_PN tables, the BAdIs, and the newer In-House Banking apps, verified.
Payments 5 of 5 see the reading order →
Reviewed and fact-checked
On this page
SAP In-House Cash (IHC) is SAP's module for running an internal bank — maintaining internal accounts for group subsidiaries and processing payments between and on behalf of them, so the group banks internally instead of externally. It's the SAP implementation of the in-house bank concept this site covers generally, and it's where a centralized treasury operating model becomes concrete inside SAP.
SAP's own documentation states the payoff in one sentence, and it's the sentence to quote in a business case: In-House Cash is used for processing internal and external payment transactions within a group, and by using it "you can reduce the number of external bank accounts you hold and the volume of foreign payments you have to make." That is the whole thesis. The rest of this page is the named objects underneath it — bank areas, payment orders, tables, BAdIs, archiving objects and the newer In-House Banking apps — verified against SAP Help rather than reproduced from the scraped lists this topic attracts.
What it is, in SAP's own structure
The main component is the in-house cash centre: SAP describes it as "basically a virtual internal bank where subsidiaries hold current accounts". Current account processing depicts the receivables and payables between the centre and its affiliated companies, calculates turnover and balances, and forwards that information in summarised form to Financial Accounting. That last clause matters more than it looks: the general ledger sees summarised current-account movement, not one FI document per internal payment, which is why the intercompany reconciliation design has to be deliberate rather than emergent.
Four transaction categories are documented, and getting your scope statement to name them explicitly saves a lot of later argument:
- Internal payments — between group entities, across internal accounts
- Central payments — the centre pays externally on a subsidiary's behalf
- Local payments — settled locally between clearing partners
- Central incoming payments — collections arriving centrally and credited internally
Payment orders don't only arrive by hand. SAP documents three automatic origins — an inbound IDoc from a subsidiary system, an external bank statement, or Treasury Management — and tells you where to look when you can't tell which: the Input Channel field in the payment order's management data.
You can run more than one centre. SAP is explicit that you "can decide to implement one or more in-house cash centres within your group of companies", which is the usual answer to regional-treasury structures.
The organisational object: the bank area
If one concept is worth learning before you open the IMG, it's this one, because IHC does not invent its own account infrastructure — it borrows Bank Customer Accounts (BCA):
| Object | What SAP's documentation says |
|---|---|
| Bank area | Organisational unit of Bank Customer Accounts that allows independent account management; account numbers must be unique within it |
| Bank area count | "The number of bank areas that you define corresponds to the number of cash centres you have" |
| Bank key | Attached to the bank area; with the account number it identifies the internal bank in payment transactions |
| Company code | Exactly one company code per bank area; a company code may have several bank areas |
| FI system | Different financial accounting systems can be assigned to different bank areas |
The bank-area Customizing sits in BCA, not in IHC, and SAP names what you set there: the bank key, the check digit method controlling account-number issuing, the daily posting cut-off time, the exchange rate category, and the country, language and holiday calendar. The holiday calendar is the one that quietly breaks value dating in month one.
One operational consequence worth reading twice: when a feeder system transfers payment items, the bank area is determined from the bank key. If a payment item is forwarded to the system by BAPI and the bank area cannot be determined, SAP documents that the BAPI terminates with a system-error return code and no items are processed — a whole-batch failure, not a per-item one.
Configuration: where the settings actually live
| Path | What it configures |
|---|---|
| IMG → Financial Supply Chain Management → In-House Cash | The module's own Customizing |
| Customizing → Account Management → Payment Processes in In-House Cash → Define Transaction Types | The transaction types IHC payment orders carry |
| … → Outgoing Payment Orders → Instructions for FI → Define Instruction Codes for FI | Instructions forwarded with outgoing payment orders |
| IMG → FSCM → Advanced Payment Management → External Interfaces → Posting Interfaces → In-House Cash (IHC) | The APM-to-IHC posting interface, when APM routes payments |
| SAP Easy Access → Accounting → Financial Supply Chain Management → In-House Cash | Where the functions are on the menu |
That last row is not filler. SAP Help documents this module by menu path and Customizing node, not by transaction code — which is precisely why the tcode-dump sites are so confident and so unreliable here. See the exclusions at the end.
The tables, and how SAP names them
The treasury tables reference deliberately excluded In-House Cash, on the grounds that it's a different component with its own family and mixing them is how those 400-row dumps became unusable. Here is that family, taken from the place SAP actually publishes it — the documentation for archiving object IHC_ARC:
| Table | SAP's description |
|---|---|
IHC_DB_PN | Source document for incoming payment orders |
IHC_DB_PN_BP | Address data of business partners involved in the payment order |
IHC_DB_PN_STATUS | IHC payment order status |
IHC_DB_PN_RINFO | Reference / note-to-payee information |
IHC_DB_PN_CONT | Container fields in the payment order |
IHC_DB_PN_ENQ | Lock table for the payment order |
The same archiving run also touches the generic application-log and change-document tables — BALDAT, BALHDR, BAL_INDX, CDHDR, CDCLS, CDPOS_STR, CDPOS_UID — which tells you something useful about IHC's audit trail: the change history is standard change documents, so it is reportable with the tools you already have.
Archiving is where the current-account side becomes visible, because it has its own object set:
| Archiving object | What it archives |
|---|---|
IHC_ARC | In-House Cash payment orders |
FIBA_ORDER | Payment orders (when Bank Current Accounts are used) |
FIBA_ITEM | Payment items |
FIBA_PECAL | Account balancing |
FIBA_INCAL | Account balancing details |
FIBA_CFBAL | Balances carried forward |
FIBA_TOTAL | Value date transaction figures |
FIBA_BKST | Bank statements |
Three details from the IHC_ARC documentation that belong in a retention design rather than being discovered during an audit: payment orders can only be archived when their final status is Final, Posted, Deleted or Reversed; ILM-based archiving requires them to be blocked by program IHC_APPL_BLOCK_PN with business function FIN_IHC_ILM active; and the ILM condition fields are the IHC bank area and the IHC payment order status, with the retention period counted from the last-changed date (or the creation date, if the order was never processed after creation).
The extension points
Custom requirements in IHC land on a small, documented set of BAdIs. Knowing them turns "can we do X" from a research project into a lookup:
| BAdI | What it overrides |
|---|---|
IHC_BADI_BCA_ITEMS | Adds to the posting data when current-account payment items are generated |
IHC_BADI_CUSTOMIZING | Overrides Customizing, including whether dual control is active |
IHC_BADI_GUI_CHECKS | Your own checks, selections and value help for manual payment-order processing |
IHC_BADI_IDOC_2_PN | Transaction type, execution date and value date, on an inbound IDoc |
IHC_BADI_PN_2_IDOC | An outbound IDoc, before it is sent |
IHC_BADI_POST_BEHAV | Posting behaviour for IHC payment orders |
IHC_BADI_XBS_TRNS | Transaction type determination for central incoming payments, per bank statement item |
IHC_BADI_IDOC_2_PN and IHC_BADI_XBS_TRNS are the two that show up in almost every implementation, because both sit exactly where a real-world file meets an idealised configuration table.
Where the Transaction Manager plugs in
Treasury deals settle through IHC by a documented route rather than by accident. SAP provides the BAdI TPM_EXT_PAYMENT_TRPR for connecting payment programs to the Transaction Manager, and ships an example implementation named HC_CFM_ADAPTOR, delivered inactive, that realises the connection to In-House Cash. SAP's own recommendation is not to activate the example directly but to create your own implementation that calls its methods — and the method that decides per payment is IS_RELEVANT: return X and the payment goes through In-House Cash, otherwise it is processed as a payment order.
Two things follow. First, treasury payments to IHC run on payment requests, not customer-account postings — SAP states that if you want to process a payment using In-House Cash, payment is done using payment requests, which is the same F111 world treasury settlements already live in. Second, the generated payment orders are visible from the treasury side, in the posting journal and in the transaction's cash flow, so the audit trail from deal to internal account is a navigable one.
Payments on behalf of, and the APM boundary
The modern payments-on-behalf-of flow runs through Advanced Payment Management, and SAP documents the mechanics precisely enough to design against. The subsidiary's payment run posts to an in-house bank clearing account per its payment method setup, and generates at least two IDocs — PEXR2003 and PAYEXT — which are sent to headquarters' APM. There they become an APM payment order with one originator item and the recipient items; enrichment and validation, then routing and clearing, determine which house bank pays what, and additional outgoing orders are created per bank with the clearing item on that bank's clearing account.
One configuration fact worth knowing before someone promises it in a workshop: payment on behalf of inside the same company code is deactivated in the standard system and can be activated only via a BAdI in Routing Control. This is the SAP-side detail behind the payment factory versus in-house bank distinction, and the external leg still leaves through Bank Communication Management.
The other In-House thing: In-House Banking (IHB)
This is the trap in the topic, and it is worth being pedantic about because the two names differ by one word. In-House Banking (IHB) is not a rename of In-House Cash. SAP documents it as "an embedded capability of advanced payment management" for SAP S/4HANA Cloud for advanced payment management, usable only within APM, in which subsidiaries open internal bank accounts that behave, from the subsidiary's side, like house bank accounts.
It is Fiori-first, and unlike classic IHC it has app IDs you can verify:
| App | App ID |
|---|---|
| Manage In-House Bank Accounts | F5942 |
| Upload In-House Bank Accounts | F6038 |
| Manage In-House Bank Account Templates | F6039 |
| Manage In-House Bank Limits | F5940 |
| Manage In-House Bank Conditions | F5941 |
| Manage In-House Bank Account Workflows | F6131 |
| Manage In-House Bank Fees | F6335 |
| Manage In-House Bank End of Day | F6338 |
| Manage In-House Bank Payment Items | F6339 |
| Display In-House Bank Account Overdrafts | F6340 |
| Manage In-House Bank Account Balances | F6341 |
| Manage In-House Bank Interest Compensation | F6652 |
| Manage In-House Bank Application Jobs | F6653 |
Its own archiving objects follow the /PF1/ namespace. /PF1/ACCT (accounts) and /PF1/ACBL (account balancing data) each have their own SAP Help page, cited below; the siblings listed alongside them in that section of SAP's documentation cover account limits, financial conditions, statements and the destruction of end-of-day logs. Read the section rather than assuming an object name — this namespace is where SAP puts the in-house-banking counterparts of the IHC objects above. Two capability notes from SAP's page that decide designs: conditions resolve in a fixed order — single, then group, then bank area level — and the electronic bank statement produced by in-house banking is, in SAP's wording, a "CAM.053 message", with "further formats not yet available". If your subsidiaries need MT940 from the internal bank, that is a gap to plan around, not a setting to find.
The prize, and the catch
The prize is the in-house bank prize, and now you can quantify it from SAP's own framing: fewer external accounts to hold, fewer foreign payments to make, cash concentrated centrally, internal settlement instead of external payments. The catch is the same one that shadows all of this — intercompany accounting. Every internal transaction and on-behalf-of payment generates intercompany balances that have to be tracked, reconciled and settled, with interest at proper rates and the transfer-pricing and tax implications handled. IHC gives you the internal bank; it also gives you an internal book to run with real rigour.
What usually goes wrong
- Underestimating intercompany accounting. The internal accounts generate intercompany balances that must be tracked, reconciled and settled — and remember FI receives summarised current-account movement, not a document per internal payment. Design this up front, not after go-live.
- Bank areas designed as an afterthought. One company code per bank area is a hard constraint, and the bank-area count is your cash-centre count. Getting this wrong is a re-implementation, not a config change.
- Treating it as pure technology. IHC is an operating-model and accounting change as much as a system one; configure the module and neglect the process, and adoption and reconciliation suffer.
- Confusing IHC, the payment factory and In-House Banking. Three different things, two of which share a name. Scoping one when you needed another is how the centralization ends up half-built.
- Ignoring the tax/transfer-pricing angle. Intercompany lending and on-behalf-of activity carry real tax and transfer-pricing implications that treasury can't wave away.
What I left out, on purpose
- IHC transaction codes. This is the deliberate gap, and the honest one. SAP's In-House Cash documentation is written around menu paths and Customizing nodes; I could not verify a set of IHC GUI transaction codes in SAP Help, so none are printed here. The codes circulating on dump sites may well be right — but "may well be" is not this site's standard. Where you do need archiving administration, the objects above are called through
SARA, andAOBJshows which archiving classes an object triggers; both are documented. - The BCA current-account tables. In-House Cash's payment-order tables are documented (above); the Bank Customer Accounts persistence beneath the current accounts is not, in anything I could verify. The archiving objects are the sanctioned handle on that data instead.
- In-House Banking Fiori apps without a printed app ID. The In-House Banking Dashboard is documented as an app but its page carries no app ID, so it appears here without one rather than with a guessed one.
- Release and edition availability. Which of classic IHC and In-House Banking you actually get depends on your release and deployment model, and stating a version from memory is how references go stale. Check your release notes.
Use IHC as the internal-banking backbone of a centralized SAP treasury — paired with a payment factory for external payments — and design the intercompany accounting as carefully as the cash. It's a powerful piece of the centralization story, and, like every part of that story, it's only as clean as the intercompany plumbing beneath it.
See also what is an in-house bank and what is a payment factory.
Primary sources
Named objects verified against SAP S/4HANA 2025 FPS01 on-premise documentation. IHC's GUI transaction codes are deliberately absent: SAP Help documents this module by menu path and Customizing node rather than by transaction code, and I would not print a code I could not verify. In-House Banking (IHB) is a separate, newer capability of Advanced Payment Management with its own apps — check which of the two your release and edition actually gives you.
- SAP Help — In-House Cash (SAP S/4HANA) — accessed 2026-09-03
- SAP Help — Bank Area (In-House Cash / Bank Customer Accounts) — accessed 2026-09-03
- SAP Help — IHC Payment Order (SAP S/4HANA) — accessed 2026-09-03
- SAP Help — Archiving In-House Cash Payment Orders with IHC_ARC — accessed 2026-09-03
- SAP Help — Data Management for In-House Cash (IHC) — accessed 2026-09-03
- SAP Help — Business Add-Ins (BAdIs) for SAP In-House Cash — accessed 2026-09-03
- SAP Help — Connection of Transaction Manager to In-House Cash — accessed 2026-09-03
- SAP Help — Payment 'On Behalf Of' (In-House Cash), Advanced Payment Management — accessed 2026-09-03
- SAP Help — Configuring In-House Cash (IHC) for Advanced Payment Management — accessed 2026-09-03
- SAP Help — In-House Banking (SAP S/4HANA Cloud for Advanced Payment Management) — accessed 2026-09-03
- SAP Help — Manage In-House Bank Accounts (app F5942) — accessed 2026-09-03
- SAP Help — Archiving In-House Bank Accounts Using /PF1/ACCT — accessed 2026-09-03
Frequently asked questions
(5)
What is SAP In-House Cash (IHC)?
SAP In-House Cash (IHC) is the SAP module for running an in-house bank — a central function that maintains internal accounts for the group's subsidiaries and processes payments between them and on their behalf. SAP's own documentation states the purpose plainly: to reduce the number of external bank accounts you hold and the volume of foreign payments you have to make. The main component is the in-house cash centre, described as a virtual internal bank where subsidiaries hold current accounts; it calculates the turnover and balances of those accounts and forwards them in summarised form to Financial Accounting.
How does SAP In-House Cash work?
IHC acts as a virtual bank inside SAP. It maintains internal current accounts for participating subsidiaries, and processes four documented transaction categories: internal payments, central payments, local payments and central incoming payments. Subsidiaries' positions are held as internal account balances (intercompany balances), interest can be applied through conditions, and statements are produced for the internal accounts much as an external bank would. Payment orders reach the in-house cash centre automatically from an inbound IDoc sent by a subsidiary's payment run, from an external bank statement, or from Treasury Management.
What is a bank area in SAP In-House Cash?
A bank area is the organisational unit that In-House Cash borrows from Bank Customer Accounts, and it is the object that allows independent account management: account numbers must be unique within a bank area. SAP's documentation states that the number of bank areas you define corresponds to the number of in-house cash centres you have. You must assign exactly one company code to a bank area, though one company code can carry several bank areas, and the bank key attached to the bank area is what identifies the internal bank in payment transactions.
Which tables store SAP In-House Cash payment orders?
SAP names them in the documentation for archiving object IHC_ARC, which archives payment orders from IHC_DB_PN (source document for incoming payment orders), IHC_DB_PN_BP (address data of the business partners involved), IHC_DB_PN_STATUS (payment order status), IHC_DB_PN_RINFO (reference and note-to-payee information), IHC_DB_PN_CONT (container fields) and IHC_DB_PN_ENQ (the lock table). The current-account side has its own archiving objects instead — FIBA_ORDER, FIBA_ITEM, FIBA_PECAL, FIBA_INCAL, FIBA_CFBAL, FIBA_TOTAL and FIBA_BKST.
What is the difference between In-House Cash and a payment factory?
In-House Cash and a payment factory are related and often implemented together. In-House Cash is the internal-bank capability — maintaining internal accounts and processing internal settlement and on-behalf-of transactions. A payment factory is the centralization of external payment execution. IHC provides the internal-banking backbone (the internal accounts and intercompany balances) that payments-on-behalf-of relies on, while the payment factory centralizes how payments actually reach the banks. In an SAP landscape they work together to centralize both the internal banking and the external payments.