Manual Exchange Rate on Payments (FX Gain/Loss)
by RA Consulting Solutions https://racsolutions.com.au$ 38.64
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 535 |
| Technical Name |
account_payment_fixed_rate |
| License | OPL-1 |
| Website | https://racsolutions.com.au |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 535 |
| Technical Name |
account_payment_fixed_rate |
| License | OPL-1 |
| Website | https://racsolutions.com.au |
Enter the amount you actually paid — or the exact rate you got — and the module fills in the other, ties the payment to your bank statement to the cent, and posts the foreign-exchange gain or loss for you.
The problem it solves
When you pay a bill in a foreign currency, the rate your bank charges is almost never the system rate stored in Odoo. Out of the box, Odoo values the payment at its own stored rate, leaving you to work out and post the difference by hand — a slow, error-prone monthly chore for any business that imports goods or pays overseas suppliers.
This module lets you record what really happened. Enter either the amount that left your bank (in your company currency) or the rate you were charged — the module calculates the other, so the payment ties out to your bank statement exactly. It then posts the foreign-exchange gain or loss for you, with no manual journal entries.
How it works
1. Register payment from the bill
Open the vendor bill and click Register Payment, tick Foreign Exchange, and enter either the amount you actually paid (in your company currency) or the rate you got — the module fills in the other automatically.
2. FX entry posts automatically
On confirmation, the module compares what you paid against the rate the bill was booked at and posts the gain or loss to the exchange-difference accounts already configured in your Odoo (or your company's defaults).
3. Reconcile your bank
At bank reconciliation, match the bank statement line to both the payment and its FX difference entry. Together they equal the actual amount that left your account, so the line balances cleanly.
How it affects your General Ledger
Here is a real example. Your company currency is USD. You receive a vendor bill for 1,000 AUD. At Odoo's system rate (1 USD = 1.407 AUD) the bill is booked at 710.73 USD on the payable. But your bank charges you a rate of 1 USD = 1.3333 AUD, so 750.00 USD actually leaves your account — 39.27 USD more than the booked value.
That 39.27 USD is a foreign-exchange loss. The module posts it for you:
| Account | Debit | Credit |
|---|---|---|
| Foreign Exchange Loss (P&L) | 39.27 | 0.00 |
| Accounts Payable | 0.00 | 39.27 |
The payable is fully cleared, the real cost of 750 USD is reflected in your books, and the variance is recognised as an FX loss in your P&L. When you pay less than the booked value, it reverses — a credit to your FX Gain account instead. The entry is posted to your exchange-difference journal and linked to the payment.
See it in action
1. Enter the amount paid — or the rate
Tick Foreign Exchange and type either figure; the module calculates the other.
2. The FX gain/loss entry posts automatically
On payment, the difference vs. the booked rate is posted and linked back to the payment.
3. Zero configuration — or set your own accounts
Falls back to the company's exchange accounts; override them under Foreign Exchange settings.
Key features
✔ Enter the amount paid or the rate — the module calculates the other
✔ Your books match your bank to the cent on every foreign payment
✔ Automatic FX gain/loss entry, posted and linked to the payment
✔ Zero configuration — uses your company's exchange accounts by default
✔ Works with any company currency and any currency pair
✔ Variance warning above 5% from the system rate
✔ Large-deviation guard — rates over 50% off need an Accounting Administrator
✔ No double-counting — suppresses Odoo's automatic FX entry
✔ Outbound and inbound payments supported
✔ No external dependencies — runs on Odoo.sh and on-premise
Built to be safe
The module validates that the amount, rate and company-currency value agree before a payment can be saved, and prevents same-currency payments being flagged as FX. A warning appears when your rate deviates more than 5% from the system rate, and rates more than 50% off must be confirmed by an Accounting Administrator — a guard against gross data-entry errors, using a role you already have (no extra groups to configure). Odoo's automatic exchange entry is suppressed so the difference is booked exactly once.
Support
Built and maintained by RA Consulting Solutions. Visit racsolutions.com.au for support and more Odoo apps.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module