$ 116.43
In-App Purchases| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Subscriptions (sale_subscription)
• Invoicing (account) • Discuss (mail) • Sales (sale_management) |
| Community Apps Dependencies | Show |
| Lines of code | 638 |
| Technical Name |
sale_subscription_invoice_company_currency |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Subscriptions (sale_subscription)
• Invoicing (account) • Discuss (mail) • Sales (sale_management) |
| Community Apps Dependencies | Show |
| Lines of code | 638 |
| Technical Name |
sale_subscription_invoice_company_currency |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 18.0 19.0 |
Sale Subscription Invoice Company Currency
Generate sales subscription invoice in the configured currency.
Overview
Subscriptions are often signed in a customer-friendly foreign currency, but finance still wants the recurring invoices to be posted in the company's reporting currency. This module switches the subscription invoice currency at posting time — the sale order keeps its negotiation currency, but the recurring invoice is issued either in the company currency or in the partner's invoicing currency, based on a dedicated company-level setting.
The behaviour mirrors sale_invoice_company_currency (which handles
regular sale orders), but uses a separate setting and a dedicated
_prepare_invoice override that only acts on is_subscription
orders, so the two policies can be tuned independently.
Like its sibling, the module also enriches the invoice report: an optional line in the header prints the conversion rate used, and an optional column in the totals block shows the original subscription currency amounts next to the posted ones, so the customer can still read the totals in the currency of their contract.
Built & supported by NextERP Romania
Romanian Odoo specialists, here for the long run — from implementation to localization and day-to-day production support.
What we do
Odoo Solutions
From quick-start rollouts to multi-company deployments and custom modules built for your processes.
Romanian Localization
SAF-T (D406), e-Factura, e-Transport, D300 / D390 / D394, ANAF integration, full chart of accounts and fiscal positions.
Our Services
Implementation, customization, migration, integration, support and consultancy — Romanian-speaking, SLA-backed.
Features
- Dedicated setting for subscriptions — Subscription Switch Invoice to Other Currency is a separate company option from the one used for ordinary sales, so subscription billing can be re-currencied without affecting one-shot sale invoices.
- Three modes — None (standard behaviour, invoice in the subscription currency), Company (always invoice in the company currency) and Partner (use the partner's Switch Invoicing Currency if set, otherwise fall back to the company currency).
- Subscription-scoped override —
_prepare_invoiceonly kicks in when the order is a subscription; non-subscription invoices are delegated back to the standard Odoo flow. - Rate at invoice date — recurring line
price_unitis converted to the target currency using the Odoo rate of the invoice date, both for prepaid and postpaid plans. - Optional conversion rate on the report — Print Currency Rate
For Subscription Switched Invoices adds
1 X = n.nnnn Yto the subscription invoice header. - Optional dual-currency totals — Print Currency Amounts For Subscription Switched Invoices prints an extra column in the totals block with subtotal, tax and total expressed in the subscription's original currency.
- Pairs cleanly with
sale_subscription_group_invoice— grouped subscription invoices are produced in the configured target currency just like individual ones.
Configuration
The module reuses the Switch Invoicing Currency partner field
from sale_invoice_company_currency and adds a dedicated company
setting for subscriptions.
-
As a Sales Administrator, open Sales → Configuration → Settings and locate the Subscription Switch Invoice to Other Currency option under the Invoicing group.
-
Pick one of the three modes:
- None — keep standard Odoo behaviour (subscription invoice posted in the subscription currency).
- Company — every recurring invoice is posted in the company currency.
- Partner — use the partner's Switch Invoicing Currency if it is set; otherwise fall back to the company currency.
-
Optionally tick Print Currency Rate For Subscription Switched Invoices to add the conversion rate to the report header, and Print Currency Amounts For Subscription Switched Invoices to print a second column with the subscription-currency amounts in the totals block.

-
To pin a specific currency on a customer (used in Partner mode), open Contacts → → Accounting and set the Switch Invoicing Currency field provided by
sale_invoice_company_currency.
The setting is stored on res.company, so multi-company databases
can apply a different policy per branch. Regular sale invoices are
unaffected — they continue to follow the
sale_switch_invoice_in_other_currency setting.
How it works
Once the company setting is on, subscription billing runs as usual — the currency switch happens silently at every recurring-invoice run.
-
Create or open a subscription quoted in a foreign currency (for example, an EUR subscription on a RON company). The subscription form and the customer portal keep showing EUR.

-
Each time the recurring-invoice cron fires, the generated
account.moveis created directly in the target currency (company currency or the partner's Switch Invoicing Currency). Line prices are converted at the invoice-date rate. Manual Generate Invoice actions on the subscription follow the same path.
-
Print the subscription invoice. If the printing options are enabled, the report adds:
- the conversion rate (
1 EUR = n.nnnn RON) in the header when Print Currency Rate For Subscription Switched Invoices is on; - a second amounts column in the totals block — subtotal, tax and total in the original subscription currency — when Print Currency Amounts For Subscription Switched Invoices is on.

- the conversion rate (
The module only intervenes on is_subscription orders, so regular
sales remain governed by sale_invoice_company_currency. When both
modules are installed, the two policies can be configured
independently per company.
Versions
19.0.1.0.0 (2026-05-25)
- Changelog tracking starts at this release.
Discover the NextERP suite
Other modules from the same publisher, built to work together.
NextERP Romania
Odoo implementation, customization, Romanian localization and long-term support since 2018.
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