Skip to main content
Inter Company Stock Transfer — A build-to-order Odoo module that automatically generates the counterpart receipt or delivery  — 1/1Illustrative preview

A build-to-order Odoo module that automatically generates the counterpart receipt or delivery order in the

partner company whenever stock moves between your Odoo companies.

ECOSIRE scopes, builds, installs and supports it for your exact multi-company setup.

What is Inter Company Stock Transfer?

A build-to-order Odoo module that automatically generates the counterpart receipt or delivery order in the partner company whenever stock moves between your Odoo companies. ECOSIRE scopes, builds, installs and supports it for your exact multi-company setup. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Detects validated `stock.picking` state transitions in the source company and creates the matching counterpart receipt or delivery in the destination company automatically
Bidirectional `Many2one` link stored on each `stock.picking` so the source and counterpart documents are always traceable to one another
Runs counterpart creation in the target company context with `sudo()` so multi-company record rules and access rights are honoured, not bypassed
Carries products, quantities, unit of measure, and source/destination locations across the company boundary with UoM conversion respected
Optional lot/serial number and expiry-date propagation onto the counterpart move lines for traceable and perishable goods
Per-company-pair configuration for target warehouse, operation type, and whether the counterpart auto-validates or stays in `draft` for a receiving check
Configurable location mapping so each company's warehouse topology and internal locations are matched correctly
Idempotency guard prevents duplicate counterpart pickings if a transfer is re-confirmed or the automated action re-fires
Implemented via `base.automation` / server action on state change rather than brittle overrides, keeping the module upgrade-safe
`ir.model.access.csv` entries plus record rules scope generated documents to the companies each user belongs to
Optional QWeb inter-company transfer note/report for the physical goods movement and audit trail
Audit log recording every generated counterpart pair with source picking, target picking, user, and timestamp
Counterpart linkage readable over the standard XML-RPC/JSON-RPC API for WMS or middleware integration
Packaged as a single upgrade-safe addon with its own `__manifest__.py`, targeting Odoo 17.0, 18.0, or 19.0 (Community or Enterprise)

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

When you run more than one company inside a single Odoo database, stock genuinely moving between them creates a reconciliation headache. A warehouse operator confirms a delivery from Company A, but nothing lands in Company B until someone manually keys in a matching receipt — and the two picks drift out of sync, valuations diverge, and month-end inventory never quite ties out. Odoo's native inter-company rules can mirror sales and purchase documents between companies, but out of the box they do not reliably create a fully-linked, valuation-correct counterpart stock.picking for every warehouse transfer, especially when you are moving stock without a customer invoice or across different warehouses, operation types, and unit-of-measure setups. Teams end up bridging that gap with spreadsheets and double data-entry.

ECOSIRE builds a made-to-order Odoo module that closes this loop. When a validated outgoing transfer is detected in the source company, the module creates the matching counterpart document in the destination company — a receipt against your delivery, or a delivery against your receipt — with the correct partner company, warehouse, operation type, source/destination locations, products, quantities, lots/serials and unit of measure carried across. Technically it hangs off stock.picking/stock.move state transitions (an @api.depends-driven flag plus a server action or base.automation rule), runs the counterpart creation with sudo() in the target company's context so multi-company record rules are respected, and stores a bidirectional link between the two pickings (a custom Many2one on each side) so the pair is always traceable. We add ir.model.access.csv entries and record rules so users only see documents for companies they belong to, plus configurable per-company-pair settings (which warehouse and operation type to post into, whether to auto-validate or leave the counterpart in draft for review, and how to map locations).

The build is grounded in the way your business actually operates. During scoping we map each company pair, your warehouse and location topology, whether you need lot/serial and expiry propagation, landed-cost or inter-company price handling, and whether counterpart documents should auto-confirm or wait for a receiving check. We wire optional QWeb transfer notes, an audit log of every generated pair, and — where you integrate external systems — expose the linkage over the standard XML-RPC/JSON-RPC API so a WMS or middleware can read both sides. The module is delivered as a clean, upgrade-safe addon in its own __manifest__.py, targeting your exact Odoo series (17.0, 18.0 or 19.0) and respecting Community vs Enterprise differences in the inventory app.

Delivery is build-to-order: after a short scoping call we confirm the company-pair matrix and behaviour rules, then build, test on a staging copy of your database, run UAT with your team, and deploy to production — typically one working week from confirmed scope. You receive the full source, documentation, a training session and a post-go-live support window. Pricing starts from $999 (indicative, single-company-pair base scope); additional company pairs, lot/serial and landed-cost propagation, multi-warehouse mapping, and integration with external WMS or middleware increase the quoted scope.

What you get

  • Installable, upgrade-safe module source code built for your exact Odoo series (17.0 / 18.0 / 19.0) and edition
  • Installation and configuration on your environment, including per-company-pair warehouse, operation-type, and location mapping
  • Technical documentation covering models, fields, automated actions, security rules, and configuration options
  • User guide plus a live training session for warehouse and inventory teams
  • UAT on a staging copy of your database with a documented rollback plan before production deployment
  • Post-go-live support window for defect fixes and configuration adjustments
  • Git repository handover with full commit history and tagged release
  • Configuration sheet documenting the agreed company-pair matrix and counterpart behaviour rules

Who this is for

Multi-company operations manager

