How-toSAP S/4HANAMM / SD Intercompany

SAP S/4HANA Intercompany Process Setup Guide: STO, Pricing, Billing and Reconciliation

Question
sap s4hana intercompany process set up guide

Also searched as

  • intercompany stock transfer order S/4HANA
  • sap intercompany billing setup
  • intercompany STO configuration
  • sap intercompany reconciliation

Short answer

The intercompany stock transfer flow in S/4HANA runs from a stock transport order (ME21N) in the receiving company, through a delivery (VL10B) and goods issue from the supplying plant, to goods receipt, intercompany billing (VF01 with billing type IV), and an incoming invoice in the receiving company. Setup needs plants, customer and vendor assignments, delivery type, intercompany pricing and account determination.

Applies to: SAP S/4HANA on-premise (1909 and later); steps for ECC are similar, with Business Partner replacing separate customer and vendor masters in S/4HANA

How to set up the intercompany process

  1. 1Create the plants, and assign each to its own company code (OX18). The supplying and receiving plants belong to different company codes.
  2. 2Maintain the receiving plant as a customer and the supplying plant as a vendor via Business Partner (BP), and enter these numbers in the plant details so SAP finds them.
  3. 3Assign a delivery type and checking rule to the document type and supplying plant (OMGN), typically delivery type NL for intercompany STO.
  4. 4Define a supplying plant for the receiving plant in the purchasing info or the material's procurement settings, so STO and MRP can find the source.
  5. 5Set the intercompany billing: billing type IV, copy control from the delivery, and an intercompany price condition (commonly PI01 for the price per item or IV01 for a percentage).
  6. 6Create account determination for the intercompany billing and for the inventory transfer, so the sales and COGS-type postings are separated correctly.
  7. 7Test the whole cycle: ME21N > VL10B > VL02N (goods issue) > MIGO (goods receipt) > VF01 (IV) > MIRO, then compare balances in both company codes.

Stock transfer versus intercompany sales

A stock transport order (document type UB for intra-company, and a type configured for intercompany use such as NB with supplying plant) moves stock between plants. Within one company code, it moves stock only. Between company codes, the stock movement must be paired with a billing step because legal entities exchange value.

There are two broad designs. In the STO route, the receiving side raises a PO-based transport order and the supplier ships and bills. In the intercompany sales route, the receiving company places an ordinary sales order through a customer record. Both use billing type IV for intercompany billing.

Pricing and the intercompany invoice

Intercompany pricing is a separate price. It is usually the transfer price, not the external sales price. PI01 uses a price per item from a condition record, and IV01 applies a percentage to the cost or sales price. The price is the base for the billing document IV.

The IV billing document creates a receivable in the supplying company and, after the incoming invoice is posted via MIRO, a payable in the receiving company. Both entries are intercompany balances to be eliminated at consolidation.

Transfer pricing is a tax and legal topic. Agree rates with finance and tax before you configure condition records.

Reconciliation

Intercompany receivables and payables will never match unless goods issue, goods receipt and invoice are posted in the same period, so planned timing matters. Use a clearing process or an intercompany reconciliation app (the Fiori apps differ by release) to match open items.

Run a simple stock in transit check, looking at delivered but not received quantities, to see where the process is stuck.

-- Stock in transit: STO items issued but not fully received
SELECT EBELN, EBELP, MATNR, WERKS, MENGE, WEMNG
FROM EKPO WHERE EBELN IN (SELECT EBELN FROM EKKO WHERE BSART IN ('UB','NB'))
AND WEMNG < MENGE

Try it here, free

SAP Intercompany Reconciliation Worksheet

Open full tool

Pairwise intercompany balance comparison with difference, percent difference and reason tagging, ready for the close meeting.

Common pitfalls

  • !Putting both plants in the same company code and then wondering why no billing happens.
  • !Missing customer or vendor number on the plant, so the STO cannot determine the partner.
  • !Using the external sales price for intercompany billing without tax review.
  • !Posting goods issue and goods receipt in different periods, leaving large in-transit balances.
  • !Missing account determination for the new combination.

