Intercompany FX Hedging: How to Automate It, Step by Step
Every group has that one intercompany balance nobody worries about. It eliminates on consolidation, so why would it matter?
Then month end arrives, the subsidiary revalues it, and an FX loss shows up in the group P&L. Nobody traded anything. Nobody lost a customer. The loss is still there.
This article walks through why that happens and how to take the process from “someone builds a spreadsheet on day two” to something that runs on its own. If you want to try it on your own numbers, there is a free Intercompany FX Netting tool at the end.
Why intercompany FX doesn’t disappear
Take a simple case. DE GmbH, functional currency EUR, has a USD 2m receivable from its sister company US Inc.
On consolidation, the receivable and the payable cancel each other out. The FX result does not. DE GmbH revalues its USD receivable every month, and that gain or loss stays in the consolidated P&L.
This is not an accounting quirk someone forgot to fix. The IFRS Interpretations Committee confirmed it again in April 2026: under IAS 21, the intragroup balance creates the exchange difference, and consolidation removes the balance but not the difference.
There is one exception worth knowing. Long term loans that form part of the net investment in a foreign operation go through other comprehensive income instead. Everything else hits profit or loss.
What the manual process usually looks like
Day one after month end, someone exports open intercompany items from the ERP. Or from three ERPs, because the US subsidiary was acquired and never migrated.
Day two, the spreadsheet grows. Emails go out asking why entity A says it is owed €500k and entity B says it owes €480k. Somebody answers on day four.
By the time the hedge is traded, the balances have moved, half the numbers are stale, and the 47 tab Excel file is, once again, the real enterprise software.
The automated process in six steps
1. One extract, one cut off
Pull open intercompany receivables and payables from every entity at the same moment. Entity, functional currency, counterparty, invoice currency, amount, due date.
The cut off matters more than the format. If one ERP extracts at 18:00 and another at midnight, your two sides will never match.
2. Reconcile both sides before you hedge
Every receivable should have a payable of exactly the same amount on the other side. Check that automatically and stop when it fails.
This is the step most automations skip, and it is the one that hurts most. Hedge a mismatch and you hedge a number that doesn’t exist.
3. Find who actually carries the risk
Exposure sits only with the entity whose functional currency differs from the invoice currency. In our example, DE GmbH holds USD, so it has the exposure. US Inc owes USD in its own currency and feels nothing.
That single rule, applied line by line, turns a list of balances into a list of exposures.
4. Net across the group
Exposures in the same currency pair offset each other. If DE GmbH is long USD against EUR and US Inc is long EUR against USD, part of the risk cancels before you call a bank.
In the example dataset in the tool, netting removes 63% of the EUR/USD exposure. That is 63% of the trade you don’t need to execute, settle or account for.
5. Turn the policy into rules
Your hedging policy probably already says the important things. Write them as rules the process can apply:
- Hedge ratio: for example, 80% of the net exposure.
- Minimum trade size: below it, leave the position open. A €40k forward costs more in admin than it saves.
- Eligible currencies: some currencies cannot be traded freely and need a different instrument, or an explicit decision to stay open.
- Tenor: match the forward to the expected settlement date, not to the end of the month.
6. Execute and book both legs
In a treasury centre model, the centre deals an internal forward with each entity for that entity’s own exposure, then trades only the net with the bank.
Automation here means three outputs from the same calculation: the external deal for your TMS or trading platform, the internal deals for each entity, and the accounting entries for both. If any of the three is typed by hand, that is where the next error will come from.
How you know it works
Look at next month’s revaluation. If the process works, each entity’s FX result on intercompany balances should sit close to zero, give or take the unhedged portion.
If it doesn’t, the cause is almost always one of these:
- Invoices booked after the cut off and never picked up.
- A manual override that never made it back into the system.
- One entity on a different ERP, extracting on a different schedule.
- Internal deals booked in one entity but not the other.
None of these is an FX problem. They are data and process problems that show up as FX results.
Try it on your own numbers
I built a small Intercompany FX Netting tool that covers steps 2 to 5. Paste your balances in, set your hedge ratio and minimum trade size, and it shows which pairs don’t match, who carries the risk, the group net per currency pair and a suggested hedge.
It runs in your browser and nothing is uploaded. The example data includes one deliberate mismatch, because real data always has at least one.
Intercompany FX is rarely hard to hedge. It is hard to know what to hedge.