Runs two or more legal entities in one Odoo database and needs stock physically moving between them to post accurately on both sides without their team re-keying every receipt by hand.

Inventory / warehouse lead

Owns picking accuracy and month-end stock counts. Wants the counterpart document created and reconciled automatically so on-hand quantities and valuations tie out across companies.

Odoo administrator or internal ERP owner

Maintains the Odoo instance and needs an upgrade-safe, well-documented addon with proper access rules and a git handover, not an unmaintainable pile of view overrides.

Group finance / controller

Needs inter-company inventory movements to be consistent and auditable so consolidation and valuation reconciliation are clean at period close.

How Inter Company Stock Transfer Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Counterpart document creationAuto-creates a linked, valuation-correct receipt/delivery in the partner companyPossible but must be designed and built from zero in-houseOften mirrors sales/purchase docs, not always a linked warehouse transferNo automatic counterpart picking for internal stock moves
Fit to your setupScoped to your exact company pairs, warehouses, and location topologyFully bespoke, but you own all analysis and reworkGeneric assumptions; you bend your process to the appStandard behaviour only, no per-pair tailoring
Lot/serial & expiry propagationConfigurable propagation onto counterpart move linesAchievable with significant extra development effortVaries; frequently limited or absentNot handled across the company boundary automatically
Upgrade safetyUpgrade-safe addon via automated actions, no fragile core overridesDepends entirely on your developer's disciplineUnknown code quality; may break on version bumpsN/A — no such feature to maintain
Odoo version coverageBuilt and certified for your 17.0, 18.0, or 19.0 targetWhatever you commission and maintain yourselfMay lag new Odoo releasesShips with the version, base behaviour only
Support & accountabilityPost-go-live support window plus a single accountable vendorRests on internal staff availabilityTicket queue with variable responseGeneral Odoo support, no feature-specific help
Ownership & handoverFull source plus git repo handover, you own the codeYou own it, but also all the risk and costOften obfuscated or license-lockedCore code, not yours to modify safely
Total cost & timeFixed quote after scoping; typically one working weekHighest cost and longest, unpredictable timelineLow upfront, but customization and gaps add upFree, but leaves the reconciliation gap unsolved

Frequently Asked Questions about Inter Company Stock Transfer

How long does delivery take?

This is a build-to-order module, not an off-the-shelf download. After a scoping call to confirm your company-pair matrix and counterpart behaviour rules, typical delivery is one working week from confirmed scope, including a build on staging, UAT with your team, and production deployment. Larger multi-pair or integration scopes may extend that, and we agree the timeline in writing before starting.

How does pricing and scoping work?

Pricing starts from $999 as an indicative from-price for a single-company-pair base scope. We do not quote a firm price until a short scoping call establishes the exact requirements — number of company pairs, lot/serial and landed-cost handling, warehouse mapping, and any external integration. After scoping you receive a fixed written quote, and the price does not change unless you change the scope.

What about support and future Odoo updates?

Every build includes a post-go-live support window for defect fixes and configuration adjustments. The module is written as an upgrade-safe addon using automated actions and clean model extensions rather than fragile core overrides, so it carries forward cleanly. When you move to a newer Odoo series (for example 18.0 to 19.0) we can quote a migration and re-certification of the module against that version.

Does this replace Odoo's native inter-company rules?

It complements them. Odoo core can mirror sales and purchase documents between companies, but it does not reliably produce a fully-linked, valuation-correct counterpart warehouse transfer for every internal stock move. We build precisely that missing counterpart-picking logic and link the two documents together, working alongside your existing multi-company configuration rather than ripping it out.

Will it work with our lots, serial numbers, and specific warehouses?

Yes — that propagation and mapping is exactly what we scope. We map each company's warehouses, operation types, and internal locations, and we can carry lot/serial numbers and expiry dates onto the counterpart move lines where you need full traceability. These behaviours are configured per company pair during the build.

Can it auto-confirm the counterpart, or should someone check it first?

Both are supported and configurable per company pair. You can have the counterpart receipt or delivery auto-validate on creation for fully-trusted internal flows, or leave it in draft so the receiving side confirms it after a physical check. We set your preferred default during scoping and it remains adjustable in configuration.

Do we own the code, and can it integrate with other systems?

Yes. You receive the full source and a git repository handover with commit history, so you own and can maintain the module. The source and counterpart pickings are readable over Odoo's standard XML-RPC/JSON-RPC API, so an external WMS, middleware, or reporting tool can consume both sides of every transfer. External integration is scoped and quoted as part of the build.

Request a quote

Inter Company Stock Transfer

A build-to-order Odoo module that automatically generates the counterpart receipt or delivery order in the partner company whenever stock moves between your Odoo companies. ECOSIRE scopes, builds, installs and supports it for your exact multi-company setup.

  • Detects validated `stock.picking` state transitions in the source company and creates the matching counterpart receipt or delivery in the destination company automatically
  • Bidirectional `Many2one` link stored on each `stock.picking` so the source and counterpart documents are always traceable to one another
  • Runs counterpart creation in the target company context with `sudo()` so multi-company record rules and access rights are honoured, not bypassed
  • Carries products, quantities, unit of measure, and source/destination locations across the company boundary with UoM conversion respected

Request a Quotation

Tell us about your Inter Company Stock Transfer requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.