Multi-Currency
Triple-currency recording, automatic exchange rate conversion, FX gain/loss tracking, and consolidation support
Overview#
The multi-currency system handles three distinct currency perspectives for every transaction, enabling businesses to operate across borders while maintaining accurate financial records at every level.
Three-Currency Model#
- Document Currency -- The currency the transaction was entered in (e.g., a EUR invoice from a European customer)
- Functional Currency -- The legal entity's base operating currency (e.g., EUR for an EU subsidiary)
- Reporting Currency -- The group consolidation currency (e.g., USD for corporate reporting)
Key Capabilities#
- Triple-currency recording -- Every transaction stores amounts in all three currencies
- Rate tracking -- Exchange rates and rate types preserved on each transaction
- Automatic conversion -- System applies rates to calculate functional and reporting amounts
- FX gain/loss -- Foundation for calculating realized and unrealized FX differences
- Entity-specific -- Each legal entity has its own functional currency
- Consolidation ready -- Reporting currency enables group-level financial consolidation
Business Scenarios#
| Scenario | How It Works |
|---|---|
| Multi-national operations | US parent with EU, UK, APAC subsidiaries -- each operates in local currency, all report to USD |
| Customer invoicing | Invoice European customer in EUR from a USD entity. Document: EUR, Functional: USD. |
| Vendor payments | Pay UK supplier in GBP from a US entity. System records GBP, converts to USD. |
| Group consolidation | Roll up all subsidiaries to parent USD reporting currency automatically. |
| Compliance | Audit trail shows exact rate used on every transaction, with source and type. |
| FX accounting | Calculate FX gain/loss when payment rate differs from invoice rate. |
How Currency Conversion Works#
When a transaction is created, the system automatically enriches it with currency information:
Step-by-Step Flow#
1. USER ENTERS TRANSACTION
- Amount: 10,000 EUR (document currency)
- Transaction date: January 15
2. SYSTEM LOOKS UP ENTITY CONFIGURATION
- Functional currency: USD
- Reporting currency: USD
3. SYSTEM LOOKS UP EXCHANGE RATE
- EUR to USD spot rate on Jan 15: 1.08
4. SYSTEM CALCULATES AMOUNTS
- Document amount: 10,000 EUR (entered)
- Functional amount: 10,800 USD (10,000 x 1.08)
- Reporting amount: 10,800 USD (same as functional)
5. SYSTEM RECORDS RATE METADATA
- Rate: 1.08
- Rate type: spot
- Rate source: system
Entity Configuration#
Each legal entity defines its currency context:
| Entity | Functional Currency | Reporting Currency | Use Reporting |
|---|---|---|---|
| EU Subsidiary | EUR | USD | Yes |
| UK Subsidiary | GBP | USD | Yes |
| US Headquarters | USD | USD | Yes |
Journal Posting with Multiple Currencies#
When a transaction posts to the general ledger, every journal line carries amounts in all three currencies:
Journal Entry (3 Currency Layers)
Line 1: Accounts Receivable
Document: 10,000 EUR (debit)
Functional: 10,800 USD (debit)
Reporting: 10,800 USD (debit)
Line 2: Revenue
Document: 10,000 EUR (credit)
Functional: 10,800 USD (credit)
Reporting: 10,800 USD (credit)
Balanced at all 3 currency levels.
This ensures that financial reports can be generated in any of the three currency perspectives with full accuracy.
Exchange Rate Management#
Rate Types#
| Rate Type | Description | Use Case |
|---|---|---|
| Spot | Daily market rate at transaction date | Most common, used for daily transactions |
| Average | Average rate for the period | Month-end valuations, simplifying volatility |
| Contract | Fixed rate per agreement | Long-term contracts with locked rates |
| Budget | Budgeted/planned rate | Forecasting and budget comparisons |
Rate Sources#
| Source | Description |
|---|---|
| Manual | Entered directly by user |
| ECB | European Central Bank daily reference rates (28 EUR-based pairs) |
| US Treasury | US Treasury Fiscal Data API (170+ USD-based pairs) |
| Frankfurter | ECB data as JSON with any base currency (fallback) |
When multiple rates exist for the same currency pair and date, the system uses a priority order: manual rates take precedence over ECB, which takes precedence over US Treasury, which takes precedence over Frankfurter.
Managing Exchange Rates#
You can manage exchange rates through the AI assistant:
"Set the EUR to USD spot rate to 1.085 effective January 15"
The system automatically:
- Creates the forward rate (EUR to USD = 1.085)
- Creates the inverse rate (USD to EUR = 0.9217)
- Validates currency codes (ISO 4217)
- Prevents same-currency rates
- Upserts if a rate for the same date and type already exists
Rates can also be updated and deleted. Deleting a rate removes both the forward and inverse entries.
Currency Conversion#
The system provides a conversion tool for quick calculations:
"Convert 10,000 EUR to USD using today's rate"
This returns the converted amount, rate used, and source of the rate.
Consolidation and Reporting#
Group-Level Reporting#
Because every transaction carries a reporting currency amount, group-level financial reports can aggregate across all entities in a single currency:
- AR aging in reporting currency -- See outstanding receivables across all subsidiaries in USD
- AP aging in reporting currency -- View payables across entities in a unified currency
- Income statement consolidation -- Roll up revenue and expenses from all entities
- Balance sheet consolidation -- Unified balance sheet across the organization
Entity-Level Reporting#
Entity-level reports use the functional currency, showing local operating performance:
- An EU subsidiary sees its financials in EUR
- A UK subsidiary sees its financials in GBP
- Both roll up to USD for group reporting
FX Gain and Loss#
When FX Differences Arise#
FX gains and losses occur when exchange rates change between the time an invoice is recorded and when it is paid:
- Invoice recorded on Jan 1 at EUR/USD = 1.08 -- Invoice amount: $10,800
- Payment received on Feb 1 at EUR/USD = 1.10 -- Payment amount: $11,000
- FX gain of $200 (received more USD than expected)
Handling in the System#
- Realized FX gain/loss -- Automatically calculated when payments are matched to invoices at different rates
- Unrealized FX gain/loss -- Foundation exists for period-end revaluation of open positions
- FX variances are posted to dedicated gain/loss accounts
Compliance#
The multi-currency system maintains full audit compliance:
- Historical rates preserved -- The rate used at transaction time is stored, never restated retroactively
- Rate traceability -- Every transaction records whether the rate was spot, contract, or manual
- Source tracking -- Know if the rate came from ECB, manual entry, or another source
- Consolidation -- Present group financials in a single reporting currency
- Local reporting -- Show entity financials in functional currency for local regulatory requirements
Best Practices#
- Set up entity currencies early -- Configure functional and reporting currencies before entering transactions
- Keep exchange rates current -- Use automated rate sources (ECB, US Treasury) for daily updates
- Use spot rates for daily transactions -- Reserve average rates for period-end valuations
- Lock contract rates -- Use the contract rate type for long-term agreements with fixed exchange rates
- Review FX impact -- Monitor FX gains and losses as part of your monthly close process
- Reconcile in functional currency -- The reconciliation engine compares amounts in functional currency, naturally handling multi-currency matching
Subscribe to new posts
Get notified when we publish new insights on AI-native finance.