Skip to main content

Currency Flow Map

Complete guide to multi-currency handling in NetSuite - from transaction entry through revaluation and realized gains/losses.


Multi-Currency Overview

CURRENCY FLOW CONCEPT
═══════════════════════════════════════════════════════════════════════════════════════════════════

BASE CURRENCY: IDR (Indonesian Rupiah)
┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ ALL GL ENTRIES IN BASE CURRENCY │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ FOREIGN CURRENCY EXCHANGE RATE BASE CURRENCY │ │
│ │ TRANSACTION (at transaction) GL ENTRY │ │
│ │ │ │
│ │ USD 10,000 × 15,800 IDR/USD = IDR 158,000,000 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ RATE CHANGES CREATES FX GAIN/LOSS │ │
│ │ │ │
│ │ Original: 15,800 Unrealized (open) Revaluation Entry │ │
│ │ Current: 16,000 Realized (settled) Payment Entry │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────────┘

Master Currency Flow Diagram

NETSUITE CURRENCY FLOW
═══════════════════════════════════════════════════════════════════════════════════════════════════

FOREIGN CURRENCY TRANSACTION


┌─────────────────────────────────────────┐
│ │
│ EXCHANGE RATE LOOKUP │
│ (Transaction Date) │
│ │
│ Sources: │
│ • Automatic (provider) │
│ • Manual entry │
│ • Rate schedule │
│ │
└────────────────────┬────────────────────┘


┌─────────────────────────────────────────┐
│ │
│ GL ENTRY CREATED │
│ (Base Currency) │
│ │
│ Foreign Amount × Rate = Base Amount │
│ │
└────────────────────┬────────────────────┘

┌────────────────────┼────────────────────┐
│ │ │
▼ │ ▼
┌───────────────────┐ │ ┌───────────────────┐
│ OPEN BALANCE │ │ │ SETTLED │
│ (A/R or A/P) │ │ │ (Payment) │
└─────────┬─────────┘ │ └─────────┬─────────┘
│ │ │
▼ │ ▼
┌───────────────────┐ │ ┌───────────────────┐
│ PERIOD END │ │ │ REALIZED │
│ REVALUATION │ │ │ GAIN/LOSS │
│ │ │ │ │
│ Unrealized │ │ │ Locked in at │
│ Gain/Loss │ │ │ payment │
└───────────────────┘ │ └───────────────────┘
│ │
│ │
└──────────────────────┘


┌───────────────────┐
│ CONSOLIDATED │
│ REPORTS │
│ │
│ All in base │
│ currency │
└───────────────────┘

Transaction Currency Processing

Sales Transaction (Foreign Currency)

FOREIGN CURRENCY INVOICE
═══════════════════════════════════════════════════════════════════════════════

Scenario: Invoice to US customer in USD

Invoice Details:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Invoice #INV-001 │
│ Customer: ABC Corp (USA) │
│ Currency: USD │
│ Amount: USD 10,000 │
│ Date: January 15, 2024 │
│ Exchange Rate: 1 USD = 15,800 IDR │
└─────────────────────────────────────────────────────────────────────────────┘

GL Entry (in Base Currency - IDR):
┌────────────────────────────────────┬──────────────────┬──────────────────┐
│ Account │ Debit │ Credit │
├────────────────────────────────────┼──────────────────┼──────────────────┤
│ Accounts Receivable │ Rp 158,000,000 │ │
│ Sales Revenue │ │ Rp 158,000,000 │
└────────────────────────────────────┴──────────────────┴──────────────────┘

Transaction stores both:
• Foreign Amount: USD 10,000
• Base Amount: IDR 158,000,000
• Exchange Rate: 15,800

Purchase Transaction (Foreign Currency)

FOREIGN CURRENCY VENDOR BILL
═══════════════════════════════════════════════════════════════════════════════

Scenario: Bill from Singapore vendor in SGD

