Odoo and Adobe Commerce integration
Odoo runs your accounting, purchasing, and inventory. Adobe Commerce runs your online storefronts and B2B sales. Connecting the two keeps your revenue records, GL accounts, and customer master data in sync. Orders and invoices from Adobe Commerce post into Odoo's general ledger automatically, allocated to the correct GL account and cost center for each line item, without re-keying. Customer information flows both ways so your sales team in Commerce has current address and contact data from Odoo, and your finance team in Odoo sees the same customer records that your storefront is selling to.
What moves between them
The main flow runs from Adobe Commerce into Odoo. Orders and invoices from Commerce are polled or pushed via webhook and posted into Odoo's general ledger as journal entries, mapped to GL accounts and cost centers based on product category and order shipping address. Customer records and product catalogs flow in both directions so customer address changes in Odoo sync back to Commerce and new products created in Odoo are available for selling in Commerce. GL postings are read-only in Commerce, so ml-connector never writes financial entries back to the storefront.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For Odoo, it builds the base URL from the customer's instance name and authenticates with the API key via Bearer token on JSON-2 endpoints or via XML-RPC session. For Adobe Commerce, it determines whether the deployment is PaaS or SaaS and uses the appropriate OAuth variant (1.0a or 2.0). If webhooks are available and enabled, ml-connector listens for order and invoice events; if not, it polls on a schedule you define. When an invoice arrives, ml-connector maps each Commerce line item to an Odoo GL account and cost center based on configurable rules (product category, order region, customer segment), then posts the journal entry with full line-item detail and audit links. Both platforms return rate-limit headers; ml-connector respects them and backs off exponentially. Every record is logged with source IDs, timestamps, and mapping decisions so any invoice can be traced bidirectionally.
A real-world example
A mid-size retailer runs Odoo for accounting and inventory and Adobe Commerce for its online storefront and B2B portal. Before the integration, the accounting team exported orders and invoices from Commerce daily, manually mapped line items to the correct GL accounts and cost centers in Odoo based on product type and order region, and posted the journals by hand. This process took four hours per day and introduced manual keying errors. With Odoo and Commerce connected, invoices post automatically as journal entries with the correct GL accounts and cost centers assigned based on the order's product category and shipping address. The accounting team now spends 20 minutes reviewing the audit log instead of four hours on data entry, and month-end close is faster because revenue is already reconciled.
What you can do
- Post Adobe Commerce invoices into Odoo's general ledger, allocated to the correct GL account and cost center based on product category and order shipping address.
- Keep customer records and contact information synchronized between Odoo and Adobe Commerce in both directions.
- Map product catalogs and pricing from Odoo to Adobe Commerce so new products created in your ERP are immediately available for sale.
- Handle API key authentication for Odoo and OAuth 1.0a or 2.0 for Adobe Commerce, and listen for webhooks or poll on a custom schedule.
- Track every invoice posting with full audit trail and bidirectional source IDs, so any transaction can be traced from Commerce to Odoo GL and back.
Questions
- Which direction does data move between Odoo and Adobe Commerce?
- The main flow is Commerce into Odoo. Invoices and orders move from Adobe Commerce into Odoo's general ledger as journal entries, while customers and products are synchronized in both directions so both systems stay aligned. Odoo GL accounts are read-only to Commerce, so ml-connector never writes financial entries back to the storefront.
- Does Adobe Commerce need to be PaaS or SaaS, and which authentication does ml-connector use?
- ml-connector supports both. PaaS deployments use OAuth 1.0a integration credentials (consumer key and secret plus access tokens). SaaS deployments use IMS OAuth 2.0 client credentials with a 24-hour token expiry. ml-connector detects the deployment model and applies the correct auth scheme automatically.
- How does ml-connector handle the difference between Odoo's polling and Commerce's webhooks?
- If Adobe Commerce version 2.4.4 or later is available and webhooks are enabled, ml-connector listens for order and invoice events synchronously. If webhooks are not available or your version is older, ml-connector falls back to polling on a schedule you define, using high-water-mark timestamps to fetch only records that have changed since the last sync.
Related integrations
More Odoo integrations
Other systems that connect to Adobe Commerce
Connect Odoo and Adobe Commerce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started