B2B sync is not retail sync with a different label
A B2B Shopify store needs more from Odoo than a normal consumer store. Retail orders are usually centered on one buyer, one shipping address, one payment event, and a fulfillment flow that can move quickly. B2B orders often include a company account, multiple buyers, multiple ship-to locations, purchase order numbers, negotiated pricing, payment terms, credit limits, tax exemptions, approval steps, and finance review.
That difference matters. If a connector treats a wholesale buyer like a normal retail customer, the Odoo record may technically exist but still be wrong for the business. Finance may need the company, not only the buyer. Sales may need the account history. Operations may need the right warehouse or company location. Support may need the purchase order number. Accounting may need the payment term, fiscal position, and credit review state.
This guide explains what B2B Shopify stores need from Odoo ERP sync and how Synco helps teams make those rules operational. It supports the Shopify B2B with Odoo ERP, Shopify Odoo connector, and B2B topic hub pages.
1. Company account mapping
The first B2B requirement is account identity. A company is not the same as an individual buyer. The company may have several buyers, several billing addresses, several ship-to locations, negotiated terms, and a finance relationship that should remain stable in Odoo.
A useful Shopify Odoo connector should preserve this distinction:
- Shopify company maps to an Odoo company or partner account.
- Shopify buyer maps to a contact under the company when appropriate.
- Shopify company location maps to an Odoo delivery or invoice address.
- Orders remain searchable by Shopify order reference and company account.
- Existing Odoo accounts are matched before new partners are created.
This is one of the places where Synco helps B2B teams avoid noisy Odoo data. The connector can support company-aware customer handling and keeps the order context visible instead of flattening the buyer into a one-off retail customer.
Related reads: Shopify B2B customers to Odoo companies and company locations to Odoo contacts.
2. Payment terms and credit review
B2B buyers often do not pay like DTC buyers. They may use net-15, net-30, net-60, purchase orders, account credit, or manual finance approval. If the connector blindly confirms every Shopify B2B order in Odoo, it can bypass the review process finance expects.
Before launch, decide:
- Should B2B orders land as draft sale orders for review?
- Should approved accounts create confirmed orders?
- Should over-limit orders be held as draft?
- Should payment terms from Shopify map to Odoo payment terms?
- Should unpaid B2B orders sync before payment is collected?
Synco helps by letting teams choose the Odoo order record type and payment condition instead of forcing one shape. A wholesale order can land as a draft for review, while a trusted flow can confirm faster. That matters when the same store handles retail, wholesale, and sales-led orders.
Related reads: Shopify Odoo order sync, order record type guide, and paid orders only sync.
3. Customer-specific pricing and pricelists
B2B pricing is rarely one storefront price. A company may have negotiated rates, volume tiers, regional catalogs, currency-specific prices, or contract terms. Odoo has strong pricelist behavior, but the connector must respect how the business decides pricing ownership.
B2B stores should decide:
- Is Shopify the price display layer and Odoo the billing layer?
- Does Odoo own contract pricing?
- Are Shopify B2B catalogs mapped to Odoo pricelists?
- Should negotiated prices appear as order line prices or discounts?
- How are price exceptions reviewed?
Synco helps by keeping the Shopify order line context visible in Odoo and supporting B2B-aware setup work around customer matching, payment conditions, and order rules. The goal is not to hide every pricing rule inside the connector. The goal is to make sure the Odoo record reflects the price the buyer agreed to and finance can explain it later.
Related read: Shopify B2B price lists to Odoo pricelists.
4. Purchase order numbers and custom checkout data
B2B orders often include custom data that does not matter in retail. Purchase order number, cost center, project code, buyer approval note, requested ship date, delivery instructions, and internal account references can all affect fulfillment and finance.
These fields may live in Shopify order notes, note attributes, line item properties, customer metafields, company metadata, or app-injected custom fields. If they do not reach Odoo, staff start copying values by hand.
What B2B stores need:
- PO numbers visible on Odoo orders or invoice references.
- Delivery instructions visible to warehouse teams.
- Line-level customization or configuration values preserved.
- Company-level metadata available for support and finance.
- Failed custom-field writes surfaced clearly.
Synco helps by supporting metafield and line-property workflows and by treating missing mappings as errors the team can review instead of silently dropping operational context.
Related reads: line item properties to Odoo, order note attributes to Odoo, and customer metafields to Odoo.
5. Tax exemptions and fiscal positions
B2B tax handling can be more complicated than consumer tax. A buyer may be tax-exempt. EU B2B orders may require reverse-charge VAT. Different companies or regions may require different Odoo fiscal positions.
Before enabling B2B order sync, test:
- Tax-exempt B2B buyer.
- Reverse-charge VAT if relevant.
- Regional B2B tax records.
- Multi-company tax mapping.
- Refund with the same tax treatment as the original order.
Synco helps by using explicit Shopify-to-Odoo tax mapping and version-aware Odoo writes. If a tax mapping is missing, the right behavior is to show a failed job with a clear cause, not create a silent zero-tax or wrong-tax record.
Related reads: Shopify Odoo tax mapping, fiscal positions guide, and tax ID vs tax IDs guide.
6. Warehouse routing and B2B stock allocation
B2B orders may not use the same inventory pool as retail orders. Wholesale stock might ship from a different warehouse, reserve quantity, region, or 3PL. Some B2B stores hold stock for account commitments. Others fulfill wholesale and retail from one shared Odoo warehouse.
The connector must not treat stock as a single global number. B2B stores need:
- Shopify location to Odoo warehouse mapping.
- Per-shop or per-market warehouse rules.
- Clear inventory source of truth.
- Stock buffers where needed.
- Failed inventory jobs that show product and location context.
Synco helps by mapping Shopify locations to Odoo warehouses and processing inventory through queues. For B2B teams, that means the storefront can reflect Odoo stock without a spreadsheet deciding which warehouse is real.
Related reads: Shopify Odoo inventory sync, warehouse mapping guide, and warehouse cutover runbook.
7. Returns, refunds, and credit notes
B2B returns often involve account credit, partial refunds, replacements, RMAs, or finance review. A refund should not become an orphaned note. It should remain tied to the original order and account.
B2B stores should test:
- Partial refund on one line.
- Full refund.
- Credit note or negative-line behavior.
- Return that affects stock.
- Refund after invoice or order confirmation.
- Refund retry after a failed job.
Synco helps by keeping refunds tied to Shopify references and using retry-safe job behavior. The accounting team can trace the reversal instead of searching for a standalone adjustment.
Related reads: Shopify Odoo refund sync, returns to Odoo RMA, and return restock to Odoo inventory.
8. Multi-company and multi-store support
B2B teams often grow into multiple companies, storefronts, regions, or buyer groups. A connector should keep configuration scoped per shop so one store's warehouse or company rule does not leak into another.
What larger B2B teams need:
- Company picker during setup.
- Odoo allowed-company context.
- Separate Shopify store configurations.
- Separate warehouse mappings.
- Separate order rules and tax mappings.
- Queue visibility by shop.
Synco helps by storing configuration per Shopify shop and sending work through queues with shop context. That keeps B2B, DTC, regional, and test-store behavior separated.
Related reads: Shopify Odoo multi-company sync and multi-store sync.
9. Failed-job visibility that business teams can use
B2B mistakes are usually expensive because they touch account relationships. A connector should make failures visible before bad records reach finance or fulfillment.
Useful failed-job messages answer:
- Which Shopify order, product, company, or location failed?
- Which Odoo model or mapping rejected the write?
- Is this missing data, permission, tax, warehouse, or rate-limit related?
- Can the job be retried safely after the fix?
Synco helps by treating external work as queue jobs and keeping failed jobs reviewable. This is one of the practical ways we help B2B teams: we give operations a place to diagnose the record instead of asking a developer to read logs or letting staff copy data manually.
Related read: failed sync root-cause playbook.
How Synco helps B2B merchants in practice
Across B2B and wholesale implementations, the pattern is consistent. The team does not only need "sync." They need fewer unclear handoffs between sales, operations, finance, and support.
Synco helps by turning those handoffs into configured workflows:
- Company-aware customer handling keeps B2B account context visible.
- Configurable order record types let finance choose draft, confirmed, receipt, or invoice-oriented behavior.
- Payment-condition rules support paid-only and review-first flows.
- Product links reduce duplicate products when orders arrive.
- Warehouse mapping keeps wholesale stock from being pooled accidentally.
- Tax mapping and version-aware Odoo writes protect finance data.
- Refund handling keeps reversals traceable.
- Queue-based jobs make retries safer and failures easier to review.
- No Odoo-side module requirement reduces friction for Odoo Online and Odoo.sh teams.
This is the practical "how we helped" story: not a single flashy feature, but a set of operating rules that stop B2B teams from rebuilding the same spreadsheet every week.
B2B launch checklist
Before launch, confirm:
- Shopify company maps to the right Odoo account.
- Buyers and company locations are represented correctly.
- B2B payment terms are visible in the selected Odoo record type.
- Customer-specific pricing is tested.
- PO number and custom checkout data reach Odoo.
- Tax exemptions or reverse-charge VAT are tested.
- Wholesale stock uses the right warehouse mapping.
- Refunds and credit notes remain tied to the original order.
- Failed jobs show business-readable context.
- Sales, operations, and finance have reviewed the same test orders.
When these are true, B2B sync becomes more than data movement. It becomes an operating bridge between Shopify's buying experience and Odoo's account, warehouse, and finance workflows.