Bill Details:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Vendor Bill #VB-001 │
│ Vendor: XYZ Pte Ltd (Singapore) │
│ Currency: SGD │
│ Amount: SGD 5,000 │
│ Date: January 20, 2024 │
│ Exchange Rate: 1 SGD = 11,800 IDR │
└─────────────────────────────────────────────────────────────────────────────┘

GL Entry (in Base Currency - IDR):
┌────────────────────────────────────┬──────────────────┬──────────────────┐
│ Account │ Debit │ Credit │
├────────────────────────────────────┼──────────────────┼──────────────────┤
│ Inventory Asset │ Rp 59,000,000 │ │
│ Accounts Payable │ │ Rp 59,000,000 │
└────────────────────────────────────┴──────────────────┴──────────────────┘

Transaction stores:
• Foreign Amount: SGD 5,000
• Base Amount: IDR 59,000,000
• Exchange Rate: 11,800

Revaluation (Unrealized Gains/Losses)

Period-End Revaluation Process

CURRENCY REVALUATION FLOW
═══════════════════════════════════════════════════════════════════════════════

OPEN FOREIGN CURRENCY BALANCES
(A/R, A/P, Bank Accounts)


┌───────────────────────┐
│ PERIOD-END │
│ REVALUATION │
│ │
│ Compare: │
│ • Book rate │
│ • Current rate │
└───────────┬───────────┘

┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
Rate Increased Rate Same Rate Decreased
(currency stronger) (no change) (currency weaker)
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ A/R: Gain │ │ No Entry │ │ A/R: Loss │
│ A/P: Loss │ │ │ │ A/P: Gain │
└─────────────┘ └─────────────┘ └─────────────┘

Revaluation Example

A/R REVALUATION EXAMPLE
═══════════════════════════════════════════════════════════════════════════════

Open Invoice: USD 10,000
Original Rate (Jan 15): 1 USD = 15,800 IDR → Book Value: Rp 158,000,000
Period-End Rate (Jan 31): 1 USD = 16,000 IDR → Fair Value: Rp 160,000,000

Unrealized Gain: Rp 160,000,000 - Rp 158,000,000 = Rp 2,000,000

Revaluation Entry (January 31):
┌────────────────────────────────────┬──────────────────┬──────────────────┐
│ Account │ Debit │ Credit │
├────────────────────────────────────┼──────────────────┼──────────────────┤
│ Accounts Receivable │ Rp 2,000,000 │ │
│ Unrealized FX Gain │ │ Rp 2,000,000 │
└────────────────────────────────────┴──────────────────┴──────────────────┘

Balance Sheet After Revaluation:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Accounts Receivable (USD 10,000) │
│ ───────────────────────────────── │
│ │
│ Original Invoice Entry: Rp 158,000,000 │
│ Revaluation Adjustment: + Rp 2,000,000 │
│ Current Book Value: Rp 160,000,000 (= USD 10,000 × 16,000) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

A/P Revaluation Example

A/P REVALUATION EXAMPLE
═══════════════════════════════════════════════════════════════════════════════

Open Bill: SGD 5,000
Original Rate (Jan 20): 1 SGD = 11,800 IDR → Book Value: Rp 59,000,000
Period-End Rate (Jan 31): 1 SGD = 12,000 IDR → Fair Value: Rp 60,000,000

Unrealized Loss: Rp 60,000,000 - Rp 59,000,000 = Rp 1,000,000 (you owe more in IDR)

Revaluation Entry (January 31):
┌────────────────────────────────────┬──────────────────┬──────────────────┐
│ Account │ Debit │ Credit │
├────────────────────────────────────┼──────────────────┼──────────────────┤
│ Unrealized FX Loss │ Rp 1,000,000 │ │
│ Accounts Payable │ │ Rp 1,000,000 │
└────────────────────────────────────┴──────────────────┴──────────────────┘

Realized Gains/Losses

Payment Processing

REALIZED FX GAIN/LOSS AT PAYMENT
═══════════════════════════════════════════════════════════════════════════════

Scenario: Collecting USD invoice payment

