# Tax and FX reporting integration

## Purpose

Connects **tax** and **FX** mechanics to **financial reporting** ([trial-balance.md](./trial-balance.md), [profit-and-loss.md](./profit-and-loss.md), [balance-sheet.md](./balance-sheet.md), [reporting-pipeline.md](./reporting-pipeline.md)) so statutory and management packs remain **journal-derived**, **deterministic**, and **auditable**.

## VAT reporting

**VAT / sales tax returns** are **aggregations of posted GL activity** (and, where legally required, **supporting schedules** from **frozen tax lines** on documents)—not recomputation from open orders.

- **Boxes / return lines** map to **account ranges or tags** (output VAT, input VAT, reverse charge, exempt with credit, etc.) with a **fixed mapping version** per filing period.
- **Net payable** on the return must **reconcile** to the **sum of posted movements** on VAT control accounts plus **unsettled** items explicitly listed (e.g., unposted only in management flash—not in official return).
- **Corrections** to prior periods appear as **posted** adjustments in the correction period with **reference** to original filing correlation.

Source: [tax-posting.md](./tax-posting.md), [tax-model.md](./tax-model.md).

## FX reporting

**FX disclosure** (unrealized/realized, by currency, by line item where required) comes from:

- **Posted** FX gain/loss accounts and **remeasurement** entries ([fx-revaluation.md](./fx-revaluation.md)),
- **Settlement** entries on bank and AP/AR clearings,
- **Optional schedules** that list **notional** open balances by `txn_currency` with **functional carrying value**—schedules are **derived** from the same journal + rate snapshots used for the TB, not from a parallel FX engine.

**Mismatch** between schedule and TB is a **blocking reconciliation** item until resolved via **posting** or corrected inputs.

## Translated financials

When **reporting currency ≠ functional** ([multi-currency-model.md](./multi-currency-model.md)):

- **Translation** is a **reporting pipeline** pass (see [reporting-pipeline.md](./reporting-pipeline.md)) using **locked** closing/average rates per policy, with **metadata** on every run: rate table version, rate types per line category, translation standard identifier.
- **No retroactive change** to previously published translated packs without a **new run** labeled with new versions; prior runs remain **retrievable** for audit compare.

**TB tie-out:** translated TB must still **map back** to functional TB through **deterministic** translation rows (no manual spreadsheet overrides in the authoritative path).

## Consistency hierarchy

1. **Posted journal** (functional and txn legs as designed).
2. **TB / statutory statements** in functional currency.
3. **Tax returns** from tax GL + auditable tax line schedules.
4. **FX schedules** from same ledger + rate metadata.
5. **Translated statements** as explicit second layer.

Performance caches must not violate this order ([reporting-pipeline.md](./reporting-pipeline.md)).

## Self validation (this document)

- **VAT reporting**, **FX reporting**, and **translated financials** defined as journal-anchored with reconciliation to TB.
- Explicit rejection of operational recompute for official outputs.
