Skip to content

Multi-Entity & Intercompany Reconciliation

Clients that operate as a group of related entities — a parent with subsidiaries, sister companies under a holding, or partial-ownership arrangements — need their period-end financials presented at both the standalone and consolidated levels. Kraal handles consolidation, intercompany elimination, and minority-interest treatment in the automated close workflow.

Entity setup

Every entity in a multi-entity client is registered with:

  • Display name and ERP company name
  • Default currency
  • Ownership percentage (parent → subsidiary)
  • Consolidation method (full / equity / cost — auto-resolved from ownership when not explicitly set)
  • Intercompany account configuration (receivable, payable, revenue, expense, distributions, investment, subsidiary equity)
  • Optional elimination policy for tolerance, in-transit window, and cross-currency handling

Manage entities under the client's accounting workspace; see Client Setup & Close Workflow for the broader setup steps.

Consolidation method by ownership

OwnershipMethodWhat it means at close
≥ 50%Full consolidationSubsidiary's full GL is merged into the consolidated pack; intercompany activity is eliminated; minority-interest (NCI) recorded for the unowned share when below 100%
20–49%Equity methodA single synthetic line "Equity in earnings of Subsidiary" appears on the parent's P&L; matching investment line on the BS; subsidiary's GL is not merged
< 20%Cost methodSubsidiary skipped from consolidation entirely; held at cost on the parent's BS

When the parent owns 100%, no NCI is recorded. Between 50% and 99%, Kraal posts the minority share to a Non-Controlling Interest line in both the P&L (deducting minority earnings) and the BS (equity section).

Intercompany elimination

When two related entities transact with each other, the consolidated result must not double-count revenue, expense, receivables, or payables. Kraal's intercompany engine matches counterpart pairs and emits elimination entries:

  • AR / AP pair — a receivable on Entity A and a payable on Entity B for the same intercompany transaction. Eliminate both.
  • Revenue / Expense pair — intercompany sales on A and intercompany purchases on B.
  • Distribution pair — a distribution received on the parent and a distribution declared on the sub.
  • Investment / Equity pair — parent's investment-in-sub account and the sub's subsidiary equity account.

Each pair produces a balanced elimination journal entry that reverses the inflated consolidated balance. Mismatched pairs (one side has a balance the other doesn't, or amounts differ) are flagged as imbalances requiring review before the consolidated pack can be released.

Matching modes

Kraal matches counterparts in three passes:

  1. One-to-one with paired-account hint — when each side declares the other as its paired account, even slight amount mismatches still match (with the difference reported)
  2. One-to-one by amount — same amount within configured tolerance
  3. Subset matching (N:1) — one receivable nets against multiple payables (or vice-versa). Useful when a single invoice nets against several smaller credits

You can disable subset matching per entity if the client prefers strict one-to-one only.

Tolerance and in-transit window

Two settings on the elimination policy address real-world matching needs:

  • Tolerance (default $0.01) — allows for cent-level rounding differences between the two sides of the same transaction
  • In-transit window (default off, configurable in days) — when a transaction is booked on one side just before period-end but the counterpart books it a few days into the next period, Kraal looks forward by the configured number of days when checking the counterpart side. Matched in-transit items are flagged so the reviewer can confirm the timing

When the parent's and subsidiary's currencies differ, Kraal normalizes both sides to the parent's reporting currency before comparing. If a period-end FX rate is unavailable for one of the currencies, that cross-currency pair will not match and the imbalance is surfaced with a clear note (fx_missing_currencies).

Reviewing eliminations

The intercompany reconciliation close item produces:

  • A list of matched eliminations with the paired accounts, amount, and category
  • A list of imbalances that need review before the consolidated pack can be released
  • Posting-ready elimination JE proposals that, once reviewed, can be posted to the consolidation entity (or kept as memo-only)

Imbalances block the consolidated pack — Kraal will not release a pack with unexplained intercompany differences. To clear an imbalance:

  • Confirm both sides booked the transaction in the same period (use in-transit window if just-after-period-end is OK)
  • Reconcile the amount difference (might be FX, might be a booking error)
  • If the transaction is genuinely one-sided (rare — usually points to a missed entry), add the missing side before re-running

Consolidated reporting

Once eliminations are clean, Kraal produces a consolidated pack with:

  • Consolidated trial balance — sum of subsidiary TBs after elimination
  • Consolidated P&L — including NCI line and equity-method earnings
  • Consolidated BS — including investment-in-affiliate (equity method) and NCI equity
  • Per-entity sub-packs — the underlying standalone pack for each subsidiary, for drill-down

The consolidated pack lives alongside standalone packs in the Financial Packs surface. Reviewers can navigate between consolidated and standalone views using the entity selector.

Cross-currency consolidation

For groups with subsidiaries reporting in different currencies, Kraal translates each subsidiary's results into the parent's reporting currency using the period-end consolidation rate. The translation happens after elimination so that intercompany pairs are eliminated in a single currency rather than across translation noise.

See FX Revaluation for how each subsidiary's foreign-currency monetary accounts are revalued before consolidation runs.

Configuration patterns

For a clean multi-entity setup:

  1. Register the parent first with the consolidation reporting currency as its default
  2. Add subsidiaries with their actual functional currency and the correct ownership percentage from the parent
  3. Configure intercompany accounts on each entity — these are the accounts where intercompany activity lands and against which eliminations are emitted
  4. Configure elimination policy if you need a non-default tolerance, in-transit window, or subset-match opt-out

Troubleshooting

  • The consolidation skipped my subsidiary — check the ownership percentage. Below 20% is cost method (not consolidated); 20–49% is equity method (single synthetic line, no GL merge)
  • Intercompany imbalance won't clear — the imbalance list shows the amount difference; common causes are FX between two currencies (set the period-end rate), in-transit timing (enable the window), or a genuine missing entry
  • NCI line shows but I own 100% — confirm the ownership percentage on the subsidiary; Kraal posts NCI for anything < 100%
  • Equity-method earnings missing — the synthetic line is only emitted when the subsidiary has a net-income result; a zero P&L produces no equity-method entry that period
  • Cross-currency match failed — confirm a period-end exchange rate exists for both subsidiary currencies pointing to the parent's reporting currency

Kraal — AI-powered accounting for modern firms