Original Invoice (Jan 15):
USD 10,000 @ 15,800 = Rp 158,000,000 (A/R balance)

Payment Received (Feb 15):
USD 10,000 @ 16,000 = Rp 160,000,000 (cash received)

Realized Gain: Rp 160,000,000 - Rp 158,000,000 = Rp 2,000,000

Payment Entry:
┌────────────────────────────────────┬──────────────────┬──────────────────┐
│ Account │ Debit │ Credit │
├────────────────────────────────────┼──────────────────┼──────────────────┤
│ Bank Account (USD) │ Rp 160,000,000 │ │
│ Accounts Receivable │ │ Rp 158,000,000 │
│ Realized FX Gain │ │ Rp 2,000,000 │
└────────────────────────────────────┴──────────────────┴──────────────────┘

┌─────────────────────────────────────────┐
│ The Rp 2,000,000 gain is REALIZED │
│ because the transaction is complete. │
│ It will not change again. │
└─────────────────────────────────────────┘

Vendor Payment Example

REALIZED FX LOSS AT VENDOR PAYMENT
═══════════════════════════════════════════════════════════════════════════════

Original Bill (Jan 20):
SGD 5,000 @ 11,800 = Rp 59,000,000 (A/P balance)

Payment Made (Feb 20):
SGD 5,000 @ 12,200 = Rp 61,000,000 (cash paid)

Realized Loss: Rp 61,000,000 - Rp 59,000,000 = Rp 2,000,000 (you paid more)

Payment Entry:
┌────────────────────────────────────┬──────────────────┬──────────────────┐
│ Account │ Debit │ Credit │
├────────────────────────────────────┼──────────────────┼──────────────────┤
│ Accounts Payable │ Rp 59,000,000 │ │
│ Realized FX Loss │ Rp 2,000,000 │ │
│ Bank Account │ │ Rp 61,000,000 │
└────────────────────────────────────┴──────────────────┴──────────────────┘

Exchange Rate Management

Rate Sources

EXCHANGE RATE HIERARCHY
═══════════════════════════════════════════════════════════════════════════════

Priority Order (highest to lowest):
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ 1. TRANSACTION OVERRIDE │
│ └── User enters rate directly on transaction │
│ │
│ 2. CUSTOMER/VENDOR RATE │
│ └── Rate defined on entity record │
│ │
│ 3. RATE SCHEDULE │
│ └── Pre-defined rates for date ranges │
│ │
│ 4. AUTOMATIC RATE PROVIDER │
│ └── Daily rates from exchange rate provider │
│ (Thomson Reuters, Xignite, etc.) │
│ │
│ 5. CONSOLIDATED RATE │
│ └── Average/period-end rate for reporting │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Rate Types

Rate TypePurposeWhen Used
CurrentDaily spot rateTransactions
AveragePeriod averageP&L translation
HistoricalRate at transaction dateBalance sheet items
BudgetPlanned/forecast ratesBudgeting
ConsolidatedReporting rateConsolidation

Multi-Currency Reports

Currency-Specific Views

TRANSACTION CURRENCY VIEWS
═══════════════════════════════════════════════════════════════════════════════

Invoice #INV-001 can be viewed in:

┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ TRANSACTION CURRENCY (USD) BASE CURRENCY (IDR) │
│ ────────────────────────── ────────────────── │
│ │
│ Invoice Amount: USD 10,000 Invoice Amount: Rp 158,000,000 │
│ Payment: USD 10,000 Payment: Rp 160,000,000 │
│ Balance: USD 0 Balance: Rp 0 │
│ FX Gain: Rp 2,000,000 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

For Consolidated Reporting:

┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ SUBSIDIARY CURRENCY CONSOLIDATED (PARENT) CURRENCY │
│ ──────────────────── ──────────────────────────── │
│ │
│ Singapore Sub: SGD 100,000 Parent: Rp 1,180,000,000 │
│ US Sub: USD 50,000 Parent: Rp 790,000,000 │
│ Japan Sub: JPY 5,000,000 Parent: Rp 525,000,000 │
│ ─────────────────────── │
│ Consolidated: Rp 2,495,000,000 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

