For each foreign subsidiary, identify its functional currency and map all balance sheet accounts to the current (period-end) exchange rate and all income statement accounts to the average rate for the period, per ASC 830-10-45.
Fetch the period-end and average exchange rates for each currency pair from your ERP or an external rate provider; store them in a rate table keyed by (currency_pair, period, rate_type) for reproducibility.
Translate the foreign subsidiary's trial balance: multiply asset and liability account balances by the current rate, equity accounts by historical rates, and income statement accounts by the average rate.
Compute the cumulative translation adjustment (CTA) as the balancing plug: CTA = total translated assets minus total translated liabilities minus translated equity minus translated net income; post CTA to the other comprehensive income (OCI) equity section.
Accumulate CTA across periods in a separate ledger account; upon disposal of the subsidiary, reclassify the accumulated CTA balance to the income statement per ASC 830-30-40.
Generate a translation evidence report per subsidiary per period showing pre-translation local-currency amounts, rates applied, translated amounts, and CTA, and store it as audit evidence alongside the close package.
Known gotchas
Using a single month-end rate for all balance sheet accounts when different historical rates should apply to equity components is a common error; maintain a historical rate schedule for equity and long-lived asset accounts.
Rate source inconsistency between subsidiaries (e.g., one uses mid-market, another uses a bank rate) produces artificial CTA; standardize the rate source across all entities before period-end.
Re-measuring monetary items (e.g., intercompany loans) in a foreign-currency functional currency entity must be done at current rates with the remeasurement gain/loss flowing through income (not OCI), which is distinct from translation — ensure your automation correctly classifies each account.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp