Currency Management in Fr8labs

How Currencies Are Managed in Fr8Labs

A Compendium for Freight Forwarders Using the Fr8Labs Freight Management & Accounting Modules

1. Why Currency Management Matters in Freight Forwarding

Freight forwarders operate across borders by nature. A single shipment may involve charges in USD (ocean freight from a carrier), EUR (destination handling from a European agent), and SGD (local trucking and documentation fees) — all billed to a customer who expects an invoice in yet another currency.

Getting this wrong has real consequences:

  • Accounting exposure: If receivables and payables aren't tracked per currency, you can't see your net foreign exchange (FX) exposure until it's too late.

  • Gain/loss invisibility: FX gains and losses between invoice date and payment date can silently erode margins — or boost them. Without clean currency separation, these are impossible to calculate accurately.

  • Regulatory compliance: Multi-entity operations (e.g., Singapore + Indonesia) require each entity's books to be denominated in the local statutory currency, with foreign currency transactions properly translated.

Fr8Labs addresses this through a layered currency architecture: home currency, invoice currency, and line-item currency, combined with strict partner-level currency mapping and flexible exchange rate management.


2. Core Concepts

Home Currency (Company Currency)

The statutory currency of your Fr8Labs company entity. All financial reporting, general ledger balances, and consolidated views ultimately translate back to this currency.

  • For a Singapore entity, this is typically SGD.

  • For an Indonesian entity, this is typically IDR.

  • This is set during company onboarding and cannot be changed.

Invoice Currency (Header Currency)

The currency in which an invoice is denominated. This is the currency your customer or vendor sees on the invoice document and the currency in which the receivable or payable is tracked.

  • Determined by the partner's assigned common currency (see Section 3 below).

  • If the invoice currency differs from the home currency, Fr8Labs stores the exchange rate used and calculates the home-currency equivalent for ledger posting.

Line-Item Currency

Individual charge lines within an invoice (or quotation, or job estimation table) can be entered in any currency. Fr8Labs automatically converts each line item back to the invoice currency using the applicable exchange rate.

  • This is useful when a vendor charges in a different currency than what you bill your customer.

  • Example: A European agent charges you in EUR, but your customer invoice is in USD. You enter the EUR cost at line-item level; the system rebases it to USD at the invoice header level.


3. The One-Partner-One-Currency Rule

How It Works

Fr8Labs enforces a strict rule: each partner account is mapped to exactly one currency. All invoices created for that partner must be denominated in that currency.

This means:

  • When you create a partner (customer or vendor), you assign a common currency to that partner.

  • Every Sales Invoice (AR) or Vendor Invoice (AP) linked to that partner will be issued in that currency.

  • The Accounting Module tracks all receivables and payables for that partner in their assigned currency, posting to the corresponding Trade Debtors or Trade Creditors sub-ledger per currency.

Why This Design Exists

This structure serves several critical purposes:

  1. Clean FX exposure tracking. By isolating each partner to one currency, you can see at a glance your net receivables vs. payables in USD, SGD, EUR, etc. This gives you a clear picture of your currency exposure relative to your home currency.

  2. Accurate gain/loss calculation. When a payment arrives for a USD invoice, Fr8Labs can cleanly compare the exchange rate at invoice date vs. payment date to calculate realised FX gain or loss. Mixed-currency partner accounts would make this calculation ambiguous.

  3. Audit trail clarity. Auditors and finance teams can trace every transaction for a partner in a single, consistent currency without reconciliation confusion.

What If a Client Trades in Multiple Currencies?

If the same real-world customer requires invoices in more than one currency, you create separate partner accounts — one per currency.

Example:

  • Acme Logistics – USD → All USD-denominated invoices for Acme.

  • Acme Logistics – SGD → All SGD-denominated invoices for Acme.

Each partner account maintains its own receivables ledger, ageing, and statement of accounts in the assigned currency. This is the same approach for vendors.

Tip: Use a consistent naming convention (e.g., [Partner Name] - [Currency]) so your team can quickly identify which account to use when creating jobs or invoices.

What Happens If You Select the Wrong Partner?

If you are working on a job where the customer expects a USD invoice, but you accidentally select the SGD partner account, the system will attempt to create an SGD invoice. This creates a mismatch with the job estimation and charge group currencies, and the system will raise an error to prevent the inconsistency.

