Shopify POS ↔ Odoo, sans ressaisie.
Comment connecter Shopify POS à Odoo pour le retail ?
En transformant chaque vente en boutique en commande Odoo dans la minute, et chaque session de caisse Shopify POS en véritable session de caisse Odoo — avec fond de caisse, moyens de paiement, clôture et écriture de trésorerie. Le stock descend en temps réel sur tous les magasins, les écritures comptables sont automatiques, et la caisse se réconcilie d'elle-même chaque soir. C'est ce qu'aucun connecteur générique du marché ne fait, parce qu'ils traitent les ventes POS comme de simples commandes web.
Le problème du retail connecté
Vous ouvrez des boutiques physiques, vous vendez sur Shopify POS, et votre ERP Odoo devrait tout centraliser. Sauf que dans la plupart des cas, il ne reçoit pas les ventes retail — ou il les reçoit mal. Les symptômes reviennent toujours :
- L'équipe ressaisit chaque vente boutique dans la compta, deux à trois heures par jour et par magasin.
- Le fond de caisse ne tombe jamais juste parce que les sessions ne sont pas rapprochées.
- Le stock Odoo ne reflète pas la réalité des rayons, donc on survend en ligne ce qui est déjà parti en boutique.
- La clôture comptable prend deux semaines parce que les écritures retail sont manuelles.
La cause est presque toujours la même : le connecteur en place ne sait pas gérer la caisse. C'est la limite structurante des modules du marché.
Ce que veut dire « gérer la caisse »
Une vente web et une vente en caisse ne se comptabilisent pas pareil. En boutique, il y a une session : on ouvre la caisse avec un fond, on encaisse en plusieurs moyens de paiement (CB, espèces, chèque, carte cadeau), on clôture le soir, et cette clôture génère une écriture de trésorerie. Un connecteur qui ignore ce cycle produit des ventes sans session, donc un fond de caisse qui dérive et une trésorerie fausse.
Bien fait, chaque session Shopify POS devient une session Odoo : les paiements sont ventilés par mode, la clôture est rapprochée, et la banque tombe juste sans intervention. Le détail de l'architecture POS ↔ Odoo.
L'architecture retail
- Un emplacement Odoo par magasin. Chaque boutique est un emplacement de stock distinct, pas un mono-entrepôt déguisé. C'est ce qui permet un stock juste par point de vente.
- Ventes ascendantes. Chaque commande Shopify POS remonte par webhook signé, est rejouée en GraphQL en cas d'échec, et devient une commande Odoo avec son écriture comptable.
- Sessions de caisse. Les sessions Shopify POS sont mises en correspondance avec les sessions Odoo, moyens de paiement compris.
- Stock descendant. Odoo repousse la disponibilité par emplacement vers Shopify, avec les règles d'allocation par canal.
- Réconciliation. Un audit périodique compare Shopify et Odoo ligne à ligne et remonte les écarts réels — pas des milliers de faux positifs.
Cas réel : dix points de vente
Sur une enseigne de prêt-à-porter, le connecteur hérité dérivait en silence : du chiffre d'affaires non comptabilisé, un fond de caisse gonflé, des milliers de fausses anomalies que plus personne ne lisait. La reprise a d'abord rendu le système observable, puis l'a fait passer à l'échelle.
Le hardware, aussi
Une caisse retail, ce n'est pas que du logiciel. Le déploiement couvre les caisses, les imprimantes thermiques de tickets et les lecteurs de codes-barres, configurés et testés sur chaque boutique. Sur les gros volumes d'inventaire, un module de scan mobile transforme n'importe quel téléphone connecté à Odoo en scanette — lecture EAN et GS1 directement dans le navigateur.
Questions fréquentes
Pourquoi les connecteurs Shopify ↔ Odoo ne gèrent-ils pas la caisse ?
Parce qu'ils traitent les ventes Shopify POS comme des commandes web. Ils ne créent pas de véritable session de caisse Odoo — avec son fond de caisse, ses moyens de paiement, sa clôture et son écriture de trésorerie. Résultat : le retail est réconcilié à la main chaque soir. Gérer correctement le POS suppose de suivre les sessions de caisse Shopify, de les faire correspondre aux sessions Odoo, et de générer les écritures qui vont avec.
Le stock est-il vraiment temps réel sur toutes les boutiques ?
Oui, à condition que le connecteur soit événementiel : chaque vente, chaque réception, chaque transfert émet un événement qui met à jour Odoo, et Odoo repousse la disponibilité par emplacement vers Shopify. La clé est de rattacher chaque magasin à un emplacement Odoo distinct et de définir des règles d'allocation par canal. Une réconciliation périodique rattrape ce que l'événementiel a raté — parce que les webhooks tombent, toujours.
Que se passe-t-il si une caisse perd la connexion en pleine vente ?
La vente se fait quand même côté Shopify POS, qui fonctionne en mode dégradé hors ligne. À la reconnexion, la commande remonte par webhook, et le connecteur la rejoue de façon idempotente : elle devient une commande Odoo sans doublon, même si l'événement arrive deux fois. C'est exactement le genre de cas que les modules génériques gèrent mal et qui crée des écarts de caisse.
Combien de boutiques peut-on connecter ?
Il n'y a pas de limite fonctionnelle. Ce qui compte, c'est le nombre d'emplacements de stock et la charge de synchronisation. Une architecture bien conçue tient une dizaine de points de vente comme une seule : sur une mission retail réelle, dix emplacements d'expédition étaient rattachés au même profil de livraison. Le vrai sujet à cette échelle, c'est le passage à l'échelle des traitements — la résolution des clients ou l'application des prix — pas le nombre de magasins.
Combien coûte une intégration Shopify POS ↔ Odoo ?
Comptez 6 à 15 K€ pour le déploiement retail (hardware compris : caisses, imprimantes thermiques, lecteurs de codes-barres) et 8 à 18 K€ pour le connecteur lui-même selon le périmètre. L'audit initial est gratuit et donne un devis chiffré sous 72 h. À comparer au coût réel de la ressaisie quotidienne : deux à trois heures par jour et par boutique, plus les écarts de caisse qu'on finit par passer en perte.
Pour aller plus loin
Faisons le diagnostic de votre POS.
Premier retour sous 24 h, diagnostic gratuit, devis chiffré sous 72 h. Aucun engagement.
Réserver un audit