Automating Intercompany Eliminations with ChatGPT
I used to joke that intercompany eliminations were the Bermuda Triangle of consolidation.
Everything went in — invoices, transfers, equity movements — and nothing came out clean.
Month-end would arrive, and I’d sit there at 10:30 p.m. staring at mismatched balances, praying that NetSuite’s eliminations report wasn’t lying to me. If you’ve ever tried to reconcile dozens of entities across currencies, you know the feeling. It’s like playing whack-a-mole: eliminate one mismatch, and three more pop up.
The worst part? By the time I’d get it all tied out, the executives had already lost confidence in the numbers. The narrative became: “Finance slows down the close.” And once that label sticks, it’s hard to shake.
Why Intercompany Eliminations Matter
If you’re in the trenches of consolidations, you know eliminations aren’t optional.
- They make sure revenues and expenses aren’t inflated by internal activity.
- They protect executive trust and audit readiness.
- They prevent your CFO from walking into a board meeting with misstated EBITDA.
Skip them, and you risk misstated financials, blown deadlines, and credibility that takes quarters to rebuild.
It reminds me of watching a 90s sitcom rerun where the laugh track cues you to laugh at the wrong moment. The timing is off, the humor feels forced, and suddenly the whole scene collapses. That’s what bad eliminations do to financials: the story breaks down.
The ChatGPT Breakthrough
Here’s where my work journal turns from weary to useful.
Until recently, I’d brute-force my eliminations in Excel. I’d export trial balances from NetSuite, SAP, or Workday, dump them into tabs, and then line them up with VLOOKUPs and SUMIFS. It worked… until it didn’t.
Then I tested ChatGPT’s latest table-handling capabilities. And for the first time, I stopped dreading eliminations.
The trick wasn’t letting ChatGPT “do it all.” It was structuring my prompts so ChatGPT worked like a junior analyst I could trust — but only after I built guardrails.
Step 1: Standardize the Input
Here’s what I told ChatGPT:
“You are my accounting analyst. You will always structure intercompany trial balance exports into the following columns: Entity, Counterparty, Account, Amount, Currency. Keep order consistent. Use Entity-Counterparty pairs as unique keys.”
Why it mattered: consistency. My biggest mistake in early attempts was feeding ChatGPT raw ERP exports with mixed headers. Some had “Subsidiary” instead of “Entity.” Some dropped “Currency” entirely. ChatGPT’s results shifted every time.
The fix was to force column order and naming conventions upfront. That’s the only way to get repeatable results.
Immediate win: ChatGPT now gives me tables that tie out column-for-column across entities.
Step 2: Match and Flag Exceptions
I then prompted ChatGPT:
“Match intercompany balances by Entity and Counterparty. Show pairs where amounts do not net to zero. Add a ‘Difference’ column.”
Inline Excel formula I used for validation:
=SUMIFS(Amount,Entity,"US",Counterparty,"UK") + SUMIFS(Amount,Entity,"UK",Counterparty,"US")
Why it mattered: this formula cross-footed ChatGPT’s output. If ChatGPT showed a $2,000 mismatch, I could run this SUMIFS and confirm.
Mistake I’ve seen: skipping validation because “ChatGPT already did the work.” That’s how you end up explaining to auditors why intercompany balances are magically $0 when they aren’t.
Step 3: Generate Elimination Journal Entries
The real magic came here. I asked:
“For each mismatch, generate elimination journal entries in the format: Debit [Entity]-[Account], Credit [Counterparty]-[Account]. Balance currency must default to USD. Show journal lines in table format.”
ChatGPT broke once — it netted differences but assigned wrong accounts. I caught it by shadow-reconciling against the ERP elimination module. The key is not trusting ChatGPT with account mapping unless you explicitly define it.
So I adjusted my prompt:
“Always map revenue accounts to Intercompany Revenue Clearing and expense accounts to Intercompany Expense Clearing.”
That small addition fixed the mapping issue.
Step 4: Validate with a Shadow Reconciliation
Before posting eliminations, I always run a shadow rec. My framework looks like this:
The 4-Check Reconciliation Framework:
- Cross-foot totals by Entity-Counterparty.
- Currency check to ensure mismatches aren’t just FX.
- Account mapping review for journal accuracy.
- ERP tie-out against NetSuite’s or SAP’s built-in eliminations.
Screenshot-worthy, and yes — I’ve pinned this framework in my team’s Slack.
Secret ChatGPT Trick
Here’s the trick nobody’s using yet: style instructions.
When I add “Always output eliminations in CSV format, comma-delimited, with no extra text,” ChatGPT gives me clean files I can drop directly into NetSuite’s CSV Import tool.
That saves me hours of reformatting. No more cutting, pasting, or removing rogue headers. Just upload and go.
A Personal Lesson
One cycle, I let ChatGPT run wild without validation. The output looked clean, so I trusted it. Two days later, audit flagged that one entity’s eliminations didn’t tie out.
That moment taught me: ChatGPT isn’t a replacement. It’s a multiplier. But only if you set constraints, validate outputs, and use shadow reconciliations as your safety net.
Universal Artifact
Here’s what you can steal right now:
Checklist for Intercompany Eliminations with ChatGPT:
- Standardize columns: Entity, Counterparty, Account, Amount, Currency.
- Match and flag mismatches.
- Generate eliminations with predefined account mappings.
- Validate with the 4-Check Reconciliation Framework.
Formula to Test Today:=SUMIFS(Amount,Entity,"US",Counterparty,"UK") + SUMIFS(Amount,Entity,"UK",Counterparty,"US")
ChatGPT Prompt to Pin in Slack:
“You are my accounting analyst. Always structure intercompany trial balances into Entity, Counterparty, Account, Amount, Currency. Match balances by Entity-Counterparty. Flag mismatches. Generate eliminations with account mappings: revenue → Intercompany Revenue Clearing, expenses → Intercompany Expense Clearing. Output in CSV format with no extra text.”
Closing Thought
Every month-end close teaches me the same thing:
The danger isn’t the mismatch itself. It’s the false sense of security when we assume the system, or ChatGPT, “got it right.”
The only question is — how many more close cycles before this turns into a fire drill?
P.S. If there are specific topics you want me to discuss please leave them in the comments.





Curious how others are handling eliminations today — are you still brute-forcing in Excel, leaning on ERP modules, or testing AI prompts? What’s worked (or backfired) for you?