Always verify the partner (and therefore the invoice currency) matches the job's intended billing currency before proceeding.


4. Common vs. Uncommon Currencies

Not all currencies are created equal in your day-to-day operations. Fr8Labs distinguishes between common currencies and uncommon currencies to balance operational accuracy with practical effort.

Common Currencies

These are the currencies your company regularly trades in — the ones that show up on invoices week after week.

  • Configured by your system administrator at the company level.

  • Each common currency gets its own Trade Debtors and Trade Creditors accounts in the Chart of Accounts.

  • Exchange rates are actively maintained (manually or via automation) for these currencies.

  • Partners are created with common currencies assigned.

Examples: For a Singapore-based forwarder, common currencies might be SGD, USD, EUR, MYR, and IDR.

Uncommon Currencies

These are currencies you encounter rarely — perhaps one or two transactions per year.

  • Also configured by your system administrator at the company level.

  • For uncommon currencies, rather than creating dedicated currency-specific partner accounts and maintaining active exchange rates, you may choose to rebase everything to home currency and track the exposure manually or semi-manually.

  • This avoids the overhead of maintaining exchange rate tables and dedicated ledger accounts for a currency you barely use.

Example: A Singapore forwarder who does one CAD (Canadian Dollar) shipment per year might not justify setting up dedicated CAD receivables tracking, automated CAD rate pulls, and CAD-specific partner accounts. Instead, they convert the CAD amounts to SGD at the point of invoicing and manage the small FX risk outside the system.

Tip: Review your common vs. uncommon currency list annually. If a currency starts appearing frequently, promote it to common so it gets proper tracking and automation.


5. The Three-Currency Layer in Practice

At any point in time, a single invoice in Fr8Labs can involve up to three currencies simultaneously:

Layer

What It Represents

Example

Home Currency

Your company's statutory/base currency. All GL entries ultimately post in this currency.

SGD

Invoice Currency

The currency on the invoice header, determined by the partner's common currency.

USD

Line-Item Currency

The currency of individual charge lines, which may differ from the invoice currency.

EUR

How Conversion Flows

Line-Item Currency (EUR)
    ↓  converted at line-item exchange rate
Invoice Currency (USD)
    ↓  converted at invoice/header exchange rate
Home Currency (SGD)
  1. Line item → Invoice currency: Each charge line entered in a foreign currency is converted to the invoice currency using the applicable rate. The invoice total is always expressed in the invoice currency.

  2. Invoice currency → Home currency: The invoice total (and each line) is then translated to home currency for general ledger posting. This conversion uses the rate valid on the invoice/posting date.

Where This Three-Layer Model Applies

This same header-and-line-item currency architecture is consistent across:

  • Quotation tables — When quoting a customer, you set a header currency and can enter line items in different currencies.

  • Job estimation charge groups — When building the job P&L, the estimation table follows the same header/line-item currency logic.

  • Invoices (Sales and Vendor) — The final billing documents inherit and enforce this structure.

Because the currency logic is consistent from quotation → job estimation → invoice, selecting the correct header currency at each stage is critical. If you choose the wrong header currency (e.g., quoting in USD but the partner is mapped to SGD), the system will error out when you try to create the invoice, because it violates the one-partner-one-currency rule described in Section 3.

Practical Example: Full Flow

A Singapore company (home currency: SGD) is handling an Ocean Export for a US-based customer billed in USD.

  1. Quotation: Header currency = USD. Line items include ocean freight (USD), European destination charges (EUR), and local handling (SGD). The EUR and SGD lines are converted to USD at the quotation stage.

  2. Job Estimation: Same structure. Header = USD. Line items may include new charges in various currencies, all rebased to USD.

  3. Sales Invoice: Created for partner "US Customer – USD". Invoice currency = USD. All line items convert to USD. The system also calculates the SGD equivalent for GL posting.

  4. Vendor Invoice: The European agent invoices you in EUR. You create this against partner "Euro Agent – EUR". Invoice currency = EUR. The system converts to SGD for your GL.


6. Exchange Rates

How Rates Are Applied

Fr8Labs uses a valid date approach for exchange rates:

  • Each exchange rate entry has a Valid Date.

  • When creating an invoice or journal entry, the system looks up the latest rate on or before the transaction date.

  • Example: A rate set on 17 Sep will apply to any transaction dated 17 Sep or later, until a newer rate is entered.