FX Gain/Loss Report

-- FX Transactions by Currency
SELECT
t.tranid,
t.trandate,
t.type,
t.currency,
t.exchangerate,
t.foreigntotal
FROM
transaction t
WHERE
t.currency IS NOT NULL
AND t.trandate >= '2024-01-01'
ORDER BY
t.trandate DESC

-- Account balances by currency (for FX exposure)
SELECT
a.acctnumber,
a.accountsearchdisplayname AS account_name,
a.accttype,
SUM(tal.amount) AS balance_base_currency,
SUM(tal.foreignamount) AS balance_foreign_currency
FROM
transactionaccountingline tal
JOIN
account a ON tal.account = a.id
JOIN
transaction t ON tal.transaction = t.id
WHERE
a.accttype IN ('AcctRec', 'AcctPay', 'Bank')
AND t.currency IS NOT NULL
GROUP BY
a.acctnumber,
a.accountsearchdisplayname,
a.accttype

FX Account Setup

Required Accounts

FX-RELATED ACCOUNTS
═══════════════════════════════════════════════════════════════════════════════

Income Statement Accounts:
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ Other Income: │
│ ├── 7100 Realized FX Gain │
│ └── 7110 Unrealized FX Gain │
│ │
│ Other Expense: │
│ ├── 8100 Realized FX Loss │
│ └── 8110 Unrealized FX Loss │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Alternative: Net FX Account:
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ Other Income/Expense: │
│ └── 7500 Foreign Exchange Gain/Loss (Net) │
│ │
│ (Single account - gains are credits, losses are debits) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Account Preferences

SettingLocationPurpose
Realized Gain/LossSetup > Accounting > PreferencesDefault accounts
Unrealized Gain/LossSetup > Accounting > PreferencesRevaluation accounts
Rounding Gain/LossSetup > Accounting > PreferencesMinor differences

Currency Scenarios

Triangulation

TRIANGULATION (Non-USD Cross Rates)
═══════════════════════════════════════════════════════════════════════════════

Scenario: EUR subsidiary buying from GBP vendor

Company Base: USD
Subsidiary Currency: EUR
Transaction Currency: GBP

┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ Bill Amount: GBP 1,000 │
│ │
│ Triangulation through base currency (USD): │
│ │
│ GBP 1,000 × 1.27 (GBP/USD) = USD 1,270 │
│ USD 1,270 ÷ 1.10 (EUR/USD) = EUR 1,154.55 │
│ │
│ Result: Subsidiary books EUR 1,154.55 │
│ Consolidated books USD 1,270 │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Partial Payment

PARTIAL PAYMENT FX HANDLING
═══════════════════════════════════════════════════════════════════════════════

Invoice: EUR 10,000 @ 1.10 = $11,000

Partial Payment 1 (50%):
EUR 5,000 @ 1.12 = $5,600
Realized Gain: $5,600 - $5,500 = $100

Remaining Balance:
EUR 5,000 @ 1.10 = $5,500 (original rate)

Partial Payment 2 (remaining):
EUR 5,000 @ 1.08 = $5,400
Realized Loss: $5,400 - $5,500 = ($100)

Net FX Impact: $100 gain - $100 loss = $0

Best Practices

Setup

PracticeBenefit
Enable automatic ratesCurrent exchange rates
Set rate tolerancePrevent errors
Configure revaluationPeriod-end accuracy
Map FX accountsClear gain/loss tracking

Operations

PracticeBenefit
Run monthly revaluationBalance sheet accuracy
Review open FX positionsRisk management
Lock historical ratesPrevent changes
Document rate sourcesAudit trail

Reporting

PracticeBenefit
Separate realized/unrealizedClear P&L impact
Track by currencyExposure visibility
Compare to budget ratesVariance analysis
Month-end reconciliationCatch issues

Next Steps