Odoo Shopify integration: orders and stock in sync
Brainvire connects a Shopify store to Odoo so orders, customers, stock and shipments move on a schedule instead of by hand — and so you know which system owns the number when the two disagree.
A Shopify ERP integration: a link between a Shopify store and an Odoo database so orders, customers, stock and shipments move on a schedule, and the books are kept in Odoo, not rebuilt from exports.
A Shopify Connector in Odoo 19. Its setup page states the integration only works with Odoo.sh and requires version 19.0. Odoo 18’s documentation has no Shopify connector at all.
Orders, products, customers, returns and refunds come from Shopify. Stock and fulfillments move both ways. Invoices and payments are created in Odoo, not synced.
Scoped inside the Odoo program it belongs to: small 8 to 12 weeks, mid-market 12 to 24 weeks, multi-entity 6 to 12 months. Brainvire’s bands, not Odoo’s.
/ Before you connect anything
Does your Shopify operation look like any of this?
Four patterns we see in stores that outgrew exports and a spreadsheet.
The count is wrong in both places
The storefront sells what the warehouse already picked, and somebody corrects it by hand twice a day.
Orders and customer data are re-keyed
A person reads the Shopify admin and types it into the system that actually ships and invoices.
Refunds never reach the books
The customer is refunded in Shopify, the credit note is remembered later, and the month-end difference is unexplained.
A second store brings the spreadsheet back
Another store, another warehouse or a marketplace, and the workaround you built for one channel stops holding.




Trusted by enterprise Odoo teams worldwide












