| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Purchase (purchase) • Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 831 |
| Technical Name |
trdo_purchase_currency_rate |
| License | OPL-1 |
| Website | https://www.truodo.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Purchase (purchase) • Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 831 |
| Technical Name |
trdo_purchase_currency_rate |
| License | OPL-1 |
| Website | https://www.truodo.com |
| Versions | 17.0 18.0 19.0 |
Exchange Rate on Purchase Order
Lock in the exchange rate you actually agreed with your vendor — and carry it automatically through to the vendor bill and inventory valuation, instead of letting Odoo's date-based market rate quietly take over.
What This Module Does
When you raise a purchase order in a foreign currency, Odoo normally converts it using that day's market rate. This module lets you enter the exact rate you negotiated with your vendor instead — shown both ways (e.g. 1 USD = 3.80 AED and 1 AED = 0.26 USD). That same rate then carries forward automatically to the vendor bill and is used to value your stock when the goods arrive, so the order, the bill, and your inventory all agree on one number.
How It Works
- Pick a foreign currency on the order — a starting rate fills in automatically.
- Override it with the rate you actually agreed with your vendor.
- Confirm the order — the rate locks so it can't be changed afterward.
- Create the vendor bill — it picks up the same rate automatically.
- Receive the goods — stock valuation uses that same rate, not the market rate.
Who Should Use This
- Companies that negotiate a fixed exchange rate with vendors instead of using the daily market rate.
- Purchasing and accounting teams who need the PO, bill, and inventory valuation to match exactly.
- Businesses dealing in semi-fixed or pegged currencies (e.g. AED, SAR) where the "market rate" doesn't reflect the real deal.
- Anyone tired of manual exchange-difference journal entries at month-end.
Built by Odoo Experts.
Trusted by Businesses.
Dedicated Support
We stand behind every product we ship, responsive support when you need it most. ✦10-hour free trial included
Industry-Specific Expertise
Deep knowledge across manufacturing, retail, services, healthcare, and more — we don't apply generic ERP templates, we tailor solutions to your sector.
Fast & Phased Implementation
Our agile delivery model gets your core ERP live quickly, then scales with your needs — reducing risk and accelerating ROI.
Email us
sales@truodo.com
+91 99255 58791
https://www.linkedin.com/company/truodo-solutions
FAQ
Everything worth knowing before you install. Still unsure about something specific?
Related apps
you might need
Browse all apps →
Manual Currency Rate per Transaction
The companion app this module builds on — brings manual currency rates to invoices and journal entries across all of Accounting.
Stock Effective Date
Set an effective date on inventory transfers before validation.
Minimum Order Amount | Restrict Orders
Restrict low-value orders by enforcing a minimum cart amount during checkout.
Enable Multi-Currency & Activate a Foreign Currency
Go to Settings → Accounting, scroll to the Currencies section, and Then click through to Currencies and activate the foreign currency you'll be purchasing in (for example USD, EUR, or AED) — make sure it has at least one exchange rate set.
Settings → Currencies → Activate a foreign currency
Create a Purchase Order in a Foreign Currency
Create a new Request for Quotation and select your vendor. Change the order's Currency field to the foreign currency you activated. As soon as you do, this module's bidirectional rate widget appears just below the currency field, pre-filled automatically with today's market rate as a convenient starting point.
New RFQ → Pick Vendor → Change Currency
Override the Rate to Match What You Agreed
Type the rate you actually negotiated with your vendor into either side of the widget — "1 [Company Currency] = X [Order Currency]" or "1 [Order Currency] = X [Company Currency]". Whichever side you edit, the other field updates instantly to stay mathematically consistent.
Edit either rate field — the other side updates automatically
Add Products & Review the Total
Add your order lines as usual — products, quantities, and unit prices in the order's currency. The order's company-currency total is calculated using your manual rate instead of the date-based market rate, so the figure you see is the true cost that will land in your accounting currency.
Order total reflects your manual exchange rate
Confirm the Purchase Order
Click Confirm Order. The moment the order becomes a confirmed Purchase Order, both rate fields automatically switch to read-only — locking in the agreed rate so it can't be changed after the fact.
Confirm Order → Rate fields become read-only
Create the Vendor Bill
Create the vendor bill from the confirmed order — whether through Create Bill, the Bill Matching screen, or any other standard route. The bill is generated in the same currency, using the exact same rate as the purchase order — no need to re-enter or correct it.
Create Bill → Same currency rate carried over
Still Works via Manual Auto-Complete
Even if a bill is created separately and the purchase order is linked afterward through Odoo's Auto-Complete field, the module re-applies the correct rate. This is the trickiest path to get right — Odoo's own auto-complete logic normally resets the rate to a freshly-fetched market value right after filling the lines, and this module quietly corrects it back.
Manual Auto-Complete → Rate still matches the original PO
Receive the Goods
Validate the receipt linked to the purchase order as you normally would. Behind the scenes, the module values the incoming stock moves using your manual rate — not the market rate on the day the goods happen to arrive.
Validate Receipt → Stock valued with the manual rate
Inventory Valuation Stays Aligned
For products costed with FIFO or Average Cost (AVCO), the product's running cost updates using your manual rate, keeping the purchase order total, the vendor bill amount, and the inventory valuation report all telling the same story.
- Purchase order total reflects the manual rate
- Vendor bill carries the same rate, with no re-entry needed
- Stock valuation layer uses the same rate for FIFO/AVCO products
- No manual exchange-difference journal corrections needed
Product cost reflects the agreed exchange rate
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