Skip to Content

Top seller on the Odoo Apps Store Browse 100+ Odoo Apps

Customer success story

How a Spanish Scooter Parts Retailer Runs Shopify B2B and B2C Orders in Odoo

A Spanish scooter and motorcycle parts retailer runs a Shopify B2B and B2C Odoo integration: private riders and trade buyers order from the same Shopify store, in four languages, across Spain, Portugal and the Canary Islands. TeqStars extended its Shopify Connector on Odoo so customers, prices, VAT and Sendcloud shipments arrive in Odoo exactly as Shopify sold them.

Spanish scooter and motorcycle parts retailer

Automotive Spain Published

Line drawing of a scooter: Shopify orders for parts flowing into Odoo

The resultEvery Shopify order reaches Odoo under the right customer, with Odoo's own VAT and a total that matches Shopify.

kinds of buyers in one Shopify store, consumers and companies
2
customer languages mapped from Shopify
4
product prices kept in Odoo and sent to Shopify
4

What challenge was the customer facing?

The retailer needed one Shopify store to serve two very different buyers, and Odoo to book every order the way its accountants expect. Private riders pay prices with VAT included, trade buyers order as companies, and the books in Odoo are kept in prices without tax.

The catalogue is made of spare parts and tuning parts for scooters and motorcycles: carburetor jets, gaskets, CDI units, LED bulbs, from brands such as Minarelli, Dell'Orto, Malossi and Polini. Customers buy in Spanish, French, English and Portuguese, and orders leave for mainland Spain, Portugal and the Canary Islands. In Odoo, the existing catalogue was kept as simple products, while Shopify sold the same parts as variants, some products with more than a hundred of them.

Matching the two systems is where the trouble started. Shopify sends prices with tax included, so an imported order either picked a generic tax or added VAT a second time. A few cents of rounding left Shopify and Odoo with different totals. Customers who changed their email in Shopify came back as new contacts, and a company's order could land on one of its employees instead of the company. Some orders also had to be held back: the team marks them with tags in Shopify, and those orders had to stay out of the automatic workflow.

Shipping and payments added their own surprises. A buyer who failed one payment method and paid with another left both providers on the order, and Odoo picked the wrong one. Sendcloud sent carriers the undiscounted price on commercial invoices for the Canary Islands, so UPS paperwork no longer matched the invoice the customer received.

What did the business need to achieve?

The retailer wanted Odoo to be the single place where Shopify orders, customers and prices are correct, without retyping anything. In its own terms, success meant:

  • Odoo's VAT rules as the source of truth, even for tax-included Shopify prices
  • one contact per customer and per company, whatever changes in Shopify
  • the same order total in Shopify and Odoo, to the cent
  • prices, tags and product data maintained in Odoo and pushed to Shopify
  • Sendcloud shipments and carrier paperwork that match the invoice

How did TeqStars help?

The retailer chose the TeqStars Shopify Connector after evaluating several alternatives, then worked with TeqStars on the rules that make it fit their business. The first eight requirements arrived as one numbered list, and each became a change in a customer-specific extension of the connector, so the standard connector stays upgradable.

  • VAT from Odoo, amounts from Shopify: tax-included prices are split into net and VAT with the rate Shopify sent, then booked with Odoo's own taxes, such as the OSS rate for Portugal or 21% goods VAT in Spain.
  • Totals that match: when rounding leaves a gap, a compensating line closes it, and the line is recalculated when the customer later edits the order in Shopify.
  • Discounts without double VAT: Shopify discounts arrive as tax-included amounts and are converted before they reach the order lines.
  • Customers that stay one record: each contact keeps its Shopify customer ID, so an email change updates the existing contact instead of creating a new one.
  • Trade buyers as companies: B2B orders create or find the company by its Shopify company ID, with its VAT number, and file billing and shipping addresses under it.
  • Details that arrive complete: the purchase order number, the customer's language, the tax ID from checkout, the brand from Shopify's vendor, and HS code and country of origin for customs.
  • Prices and tags from Odoo: sale price, compare-at price, cost and the recommended retail price (PVP) go to Shopify by button or schedule, and product tags follow Odoo.
  • Order control by tag: a tagged order is cancelled on import and restored when the tag is removed, and other tags keep an order out of the automatic workflow.
  • Payments and invoices: the payment provider that actually took the money is used, invoices carry the product and its SKU, and the order is marked paid in Shopify once paid in full.
  • Sendcloud shipping: the service point chosen at Shopify checkout reaches the delivery, weights go out with three decimals, and commercial invoices use the discounted unit price.

Most changes started from a real order the retailer pointed to, such as an order with two payment providers or a product with 131 variants of which only 100 had been imported. TeqStars reproduced each case on the retailer's test database before it reached production, and the larger rules, such as tax handling and customer identity, were specified in writing first.

Day-to-day support continued after go-live through Odoo support: stock export questions, a language that failed to import, and webhook peaks of 60 to 140 Shopify events a minute that the team investigated from the server logs the retailer sent.

Key capabilities delivered

  • eCommerce Integration
  • Shipping Automation
  • Tax Automation
  • Custom Development
  • Multi-Channel Commerce

Challenges we solved

  • Tax-included Shopify prices against tax-excluded Odoo books
  • Cents of rounding between Shopify and Odoo totals
  • Customers duplicated after an email change
  • Trade orders filed under a person, not the company
  • Wrong payment provider after a failed payment
  • Shopify variants against simple products in Odoo
  • Carrier invoices without the customer's discount

What business processes improved?

Before

Imported Shopify orders could carry a generic tax or VAT added twice, and a few cents of rounding left the two totals apart. Customers who changed their email became new contacts, trade orders could land on a person instead of the company, and an order could carry a payment provider that had failed.

After

An order arrives in Odoo under the existing customer or company, with Odoo's own VAT and, when needed, a compensating line that makes its total match Shopify's. Prices and tags are kept in Odoo and pushed to Shopify, and Sendcloud receives the service point and the discounted values.

Which integrations were involved?

TeqStars connected Odoo with:

What results did the project achieve?

kinds of buyers in one Shopify store, consumers and companies
2
customer languages mapped from Shopify
4
product prices kept in Odoo and sent to Shopify
4

The accounting team now works from Odoo's tax rules alone. A Portuguese order is booked with the Portuguese OSS rate, a Spanish one with Spanish goods VAT, and the invoice total equals what the customer paid in Shopify, even after the customer edits the order or uses a discount.

Customer records stay clean as the shop grows. A changed email updates the contact it belongs to, trade buyers appear as their company with its VAT number, and every invoice line points to a product with its SKU. Product data, from brand to HS code and country of origin, arrives with the product instead of being typed in later, and Odoo stays the place where the four prices and the tags are set.

In its review of the connector on the Odoo Apps Store, the retailer wrote that the module covers what it needed without unnecessary custom development, and that its customizations were delivered quickly and with high quality. New requests keep arriving through the same project, from payment references on invoices to stock export checks.

Customer testimonial

The module is extremely complete, well structured, and covers all the functionality we needed without requiring unnecessary custom development. … Customizations were delivered quickly, with high quality … Communication was always clear, reliable, and efficient.

Spanish scooter and motorcycle parts retailer Review on the Odoo Apps Store Approved by the customer

Planning a similar Odoo project?

Tell us what you are trying to improve and our team can discuss the right implementation approach.