Users can always manually override the rate on any individual transaction if needed.

Simple vs. Multi-Rate Setup

Simple Rates (Default)

  • One set of exchange rates used across all partners and transactions.

  • Suitable for companies that don't need to differentiate between buy/sell spreads.

Multi-Rate (Currency Rate Types)

  • Multiple rate types can be configured, such as:

    • Company Base Rate (mid-market)

    • Buy Rate (for purchasing/vendor invoices)

    • Sell Rate (for customer invoices)

    • Custom rates with markup factors (e.g., Selling Rate + 3% CAF adjustment)

  • One rate type is set as the system-wide default.

  • At the partner level, you can assign which rate type applies to a specific partner, so the correct rate is automatically used whenever you transact with them.

  • All rates remain adjustable at the point of job estimation or invoicing — the system default is a starting point, not a constraint.

For detailed setup of rate types and partner-level assignment, see: Currency Exchange Rates (Master Data)

Carrier Exchange Rate (Job-Level Override)

Fr8Labs includes a Carrier Exchange Rate feature at the job level. This allows users to set a specific exchange rate that applies to a particular shipment, overriding the company-level exchange rate for that job.

When to use this:

  • A carrier or agent has quoted you at a specific locked-in rate for a shipment.

  • You have hedged or pre-agreed an FX rate for a particular transaction.

  • The market rate has moved significantly between booking and invoicing, and you need to honour the original rate.

How it works:

  • On the Job record, there is a field for Carrier Exchange Rate.

  • When set, this rate takes priority over the company exchange rate for currency conversions within that job.

  • If left blank, the system falls back to the standard company exchange rate (per the valid date logic described above).

Priority hierarchy:

Carrier Exchange Rate (job-level)
    ↓  if not set, falls back to
Company Exchange Rate (per rate type & valid date)
    ↓  which can still be
Manually Overridden (at invoice/transaction level)

Automated Rate Updates

Fr8Labs supports automated exchange rate pulling from a variety of sources:

  • Global currency APIs (e.g., currencyapi.com)

  • Local and regional bank websites (via website scraping or bank APIs)

  • Central bank rates

The automation includes AI validation to check that extracted data looks correct before applying, and email notifications if validation fails.

Schedules, sources, rate type mapping, and markup rules are configurable. At this stage, the Fr8Labs team configures this automation on your behalf — self-service controls are on the roadmap.

For full details on automated rate setup, see: AI Automation: Exchange Rate Updates


7. FX Gain/Loss Tracking

The one-partner-one-currency structure enables clean FX gain/loss calculation:

  • At invoice creation: The system records the exchange rate used to translate the invoice currency to home currency.

  • At payment receipt/disbursement: The system records the exchange rate on the payment date.

  • The difference between these two rates, applied to the transaction amount, is your realised FX gain or loss.

Because each partner's receivables and payables are maintained in a single currency, there is no ambiguity about which rate to compare against. This also means your net exposure per currency is visible at any time — total receivables in USD minus total payables in USD gives you your net USD position.

Tip: Periodically review your outstanding receivables and payables per currency against current market rates. If you see a large unrealised gain or loss building up (i.e., current market rates have moved significantly from the rates on your open invoices), this may warrant a "mark-to-market" adjustment in your management accounts, even if statutory accounting doesn't require it until settlement.


8. Tricky Scenarios

Scenario A: Customer Switches Billing Currency

A long-standing customer who has always been billed in USD now wants to be billed in SGD for domestic shipments.

  • Solution: Create a new partner account (e.g., "Customer ABC – SGD") alongside the existing "Customer ABC – USD".

  • Both accounts can coexist. Use the USD account for international shipments and the SGD account for domestic.

  • Historical USD invoices remain cleanly tracked under the original partner.

Scenario B: Vendor Invoices You in an Unexpected Currency

A trucking company that normally bills in SGD sends you a one-off invoice in MYR.

  • Option 1 (if MYR is a common currency): Create a new vendor partner account for MYR and process the invoice normally.

  • Option 2 (if MYR is uncommon for this vendor and it is a one-off): Convert the MYR amount to the vendor's assigned currency (SGD) manually and enter it accordingly. Track the FX difference outside the system.

