For years, moving stock between warehouses owned by different companies inside the same Odoo database meant playing a paperwork game. Company A would generate a sales order, Company B would receive a matching purchase order, both sides would confirm, and only then would the actual goods move. It was technically correct — each legal entity needed its own transaction trail — but operationally absurd for organizations that simply needed to shift inventory from one building to another.
That friction is now gone. Odoo 20 introduces direct inter-company warehouse replenishment, and it arrives alongside a pair of compliance features that quietly address two of the platform’s longest-standing localization gaps: customs import documentation for India and structured tax reporting for the United States.
Cross-Company Stock Moves Without the Order Overhead
The change is deceptively simple on the surface. Open any warehouse’s settings in a multi-company database, and the “Resupply From” field now lists warehouses belonging to other companies — not just those within the same legal entity. Select one, and Odoo will create direct transfer orders between the two locations without generating the intermediate sales and purchase orders that the old workflow required.
Under the hood, the system routes goods through two new transit locations: “Inter-warehouse transit” for movements within the same company (which already existed conceptually but is now explicitly labeled) and “Inter-company transit” for movements that cross legal entity boundaries. The distinction matters for accounting — inter-company transfers still need to be valued correctly on each entity’s books — but the operational team never has to think about it.
For businesses running multiple subsidiaries from a single Odoo instance, the practical impact is significant. A distribution subsidiary that stocks a retail subsidiary’s warehouse no longer needs someone to confirm a purchase order on the receiving end. The replenishment rules trigger, the transfer happens, and both warehouses update their stock levels automatically.
Tracking is handled through the Moves Analysis report, which gains a new “Intercompany Deliveries” favorites filter. This lets logistics managers monitor cross-company flows in one view without having to reconcile separate sales and purchase reports across entities.
There’s also a new capability for shipping sales orders directly from another company’s warehouse. If Company B receives an order but Company A holds the stock, the system can route fulfillment through Company A’s warehouse without the customer ever knowing the goods came from a different entity. It’s the kind of feature that large retail operations have been cobbling together with custom development for years, and having it native to the platform eliminates a common source of implementation complexity.
India Gets Bill of Entry Support for Customs Imports
India’s import market has grown at a staggering pace over the past decade, and with that growth comes a mountain of customs compliance requirements. At the center of it sits the Bill of Entry — a mandatory declaration that importers must file with Indian Customs for every shipment entering the country. It records the goods being imported, their declared value, applicable duties, and the port of entry.
Odoo’s India localization now includes native support for Bill of Entry documentation. Businesses importing goods into India can record and track their customs declarations directly within the accounting module, linking them to the corresponding vendor bills and inventory receipts. This closes a workflow gap that previously forced Indian importers to manage their customs paperwork outside the ERP or rely on third-party modules.
The timing is intentional. India’s customs authority has been tightening digital filing requirements, and businesses that can’t produce accurate Bill of Entry records face delays at ports and potential penalties. Having the documentation integrated into the same system that manages purchase orders and inventory receipts means fewer transcription errors and a cleaner audit trail.
US Localization Finally Gets Proper Tax Reporting
The United States has always been an awkward market for ERP localization. Unlike the EU, where VAT reporting follows relatively standardized structures, US tax obligations vary by state, county, and sometimes city. Odoo has handled basic US accounting for years — chart of accounts, GAAP-aligned financial statements, Avalara integration for sales tax calculation — but structured tax reporting has been conspicuously absent.
That gap narrows with the addition of a proper tax report to the US localization package. The report aggregates tax data across the configured tax codes and produces the structured output that accountants need for filing. It’s not a replacement for specialized tax preparation software, but it gives US-based businesses the same kind of built-in tax visibility that European and Asian localizations have offered for years.
For small and mid-sized businesses that have been exporting their Odoo data into spreadsheets to assemble tax reports manually, this is a meaningful time saver. The report pulls directly from posted journal entries, so the numbers are always current and traceable back to individual transactions.
Smaller Wins: Belgian POS Payments and Smarter Quotations
A few smaller updates round out the release. Retailers in Belgium using Bancontact Pay on their point-of-sale terminals now get step-by-step guidance for locating their API key and Payment Profile ID — two values that the payment provider buries deep in its merchant portal and that have historically been a common support ticket for Odoo partners setting up Belgian POS installations.
On the sales side, the quotation form receives an update to its Description column handling. It’s the kind of refinement that only matters when you’re generating dozens of quotes a day, but for sales teams that live in the quotation builder, small improvements to column behavior compound into real time savings over a quarter.
Odoo’s accounting module also picks up an improvement to its purchase order matching logic. The matching engine — which reconciles vendor bills against confirmed purchase orders — gets smarter about handling partial deliveries and price variations, reducing the number of manual interventions required during the monthly close.
The Pattern Behind the Updates
Taken individually, none of these features will make a headline. But together they reveal where Odoo is focusing its energy in version 20: removing operational friction for multi-entity businesses and filling localization gaps in high-growth markets. The inter-company warehouse feature alone could save organizations with complex corporate structures hundreds of hours per year in manual order processing.
The compliance additions for India and the US reflect a broader truth about ERP adoption in those markets. Businesses don’t switch ERPs for a tax report, but they definitely avoid ERPs that don’t have one. By closing these gaps, Odoo removes a common objection from the sales conversation in two of the world’s largest economies.