Currency and Conversion Rates
Currency conversion is essential for any organisation that operates across multiple currencies. The platform stores conversion rate types and daily rates that are used whenever a transaction needs to be converted from one currency to another — for example, when a foreign-currency invoice is posted to a ledger with a different functional currency.
Although the rate tables are defined in the FND (Foundation) namespace, they are consumed primarily by the General Ledger and other financial modules.
Conversion rate types
A Conversion Rate Type categorises exchange rates so that different contexts can use different rate sources:
| Attribute | Purpose |
|---|---|
| Rate type code | Unique identifier within the tenant (e.g. SPOT, CORPORATE, BUDGET) |
| Name | Human-readable name with i18n support |
| Description | Optional longer description |
| Pivot currency | Optional pivot currency for triangulated conversions (see below) |
| Status | Active/inactive lifecycle state |
Common rate types:
| Code | Typical use |
|---|---|
SPOT | Market rate at the time of the transaction |
CORPORATE | A single rate set by treasury for a given period |
BUDGET | Rate used in budgets and forecasts, typically set at plan time |
USER | A user-supplied rate on an individual transaction |
Tenants can define additional rate types through the standard setup process.
Daily rates
A Daily Rate records the conversion factor between two currencies for a specific date and rate type:
| Attribute | Purpose |
|---|---|
| Rate type | The conversion rate type |
| From currency | Source currency code (ISO 4217) |
| To currency | Target currency code (ISO 4217) |
| Conversion date | The date this rate applies to |
| Conversion rate | The multiplier (from-amount × rate = to-amount) |
| Inverse rate | The inverse multiplier (to-amount × inverse = from-amount) |
| Status | Active/inactive lifecycle state |
Rates are stored as directional pairs. If a rate is entered for NZD → USD, the platform automatically calculates and stores the inverse (USD → NZD) so that lookups work in both directions.
The fnd_get_daily_rate function
The fnd_get_daily_rate function is the primary entry point for currency conversion lookups. Given a from-currency, to-currency, conversion date, and rate type, it returns the applicable rate by following this resolution order:
- Direct match — look up the exact from/to/date/type combination
- Inverse match — look up the reverse pair (to/from) and return the stored inverse rate
- Triangulation — if the rate type has a pivot currency defined, convert through the pivot (from → pivot → to) by multiplying the two rates
If no rate is found after all three steps, the function raises an error.
Example
For a conversion from NZD to EUR on 2026-01-15 using the CORPORATE rate type with USD as the pivot currency:
- Look for a direct NZD → EUR CORPORATE rate on 2026-01-15
- If not found, look for EUR → NZD and invert
- If not found, look for NZD → USD and USD → EUR, then multiply
How it fits together
- FND currencies — rate types and daily rates reference ISO 4217 currency codes from the FND currency master
- Ledgers — the ledger's functional currency determines when conversion is needed
- Transactions — any transaction in a currency different from the ledger's functional currency triggers a rate lookup
Further reading
- Ledgers — how the functional currency drives conversion requirements
- Data Model Overview — the full FGL entity landscape
- GL Setup Walkthrough — step-by-step guide to configuring rate types and daily rates