Skip to main content

Realized Foreign Currency Gain/Loss from Foreign Currency AP Bills and AR Invoices

Automatically capture per transaction realized gain and loss amounts from paying bills or receiving cash in foreign currencies

Travis Lander avatar
Written by Travis Lander
Updated this week

Description

When creating AP Bills or AR Invoices in a foreign currency (Bill/Invoice currency does not equal Location's Reporting Currency), a realized gain/loss may occur due to the fluctuation in exchange rates between when the Payable/Receivable was created and when the Bill/Invoice was paid. This gain/loss is automatically calculated and booked by SoftLedger on a transaction by transaction basis.

Setup

Before creating a Bill or Invoice in a Posted Currency different from a Location's Reporting Currency, you must first assign a Ledger Account under the Location's settings for where you'd like the realized gain/loss amount to be booked. Navigate to Financial>Locations and to edit the assigned Realized Forex Gain/Loss Account for each applicable Location. See the Ledger Account added in the Location image below:

Caution: If a Bill or Invoice is booked in a foreign currency and there is not a Realized Forex Gain/Loss Account set for that Location, the system will block the creation of that Bill/Invoice.

When a Gain/Loss is Applied

Once you have created and assigned a Realized Forex Gain/Loss Account, the account will be used on a per transaction basis at time of Payment when both the below are true:

  1. The Bill/Invoice is created in a Posted Currency different from the Reporting Currency

  2. The FX Rate at time of Bill/Invoice Invoice Date is different from the FX Rate at time of Payment Date (generally this arises when the Dates are different since FX Rates fluctuate daily)

How it works

When there is a gain/loss to be recognized, at the time of payment the system will automatically book an additional Journal Entry between the Location's Realized Gain/Loss Account and the AP or AR Account (selected at the time of creation of the Bill/Invoice) to adjust the balance to the settlement amount given the exchange rate at the time of settlement.

The Journal Entry created will:

  • Post to either AR ledger if from an AR Invoice or AP ledger if from an AP Bill

  • Set the transaction type: standard

  • Set the Journal Reference to: Realized Foreign Currency Gain/Loss

  • References the original Bill or Invoice and Payment using the Bill/Invoice ID and Payment ID included on the Journal Entry

  • Use the Payment's Posted Date as the Journal Entry's Posted Date

  • Be created in Draft status and set to Posted status when the Payment is approved

  • Not be able to be manually edited or deleted (it can only be changed through actions against the Bill/Invoice or Payment itself)

Note: If you have the Auto-Approve Payment settings enabled for AP or AR, the Journal Entry produced here will be automatically set to Posted status

Example

Let's walk through an example where a Bill is being paid in EUR, but the the Location reports in USD. If prior setup is complete, the Bill would look something like the below. We are creating a 100 EUR Bill on August 1st, 2025 in the Global Location that reports in USD. At this time, the EUR to USD FX Rate is 1.142173.

The Bill is now being paid on August 5th, 2025 in EUR. At this time the FX Rate is 1.15494.

Now that the Bill has been Paid, you can see the Journal Entries recorded to capture the $1.28 USD realized loss incurred due to the dollar weakening against the euro in the five day period from when the bill was received and when it was paid.

The Journal Entry produced for the Realized Gain/Loss part of this Bill Payment includes the full details from the Bill and Payment to easily reference in reporting.

Details for the Payment processing

When payments are created (as in the example covered), the system automatically books the resulting Journal Entry for the impact of the realized gain/loss. If the payment is updated/voided, the resulting Journal Entry will also be updated/voided.

Notifications to User in the Interface

Users will be notified at Bill creation stage when creating a Bill in a Posted Currency differing from Location Reporting Currency:

Users are blocked and receive an error when trying to submit a Payment without a Realized Gain/Loss Ledger Account set for the Location of the Bill:

Note: Users are also blocked when attempting to submit Batch Payments for multiple Bills if ANY of the Bills require a Realized Gain/Loss Journal Entry but are unable to pay because of a lack of Ledger Account set.

Draft Bill Payments

When system setting to allow Payments is enabled, the realized gain/loss Journal Entry produced by the system will update if any Bill or Payment fields are changed that impact the inputs for the Journal Entry. The below fields can not be changed with the draft bill payments setting enabled:

  • Vendor

  • AP Account

  • Currency

  • Location

  • Invoice Date

Realized Gain/Loss can span across Accounting Periods

A realized gain/loss will automatically be calculated and booked based on when a Bill/Invoice is Paid, meaning that you can create a Bill or Invoice in one monthly accounting period, but not recognize the realized gain/loss until a subsequent accounting period on payment date.

Simple Example:

  • A Bill posted in January, Payment is in March

  • At January closing: Unrealized remeasurement captured for AP Account (if account is set to remeasure)

  • February closing: Unrealized remeasurement captured for AP Account (if account is set to remeasure)

  • March: Realized FX gain/loss journal created. Bill is settled

Note: Since foreign currency remeasurement journal entries are unrealized, they post at period-end and reverse the following period. Settled bills/invoices are not captured in the unrealized calculation.

Rounding

The Gain/Loss amounts are rounded to the set precision of the reporting currency of the Location. If there is a non-zero gain/loss amount, but that amount is less than the set precision of the reporting currency, no gain/loss is posted.

Simple Example:

  • Gain/Loss = 0.004727 USD

  • Currency Precision = 2

  • Rounded Gain/Loss = 0.00 USD

  • No gain/loss is posted

Did this answer your question?