Appearance
Multi-Currency Accounting
This guide explains how PinkApple handles multiple currencies in the general ledger, including exchange rates, dual-balance tracking, and foreign-currency revaluation.
Overview
PinkApple supports multi-currency accounting with:
- A base (functional) currency configured per company
- Multiple transaction currencies for posting
- Dual-balance tracking: every GL line stores both transaction amount and base-equivalent amount
- Periodic FX revaluation to mark-to-market foreign currency balances
Currency Setup
Base Currency
The base currency is set in Administration → Financial Setup → Configurations under the key GL_DEFAULT_CURRENCY. All reporting and financial statements default to this currency.
Active Currencies
Manage currencies at Administration → Financial Setup → Currency:
- Add currencies from the ISO 4217 list
- Mark currencies as "Used" to enable them for transactions
- Configure approval workflow for new currencies
Exchange Rates
Exchange rates are maintained at Administration → Financial Setup → Exchange Rates:
- Enter rates as: 1 unit of foreign currency = X units of base currency
- Set an effective date for each rate
- Rates require approval before becoming active
- The system uses the most recent approved rate on or before the transaction date
TIP
For organisations with daily rate changes, consider setting up an automated exchange rate feed via the API endpoint.
Posting in Foreign Currency
When posting a journal entry in a foreign currency:
- Select the transaction currency on the journal header or line
- Enter amounts in the transaction currency
- The system converts to base currency using the effective exchange rate
- Both amounts are stored:
transaction_amountandbase_amount
The GL balance is maintained in both currencies:
- Transaction balance: Sum of entries in the original transaction currency
- Base balance: Sum of entries converted to the functional currency at historical rates
FX Revaluation
At period-end, foreign currency balances may need revaluation to reflect current exchange rates.
What Gets Revalued
The revaluation process targets COA accounts with non-zero balances in a currency different from the base currency. Specifically:
- Balance Sheet accounts with foreign currency exposure
- Accounts tagged for FX revaluation via system tags
How It Works
- The system reads the latest exchange rate for each foreign currency
- Calculates the revalued base amount:
transaction_balance × closing_rate - Compares to the current base balance
- Posts the difference as a revaluation gain or loss
Running Revaluation
From Accounting → Fiscal Periods → Period-End Actions → Run FX Revaluation:
- Optionally specify an as-of date (defaults to today)
- Optionally limit to a specific business unit
- The system posts entries to the
FX_REVALUATION_GAINandFX_REVALUATION_LOSStagged COAs
Revaluation Entries
The procedure posts balanced journal entries:
| Scenario | Debit | Credit |
|---|---|---|
| Foreign currency appreciated (gain) | Foreign COA | FX Revaluation Gain |
| Foreign currency depreciated (loss) | FX Revaluation Loss | Foreign COA |
System Tags for Multi-Currency
| Tag | Purpose |
|---|---|
FX_REVALUATION_GAIN | COA account for unrealised FX gains |
FX_REVALUATION_LOSS | COA account for unrealised FX losses |
REALISED_FX_GAIN | COA account for realised FX gains (settlement) |
REALISED_FX_LOSS | COA account for realised FX losses (settlement) |
Reporting
Multi-Currency Trial Balance
The Trial Balance report supports currency filtering:
- Filter by specific currency to see only that currency's balances
- Use the base currency to see a consolidated view
- Compare translated amounts across currencies
Financial Statements
Financial statements always present in the base currency by default. The template system allows:
- Multi-currency comparative columns
- Currency conversion notes
- Exchange rate disclosure
Best Practices
- Keep exchange rates current — stale rates cause inaccurate conversions
- Run FX revaluation monthly at minimum (before period close)
- Use separate COA accounts for realised vs. unrealised FX gains/losses
- Configure the
FX_REVALUATION_GAINandFX_REVALUATION_LOSStags before first revaluation run - Review revaluation entries for reasonableness before closing the period