How an ERP-grounded AI assistant handles this

Finance IT teams use this to find intercompany documents that stopped between delivery, goods receipt and billing. Netray's ERPray can run this kind of lookup in plain language against your own SAP system, read-only by default, showing the query it ran and respecting SAP authorizations, with the model served on your own hardware when the system is on-prem. It explains and finds the data; it does not replace configuration decisions or post documents without human approval.

Frequently asked questions

What billing type does SAP use for intercompany billing?

The standard type is IV (intercompany billing), created from the delivery using copy control and an intercompany price condition. Your system may use a custom billing type derived from it.

Is a stock transport order enough for intercompany transfers?

Only if the plants are in the same company code. For different company codes you need the billing step so the legal entities record the sale and purchase, plus pricing and account determination.

What is PI01 in SAP pricing?

PI01 is the standard intercompany price condition type, a price per item maintained as a condition record. IV01 is the percentage variant used in intercompany billing.

Does S/4HANA change the setup?

The overall flow is the same as in ECC. The main differences are Business Partner for customer and vendor masters, the Universal Journal for postings, and new Fiori apps for monitoring and reconciliation.

Related

How-to

How to run intercompany transactions in NetSuite (OneWorld)

Enable the Intercompany Framework and Automated Intercompany Management features (Setup > Company > Enable Features > Company), then create an Intercompany Sales Order or Purchase Order between two subsidiaries in the same NetSuite account; NetSuite auto-generates the matching intercompany transaction on the counterparty subsidiary and posts the elimination journal entries during period close if Advanced Intercompany Journal Entries is also enabled.

Error fix

SAP VF04 Billing Due List Is Empty: Why Documents Do Not Appear

VF04 only lists documents that are billing relevant, not yet fully billed, not blocked, complete, and inside the selection dates you entered. When a delivery or order is missing, the cause is almost always one of: goods issue not posted, a billing block, an incompletion, wrong billing relevance on the item category, or a billing date outside the selection range.

Error fix

SAP Pricing Error: Condition Record Missing for PR00 in a Sales Order

The error means the pricing procedure expected a price condition such as PR00, found no valid record for the key, and the condition was flagged mandatory. Use the pricing analysis in the order item to see which access failed, then create the record with VK11, or fix the pricing procedure determination if the wrong procedure was selected.

Error fix

SAP M7 021: Deficit of SL Stock Quantity

M7 021 fires during a goods issue, delivery, or confirmation when SAP checks the unrestricted-use (SL) stock for the exact plant, storage location and batch combination and finds less than what you are trying to post out. Fix the entry (batch, storage location, quantity) first; only enable negative stock or downgrade the message to a warning if the business genuinely needs to post ahead of a receipt.

Error fix

SAP IDoc Status 51: Application Document Not Posted

Status 51 tells you the IDoc reached the application layer and failed to post, but the status text itself is not the error - the real cause sits in the status record's long text or the linked application log. Fix the underlying data or configuration, then reprocess the IDoc through BD87 rather than editing the status.

Error fix

SAP Short Dump TIME_OUT: Maximum Runtime Exceeded

A TIME_OUT runtime error means a dialog (or RFC) work process ran longer than the maximum allowed runtime, controlled by profile parameter rdisp/max_wprun_time (600 seconds by default). The fix is almost always to move the long-running work to background processing or tune the underlying program, not to raise the timeout.

AI for ERP

AI for SAP S/4HANA, Running On-Prem or in Your Private Cloud

Run AI on SAP S/4HANA without sending ERP data to a public API. On-prem and private-cloud architecture, CDS views, OData, and honest deployment trade-offs.

Stuck on SAP S/4HANA?

Talk to engineers who work inside SAP S/4HANA every week, and who build private AI that answers these questions from your own ERP data.

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

Guides

AI on your ERP

Integrations

Comparisons