/ The mapping, before the build
What actually syncs, in which direction, and on what trigger?
“Two-way sync” is a slogan. This is the real shape of it, from Odoo’s own connector documentation.
| Data | Direction and trigger | What that means for you |
|---|---|---|
| Orders | Shopify → Odoo, on a scheduled action every 10 minutes | Only confirmed Shopify orders are imported. Cancel in Shopify and the Odoo order is canceled on the next run. |
| Inventory | Both ways — pushed to Shopify after every order sync | Odoo sends free quantity — on hand minus reserved — at the mapped location. Pulling stock back is a repair action, not a routine. |
| Customers | Shopify → Odoo, with the order | Matched on email and billing name. Addresses become child contacts; a failed country mapping raises an activity. |
| Fulfillments and tracking | Both ways, depending on where you handle delivery | Validate in Odoo and the shipment is pushed with carrier and tracking. Fulfill in Shopify and both come back. |
| Products and variants | Shopify → Odoo, on the order or product fetch | Matched on SKU to the Odoo internal reference. No SKU, no import — and variants arrive as independent products, not Odoo attribute lines. |
| Returns | Shopify → Odoo, once the return is closed in Shopify | A return still in progress does not sync, and where Odoo handles delivery, Shopify returns do not sync at all. |
| Refunds and credit notes | Shopify → Odoo, on the order sync | Only if the order carries one posted invoice. The credit note arrives in draft, carrying Shopify’s refund identifier. |
| Invoices and payments | Created in Odoo — not synced from Shopify | With Create Invoice on, a fully paid order posts an invoice and registers payment — unless a rounding adjustment line was added. |
| Payouts, processor fees, chargebacks | Not covered by the connector | None of the three appears in the connector documentation. Reconciling a net settlement is a manual routine or a build. |
Directions and triggers follow the Odoo 19 Shopify Connector documentation. Stock in depth: Odoo Inventory and WMS; the ledger side: Odoo Accounting.
/ Native, packaged, or built
How do you integrate Shopify with Odoo ERP?
Four routes, and not interchangeable: your Odoo version and your hosting decide which are open to you.
The native Odoo Shopify connector
Orders, products, customers, inventory, fulfillments, returns and refunds, configured rather than coded. The prerequisite is the one people miss: its setup page states it only works with Odoo.sh, and requires version 19.0.
A third-party Odoo connector from the App Store
Several vendors publish Shopify connectors — Emipro Technologies, TeqStars and VentorTech among them. You inherit their release schedule and version coverage, so check both before the next upgrade, not during it.
A build on the Odoo External API
When the flow sits outside what a packaged connector names — payouts, B2B price lists, metafields, a marketplace beside the store — we build on Odoo's External API and Shopify's Admin API, and own the mapping, retries and reconciliation.
No integration at all
The cheapest integration is the one you avoid. One store shipping from one place may be better served by Shopify plus bookkeeping — or by moving the storefront onto Odoo commerce, so there is no interface to keep alive.
Brainvire does not publish a Shopify connector — see the App Store listings for who does, and what we do publish. Custom work uses the documented Odoo External API.
/ Delivery
How does Brainvire connect Shopify to Odoo?
Small 8 to 12 weeks, mid-market 12 to 24 weeks, multi-entity 6 to 12 months. A named owner and a working demo at each stage.
Discovery
We follow one real order end to end — placed, picked, shipped, invoiced, then refunded — and name the system of record for stock, price and the customer. You provide a Shopify admin, a catalog export and a month of orders.
Design
The mapping is written down before anything is built: SKU rules, the location map, taxes and fiscal positions, what a refund does to the ledger, and which exceptions a human is expected to clear.
Build and data
Connector configured or module built, catalog and locations aligned, then real orders replayed into a test database — including a partial fulfillment, a return and a refund, because those are what break.
Cutover
After successful testing, both systems run for a period until stock and the ledger agree, then we switch on a quiet day and stay through the first full refund cycle.
/ Where it goes wrong
What breaks in a Shopify integration, and who owns the number?
Each is a decision, not a defect. Settle it in design and the integration is boring; leave it to the connector and you meet it mid-sale. Shopify’s notes on inventory apps and webhook delivery come first.
Two systems, one count
Shopify moves units from available to committed the moment an order is placed; Odoo pushes free stock after the sync. Name the owner, or both will adjust it.
Rounding, and the invoice that is not created
Where the totals differ Odoo adds an adjustment line — and an order that needed one is not auto-invoiced, even when Shopify says it is paid.
Three currencies on one order
Shopify’s Markets documentation carries presentment, shop and settlement, and calls settlement the most appropriate for accounting. Decide which you record.
Multiple stores, locations and SKUs
Each store needs its own Odoo account record, each Shopify location a mapped Odoo location, and every variant a SKU. One unmapped location silently drops its stock.
/ Odoo and Shopify, on the record
Where have we connected Shopify to Odoo ERP before?
Three clients: two published anonymously at their own choice, one named. Wider library: retail case studies.
North American Cutting Tools Seller
A cutting-tools brand already selling on Shopify, with a field sales team behind it. Brainvire connected the store to Odoo for real-time order detail, built a commission module that pays a representative once the customer’s invoice is paid, automated tax-exemption certificates, added dropship and direct-from-warehouse routes, and moved the books off QuickBooks.
Read the case →
Automobile Cleaning Supplies Maker
A US maker of detailing tools for the marine, RV and automotive trades ran four separate systems. Brainvire replaced them with Odoo for sales, purchase, inventory, accounting, maintenance and helpdesk, added a dispatch screen where staff reserve stock before delivery, automated bin replenishment, built a picker app, and synced every Shopify order into Odoo.
Read the case →
Colosseum Athletics
A collegiate apparel manufacturer holding more than 400 license agreements, selling through Amazon and Shopify. Odoo runs orders and inventory across both channels, with separate warehouses for Amazon FBA and FBM stock, more than 300,000 historical orders imported, and the platform moved off Odoo.sh to AWS for the volume.
Read the case →
/ The decision
Odoo’s own connector, an App Store app, or a build?
Every claim about Odoo’s connector comes from Odoo’s documentation, every claim about Shopify from Shopify’s.
| Criterion | Odoo’s Shopify Connector | An App Store app, or a build |
|---|---|---|
| Odoo version | Documented for Odoo 19. The Odoo 18 documentation contains no Shopify connector | An App Store app publishes per version; a build targets whatever version you run |
| Hosting | The setup page states the integration only works with Odoo.sh | An app needs Odoo.sh or on-premise, as Odoo Online is not compatible with non-standard apps; a build calls the External API, which Odoo includes only on Custom plans |
| Trigger | Scheduled actions, orders every 10 minutes, and explicitly not webhooks | Can subscribe to Shopify webhooks, though Shopify does not guarantee delivery or ordering and advises a reconciliation job anyway |
| What it covers | Orders, products, customers, inventory, fulfillments, returns, refunds, and invoices raised in Odoo | Whatever you scope, including everything the connector does not name |
| Payouts, fees, metafields, B2B price lists | Absent from the connector documentation | Readable from the Shopify Admin API and the Odoo External API, with the mapping and the error handling yours to own |
| What you carry at upgrade | Odoo’s release cycle, and the Odoo.sh requirement | The maintainer’s cycle, or yours. Shopify ships an API version quarterly and supports each for at least twelve months |
Use Odoo’s connector if you run Odoo 19 on Odoo.sh and your flow sits inside what it covers. Use an app or a build if you are on Odoo 18 or earlier, host elsewhere, or need payouts, marketplaces or B2B pricing too. Integrate nothing if you sell on one store, ship from one place and reconcile a payout once a month. Moving the books at the same time: QuickBooks to Odoo.
/ Questions we are asked
Odoo Shopify integration FAQs.
Does Odoo have a built-in Shopify connector?
Only on Odoo 19, and only on Odoo.sh. Odoo's 19.0 documentation describes a Shopify Connector that syncs orders, products, inventory, deliveries, returns and refunds, and its setup page states the integration only works with Odoo.sh and requires version 19.0. Odoo 18's documentation has no Shopify connector, so there the options are an App Store app or a build.
What actually syncs between Shopify and Odoo, and in which direction?
Odoo's supported-features table is specific. Orders, products, customers, returns and refunds move one way, Shopify to Odoo. Inventory and fulfillments move both ways. Invoices and payments are not synced at all: Odoo creates them. So the honest summary is one-way for records, two-way for stock and shipments, and Odoo-side for the money.
Is the sync real time?
No. Odoo states plainly that the connector does not perform real-time synchronization and does not rely on webhooks; every exchange runs on scheduled actions, with orders pulled every ten minutes and stock pushed after each order sync. A custom build can subscribe to Shopify webhooks instead, but Shopify advises apps to run reconciliation jobs anyway.
Which system should own stock?
Pick one, and write it down before anything is built. With Update Inventory enabled, Odoo pushes the free quantity at the mapped location and Shopify's available count follows Odoo. Pulling stock from Shopify is described as a setup or repair action, not a routine. Two systems both adjusting the same number is how overselling starts.
How do refunds and partial fulfillments land in accounting?
A refund syncs only when the order already carries one invoice in the posted state, and the credit note is created in draft so a person reviews it. Partial fulfillments create backorders in Odoo so shipped and remaining quantities stay separate. Where Shopify and Odoo totals differ by rounding, Odoo adds an adjustment line to match the refund exactly.
Can it handle several stores and several warehouses?
Yes, with mapping. Each Shopify store needs its own account record in Odoo and stays scoped to its own orders, products and inventory, and multi-company setups get one configuration per company. Shopify locations are pulled in and mapped to Odoo stock locations. Map one Odoo location to two stores and those stores then share that stock.
What breaks when we sell in more than one currency?
Shopify's Markets documentation sets out three currencies on an order: presentment, which the buyer agreed to and which refunds are based on; shop, which is back-converted and may not sum perfectly; and settlement, the payout currency, which that documentation calls the most appropriate for accounting. Decide which one your ledger records before go-live.
Do Shopify payouts, fees and chargebacks come across?
Not through Odoo's connector. Payouts, processor fees and chargebacks appear nowhere in its documentation, so reconciling a net settlement to the bank statement is either a manual routine or something we build against the Shopify Admin API. Ask for it explicitly in scope; it is the piece finance teams assume is included and usually is not.
Who keeps the integration working when Shopify changes its API?
Whoever owns the route you chose. Shopify's versioning page states that it releases a new API version every three months and supports each stable version for a minimum of twelve months, with at least nine months of overlap. So an integration is not a one-off build: name who watches the deprecations, and line that up with your Odoo upgrade cycle.
When should we not put Odoo behind Shopify at all?
If you sell on one store, ship from one place, carry a catalog you can still count, and your bookkeeper is content reconciling a payout once a month, an ERP behind the storefront adds a system without removing work. The case for Odoo starts at a second channel, a second warehouse, or stock that has to be right in two places.
What is Shopify ERP integration?
It links the store to the ERP software that runs stock, purchasing and the books, so orders, customer data and inventory levels stop being copied by hand. Shopify stays the customer-facing storefront and Odoo ERP runs the back office. Odoo's documentation says its connector considerably reduces the time spent manually entering Shopify orders into Odoo, which is the manual data entry the connector is built to remove.
Can Shopify be integrated with an ERP system?
Yes. Shopify says its Admin API lets you build apps and integrations that extend and enhance the Shopify admin, and its reference covers orders, customers, products and collections, inventory, and shipping and fulfillment. That is the surface any ERP reads and writes. For an Odoo integration there are three working routes: Odoo's own connector, an app from the Odoo App Store, or a build on both APIs.
Is the Shopify connector available in Odoo 20?
Not in Odoo's documentation yet. The Shopify Connector pages sit in the 19.0 documentation, while the 20.0 documentation, as of September 2026, has no Shopify Connector page, even though Odoo 20 was released that month. Before you plan an Odoo 20 project around the native connector, confirm with Odoo that it is available for your version and hosting.
Which Odoo plan does the integration need?
It depends on the route. The connector's setup page says it only works with Odoo.sh, and Odoo's pricing page lists Odoo.sh on the Custom plan, with the Odoo.sh hosting cost not included. A build needs the External API, which Odoo's documentation says is only available on Custom plans. An App Store app needs Odoo.sh or on-premise hosting, because Odoo Online is not compatible with non-standard apps.
Does Odoo have an API for Shopify integration?
Yes. Odoo's External JSON-2 API, new in version 19.0, exposes models over HTTP at the /json/2 endpoint. The older XML-RPC and JSON-RPC endpoints are deprecated, and Odoo's documentation schedules their remaining services for removal in Odoo 22 (fall 2028), so a new build should target JSON-2. Access requires a Custom plan.
Can Odoo push products and prices to Shopify?
Not with Odoo's connector. Its supported-features table lists products as Shopify to Odoo only, and once an offer is mapped, the Odoo product's cost, description, weight, barcode and image are read only when it is first created. Odoo recommends setting products up in Odoo first, each variant with its own SKU, so no Shopify SKU falls through to the default product. Pushing catalog, prices or metafields from Odoo to Shopify is a build on the Shopify Admin API.
Which data fields does the connector match on?
Products match when the Shopify SKU equals the Odoo internal reference; a Shopify SKU with no match links to a default product unless Create Products is on. Customer information matches on email and billing name, with billing and shipping addresses stored as child contacts. Odoo detects the currency from each order. Data accuracy problems often start with a missing or duplicated SKU.
How are taxes handled between Shopify and Odoo?
With Create Taxes on, the default, Odoo looks for a matching tax on each imported order and creates one if none exists. With it off, taxes come from the order's fiscal position and the product's taxes in Odoo. Shipping arrives as separate order lines, and discounts are deducted before the subtotal to reduce rounding differences between Shopify and Odoo totals.
How do order status and fulfillment status sync?
Only orders confirmed in Shopify are imported, and a cancellation in Shopify cancels the Odoo order on the next sync. When Shopify handles delivery, an order tagged Unfulfilled creates an Odoo delivery in the Ready stage, and a Fulfilled order creates it as Done. Split fulfillments, different carriers and partial quantities are supported, and tracking numbers sync both ways.
What happens when an order fails to import?
Odoo's connector writes detailed API logs, visible in developer mode, and emails the assigned salesperson or administrator on critical failures: an order import, a stock update or a fulfillment. A single missing order can be pulled again with the Recover Order action and its Shopify order reference. Whichever Shopify Odoo connector you run, name who will manage those alerts before go-live.
How do we install and connect the connector?
On Odoo 19 on Odoo.sh, install the Shopify connector app, which brings the Sales app with it, then create a Shopify account record for each Shopify instance in developer mode. Odoo says OAuth is mandatory for Shopify stores created on or after January 1, 2026; older stores can use an admin API access token. If no stock location is set, Odoo automatically creates a dedicated Shopify location. Then map locations and run an initial fetch of products and orders.
How does the connector help with preventing overselling?
It narrows the gap rather than closing it. Odoo pushes the free quantity, on hand minus reserved, after each order sync, and only for stock that changed. Odoo advises getting inventory levels in sync on both platforms first. When you restock a return in Shopify, select Restock at: Odoo's documentation warns that skipping it leaves the two stock counts out of step.
Do Shopify collections sync to Odoo categories?
Not through Odoo's connector: collections are not in its supported-features table, and Odoo recommends configuring product categories and sales taxes in Odoo. Shopify's help center says a new collections model is replacing the legacy manual and smart collections, with inclusion and exclusion conditions. If categories must match on both sides, that mapping is part of a build.
Can Shopify B2B catalogs sync with Odoo pricelists?
Not through Odoo's connector, whose documentation does not mention B2B companies or catalogs. Shopify's help center says B2B is available on all plans: on the Basic plan, the Grow plan and the Advanced plan you can assign up to 3 active catalogs across all your B2B markets, and on Shopify Plus an unlimited number. If B2B prices must follow an Odoo pricelist, that sync is a build on both APIs.
Does the connector track marketing attribution?
Yes. Odoo's documentation says the connector fetches UTM campaign, source and medium from Shopify orders during the order sync and stores them on the Odoo sales order, which helps trace each order to ads, email or social. The data only exists when the Shopify order carried UTM parameters in the first place.
Is Odoo better than Shopify?
They do different jobs. Shopify runs the storefront and checkout of your eCommerce operations; Odoo describes itself as a suite of open source business apps covering CRM, eCommerce, accounting, inventory, point of sale and project management. Keep Shopify at the front and run Odoo ERP behind it when the storefront works and the back office does not; move the store onto Odoo when you would rather have no interface to maintain. The right solution follows your sales channels, not the brand.
What does an Odoo Shopify integration cost?
There is no fixed figure; cost follows the route. The native connector needs Odoo.sh on a Custom plan, with the hosting cost not included. An App Store connector adds the vendor's price and upgrade cycle. Implementation adds configuration or development, testing and ongoing support. Odoo Community is open source and Odoo Enterprise is licensed, so the edition you run also shapes the options.
/ Next step
Let’s decide what should sync, and what should not.
- A senior architect replies within one business day
- Your details are never shared or sold
- An NDA can be signed before we hear any detail
US +1 (631) 897-7276 · Gulf +971-54-737-4253 · Singapore +65-9086-0319 · India +91-22-6116-3300.









Trusted by 2,000+ brands worldwide
“Brainvire has helped our business grow. We feel like it’s a true partnership. They’re always present. It’s been seven great years, looking forward to more.”
Book a working session
Tell us what you sell on Shopify, where it ships from, and what the books must show.