Odoo and Cin7 integration
Odoo runs your accounting and inventory planning. Cin7 Core manages purchase orders, suppliers, and stock across multiple warehouses. Connecting the two keeps your purchase ledger and inventory balances aligned without manual re-entry. Purchase invoices from your Cin7 suppliers flow into Odoo's accounts payable, mapped to the correct cost centers, and inventory stock counts refresh automatically so your GL inventory account matches what Cin7 tracks across all locations.
What moves between them
Purchase orders and supplier invoices from Cin7 flow into Odoo's purchase and accounting modules on a daily schedule. Supplier master data in Cin7 maps to Odoo partners, and Cin7 chart of accounts map to Odoo GL accounts. Inventory stock changes in Cin7 trigger polling to update product stock levels in Odoo, keeping the inventory balance sheet current. The direction is primarily Cin7 to Odoo, since Odoo is the financial source of record.
How ml-connector handles it
ml-connector stores both API keys encrypted and uses XML-RPC for older Odoo versions and JSON-2 for Odoo 19 and later, chosen based on the instance's detected version. It polls Cin7's purchase and supplier endpoints on a daily schedule aligned with your purchasing close, maps each supplier ID and GL account code to its Odoo equivalent using a mapping table, and posts purchase invoices into Odoo's account.move records. Stock updates from Cin7 are applied to Odoo product.product records using a high-water-mark timestamp to avoid re-processing. Because Odoo's API respects row-level permissions, the integration user must have purchase and accounting access. Cin7's read-only chart of accounts means invoice lines are matched to existing Odoo GL accounts during mapping; new accounts cannot be created through the integration.
A real-world example
A product-based manufacturer uses Odoo for general ledger and purchase order management, and Cin7 Core to track multi-warehouse inventory and supplier orders. Before the integration, the purchase team received a daily purchase summary from Cin7, manually keyed supplier invoices into Odoo's accounts payable, and quarterly inventory counts in Odoo were reconciled by hand against Cin7's stock levels. With Odoo and Cin7 connected, supplier invoices flow into Odoo's GL automatically each day, inventory stock syncs hourly so the balance sheet is always current, and the purchase-to-pay cycle runs without re-entry.
What you can do
- Sync purchase orders and supplier invoices from Cin7 into Odoo's accounts payable, mapped to the correct GL accounts and cost centers.
- Align supplier master data from Cin7 to Odoo partner records so invoice lines match approved suppliers.
- Refresh inventory stock balances in Odoo from Cin7 on an hourly schedule, keeping the inventory balance sheet current across multiple warehouse locations.
- Authenticate Odoo with an API key via XML-RPC or JSON-2 depending on version, and Cin7 with custom header-based API keys.
- Poll both systems on a cadence you control, with full audit trail on every record and replay capability if downstream posting fails.
Questions
- Which direction does data flow between Odoo and Cin7?
- The primary flow is Cin7 to Odoo. Purchase orders, supplier invoices, and inventory stock movements from Cin7 flow into Odoo to keep accounts payable and inventory balances current. Supplier and product master data is synced bidirectionally so Odoo reference records match Cin7. Odoo is treated as the financial record of authority, so GL postings from Odoo do not flow back into Cin7.
- How does the integration handle Odoo's row-level access control?
- ml-connector respects Odoo's record-level permissions based on the integration user's assigned access rights. If the integration user does not have access to a purchase order, cost center, or GL account, those records are skipped during the sync. Ensure the integration user role includes access to the purchase, accounting, and inventory modules.
- Does the integration work with both Odoo Online and self-hosted instances?
- Yes. ml-connector detects the Odoo base URL and version, and uses the appropriate API (XML-RPC for Odoo 18 and earlier, JSON-2 for Odoo 19 and later). Self-hosted instances require a network route and the Custom pricing plan for API access. Odoo Online users must have a password set by an administrator before XML-RPC authentication works.
Related integrations
More Odoo integrations
Other systems that connect to Cin7
Connect Odoo and Cin7
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started