Scenario C: Quotation-to-Invoice Currency Mismatch

You quoted a customer in USD but the job was accidentally set up against the SGD partner account.

  • What happens: The system will flag an error when you try to create the invoice because the job estimation is in USD but the partner expects SGD invoices.

  • Fix: Change the partner on the job to the correct USD partner account before creating the invoice. If no USD partner exists, create one first.

Scenario D: Exchange Rate Volatility Mid-Shipment

A shipment is booked at one rate, but by the time the invoice is created weeks later, the rate has moved significantly.

  • Option 1: Use the Carrier Exchange Rate at job level to lock in the original rate.

  • Option 2: Let the system use the latest company rate and accept the variance.

  • Option 3: Override the rate manually on the invoice.

  • The right choice depends on your commercial agreement with the customer and your internal FX policy.


9. Recommendations by Company Profile

Single-Entity, Single-Market Forwarder

  • Likely 2–3 common currencies (home + 1–2 trade currencies like USD).

  • Simple rate setup is sufficient.

  • Focus on getting the one-partner-one-currency naming convention right from the start.

  • Automated rate pulling recommended even if weekly.

Multi-Entity, Regional Forwarder

  • Each entity has its own home currency — ensure common currencies are configured per entity.

  • Multi-rate setup recommended (buy/sell/mid) to capture commercial spreads.

  • Use partner-level rate type assignment to automate which rate each partner uses.

  • Monitor cross-entity exposure (e.g., your Singapore entity is owed USD by a customer, while your Indonesia entity owes USD to a carrier).

High-Volume, Multi-Currency Forwarder

  • All of the above, plus:

  • Daily automated rate updates for volatile currencies.

  • Carrier Exchange Rate usage for large or rate-sensitive shipments.

  • Regular mark-to-market reviews of outstanding receivables/payables.


10. Implementation Checklist

  1. Define your home currency per company entity (set during onboarding).

  2. Identify and configure common currencies — the currencies you trade in regularly.

  3. Identify uncommon currencies — decide your policy for handling rare currency transactions.

  4. Set up partner accounts with correct currency mapping. Use consistent naming (e.g., [Name] - [CCY]).

  5. Choose simple or multi-rate setup based on your business needs.

  6. If using multi-rate: define rate types (base, buy, sell, custom) and assign defaults to partners.

  7. Configure automated exchange rate updates — choose sources, schedules, and notification recipients. Contact the Fr8Labs team for setup.

  8. Train your team on the header currency selection requirement across quotations, job estimations, and invoices.

  9. Establish a process for reviewing FX gain/loss and net currency exposure periodically.

  10. Review common vs. uncommon currency lists annually as your trade patterns evolve.


11. Glossary

  • Home Currency (Company Currency) — The statutory base currency of your Fr8Labs company entity. All GL entries ultimately post in this currency.

  • Invoice Currency (Header Currency) — The currency on the invoice, determined by the partner's assigned common currency. Also applies to quotation and job estimation headers.

  • Line-Item Currency — The currency of an individual charge line, which may differ from the header/invoice currency.

  • Common Currency — A currency your company regularly trades in, configured by admin. Gets dedicated ledger tracking and automated rate maintenance.

  • Uncommon Currency — A rarely used currency where you may choose to rebase to home currency rather than maintain full tracking.

  • One-Partner-One-Currency Rule — Each partner account in Fr8Labs is mapped to exactly one currency. All invoices for that partner are issued in that currency.

  • Currency Rate Type — A classification of exchange rates (e.g., mid-market, buy, sell) that can be assigned at partner level.

  • Carrier Exchange Rate — A job-level exchange rate override that supersedes the company exchange rate for a specific shipment.

  • Trade Debtors / Trade Creditors — Receivables and payables accounts in the Chart of Accounts, maintained per currency for common currencies.

  • FX Gain/Loss — The difference in home-currency value between an invoice and its payment, caused by exchange rate movement between the two dates.

  • Mark-to-Market — Revaluing outstanding foreign-currency balances at the current exchange rate (as opposed to the historical invoice rate) for management reporting purposes.

  • Rebase — Converting an amount from one currency to another (e.g., converting a EUR line item to the USD invoice currency).


See also: