Se rendre au contenu

Marge d'un négociant : les frais d'approche qu'on oublie

Fret, douane, transitaire : sans frais d'approche imputés, la marge négoce affichée est fausse, produit par produit. Enquête et méthode Odoo 19.
4 septembre 2026 par
INVESTIGMATIK, Abraão Levasseur

Mis à jour le 28 septembre 2026 : coût des ventes rétroactif dans Odoo 20, précisions sur le change et les Incoterms.

Dans le négoce, une phrase revient souvent : « ma marge, c'est le prix de vente moins le prix d'achat fournisseur ». C'est faux dès que la marchandise voyage. Fret, assurance, droits de douane, transitaire, manutention : ces frais d'approche font partie du coût d'acquisition, le Plan comptable général l'écrit noir sur blanc. Le change, lui, fixe la valeur en euros du prix d'achat. Tant qu'ils dorment dans un compte de charges au lieu d'être imputés aux articles, votre résultat n'est faussé que de la part des frais afférente au stock de clôture. Mais la marge négoce affichée produit par produit est fausse. Et c'est sur elle que vos commerciaux fixent leurs prix. Nous avons vérifié les textes, les Incoterms 2020 et la documentation d'Odoo 19 disponibles au 4 septembre 2026. Voici où se cachent ces frais, qui les paie selon l'Incoterm, comment les intégrer dans Odoo et ce qui se passe quand la facture du transitaire arrive trop tard.

— Investigmatik · Enquête négoce n°01Enquête & solution
Ce qu'on ne vous dit pas sur la marge d'un négociant
Vente moins achatCoût de revient
Le suspectUne facture de transitaire qu'aucun article ne porte.
Le mobileFret, droits et manutention : 16 points de marge dans notre exemple.
La solutionImputer les frais d'approche avant la première livraison.
En bref
  • Le coût d'acquisition d'un stock comprend les droits de douane, le transport, la manutention et les autres coûts directement attribuables (Plan comptable général, art. 213-31).
  • Dans notre exemple fictif, 4 800 € de frais d'approche sur un conteneur de 20 000 € font tomber la marge de 33,3 % à 17,3 %.
  • L'Incoterm décide des frais qui restent à votre charge : presque tous en EXW, presque aucun en DDP.
  • Odoo 19 impute ces frais aux réceptions avec les coûts logistiques (Landed Costs), en coût moyen ou en FIFO uniquement.
  • Sous Odoo 19, validez-les avant de livrer : sinon, la part des unités déjà vendues n'entre pas dans la marge des commandes concernées. Odoo 20 met à jour rétroactivement la valeur des livraisons.

Pourquoi la marge « facture » ment

Idée reçue : marge = prix de vente − prix d'achat fournisseur. Réalité : selon le Plan comptable général publié par l'ANC (version au 1er janvier 2026), le coût des stocks comprend tous les coûts encourus pour les amener à l'endroit et dans l'état où ils se trouvent (art. 213-30). Le coût d'acquisition réunit le prix d'achat, droits de douane et taxes non récupérables compris, après remises, plus le transport, la manutention et les autres coûts directement attribuables (art. 213-31).

Prenons un exemple fictif : un négociant importe d'Asie un conteneur payé 20 000 € FOB et le revend 30 000 € HT.

  • Marge « facture » : 10 000 €, soit 33,3 % du prix de vente.
  • Frais d'approche : 4 800 €. Le coût de revient passe à 24 800 €, soit un coefficient d'approche de 1,24.
  • Marge réelle : 5 200 €, soit 17,3 %.

Le piège est subtil. La facture du transitaire finit bien en charges, mais aucun article ne la porte. Vos prix et vos remises reposent sur un coût faux, et votre stock de clôture est sous-évalué.

Pièce à conviction n°1Deux marges pour un conteneur
CONTENEUR IMPORTÉ 20 000 € FOB · REVENDU 30 000 € HTMARGE « FACTURE »COÛT 20 000 €33,3 %MARGE RÉELLECOÛT 24 800 €17,3 %− 16 POINTS DE MARGE
Exemple fictif. Plan comptable général, articles 213-30 et 213-31 : le coût d'acquisition inclut droits, transport et manutention.

Les frais d'approche, poste par poste

Notre conteneur fictif, revendu 30 000 € HT, avec l'impact en points de marge.

PosteExemple (fictif)Où le saisir dans OdooImpact sur la marge
Prix fournisseur (FOB)20 000 €Bon de commande fournisseur ; la réception est valorisée au prix de la commandeBase : 33,3 %
Fret maritime2 400 €Facture du transporteur, article « coût logistique », répartition par volume−8,0 points
Assurance transport100 €Facture de l'assureur ou du transitaire, répartition par coût actuel−0,3 point
Droits de douane900 € (taux fictif de 4 % sur 22 500 € de valeur en douane)Facture du transitaire (débours), répartition par coût actuel−3,0 points
Honoraires du transitaire450 €Même facture, répartition égale ou par quantité−1,5 point
Post-acheminement port → entrepôt650 €Facture du transporteur routier, répartition par poids−2,2 points
Manutention, dépotage300 €Facture du prestataire, répartition par quantité−1,0 point
ChangeCommande en deviseDevise du bon de commande ; Odoo convertit la valeur dans la devise de la sociétéVariable
TVA à l'importAutoliquidéeDéclaration de TVA, hors coût du stockAucun, si elle est récupérable
Total4 800 €Plusieurs factures, un seul coût de revient−16 points : marge réelle de 17,3 %

Les droits portent sur la valeur en douane. Selon la fiche de la douane sur la valeur en douane à l'importation (mise à jour le 10 novembre 2025), on ajoute à la valeur transactionnelle le transport, l'assurance et la manutention jusqu'au lieu d'introduction dans l'Union, pas au-delà. D'où nos 22 500 €.

Côté change, un stock acheté en devise entre au cours du jour de l'opération (PCG, art. 420-1) ; l'écart au règlement, lui, ne se rattache pas au stock, sauf couverture de change, dont l'effet s'intègre à la valeur d'entrée (art. 420-1). En Suisse, enfin, les produits industriels ne supportent plus de droits de douane depuis le 1er janvier 2024 (décision du Conseil fédéral du 2 février 2022). Fret, assurance, transitaire et manutention restent.

Pièce à conviction n°2Du prix FOB au coût de revient
20 000PRIX FOB+2 400FRET+100ASSURANCE+900DROITS+450TRANSITAIRE+650POST-ACHEM.+300MANUTENTION24 800COÛT DE REVIENT
Exemple fictif, taux de droits fictif de 4 % sur la valeur en douane. La TVA à l'import autoliquidée n'entre pas dans le coût si elle est récupérable.

Incoterm : qui paie quoi, et jusqu'où

Les Incoterms 2020 de la Chambre de commerce internationale comptent 11 règles. Ils répartissent frais, risques et formalités entre vendeur et acheteur. Pour vous, importateur, ils fixent les frais d'approche restant à votre charge.

  • EXW (à l'usine) : vous payez presque tout, du chargement aux droits d'import.
  • FOB (franco à bord, maritime) : le vendeur dédouane à l'export et charge à bord. Fret, assurance, import, droits et post-acheminement sont pour vous.
  • CIF (coût, assurance et fret, maritime) : le vendeur paie fret et assurance minimale (clauses C) jusqu'au port de destination, mais le risque vous est transféré dès le chargement à bord. Import, droits et post-acheminement restent pour vous.
  • DAP (rendu au lieu de destination) : le vendeur achemine jusqu'au lieu convenu. Déchargement, dédouanement import et droits sont pour vous.
  • DDP (rendu droits acquittés) : le vendeur prend aussi l'import et les droits. Il vous reste le déchargement.

FOB et CIF restent courants pour les conteneurs, mais la CCI recommande plutôt FCA et CPT/CIP.

Deux pièges. Payer n'est pas porter le risque : en CIF, une avarie en mer vous concerne. Et un prix EXW plus bas peut coûter plus cher, rendu entrepôt, qu'un prix DAP.

Dans Odoo 19, l'Incoterm et son lieu se renseignent dans l'onglet « Autres informations » du bon de commande et de la facture ; l'Incoterm du bon de commande est repris sur la facture. Depuis Odoo 19.4 en SaaS (notes de version de juillet 2026), un Incoterm par défaut se règle aussi sur la fiche fournisseur et se reporte sur ses bons de commande. C'est une information : ce champ ne calcule aucun frais.

Pièce à conviction n°3Qui paie quoi selon l'Incoterm
EXPORTFRET PRINCIPALIMPORT ET DROITSDÉCHARGEMENTEXWVOUSVOUSVOUSVOUSFOBVENDEURVOUSVOUSVOUSCIFVENDEURVENDEURVOUSVOUSDAPVENDEURVENDEURVOUSVOUSDDPVENDEURVENDEURVENDEURVOUSEN CIF, LE VENDEUR PAIE AUSSI UNE ASSURANCE MINIMALE, MAIS LE RISQUE VOUS EST TRANSFÉRÉ À BORD
Lecture simplifiée des Incoterms 2020 de la CCI, du point de vue de l'importateur. Payer n'est pas porter le risque : vérifiez aussi le transfert de risque.

Intégrer les frais d'approche dans Odoo

La fonction s'appelle Landed Costs (« Coûts logistiques » en français). Selon la documentation Odoo 19.0 sur les landed costs, elle intègre transport, assurance, droits et autres frais à la valorisation des produits. Prérequis : une catégorie de produits en coût moyen (AVCO) ou en FIFO, pas au prix standard.

  1. Activez la fonction : Inventaire > Configuration > Paramètres, section Valorisation, case Coûts logistiques, puis choisissez le journal par défaut.
  2. Créez un article par nature de frais : type Service, onglet Achats, case « Est un coût logistique », avec une méthode de répartition par défaut : égale, par quantité, par coût actuel, par poids ou par volume.
  3. Recevez la marchandise : seuls les transferts validés peuvent recevoir des frais.
  4. Saisissez la facture du transitaire en brouillon avec vos articles de frais et enregistrez : le bouton « Créer des coûts logistiques » apparaît.
  5. Rattachez les réceptions dans le champ Transferts et cliquez sur Calculer. L'onglet « Correction de valorisation » affiche la valeur d'origine, les coûts additionnels et la nouvelle valeur.
  6. Validez : en valorisation permanente, l'écriture est passée dans le journal choisi.

Un coût logistique peut aussi se créer depuis Inventaire > Opérations > Coûts logistiques, pour saisir une estimation dès l'arrivée, à régulariser avec votre expert-comptable.

Pièce à conviction n°4Le bon ordre dans Odoo 19
11FRAIS22RÉCEPTION33FACTURE44CALCULER55VALIDERAVANT LA PREMIÈRE LIVRAISON
Documentation Odoo 19.0 (coûts logistiques) et lecture du code source 19.0 : un frais validé après la vente ne corrige pas la marge des commandes déjà livrées. Odoo 20 change ce comportement : la valeur des livraisons est mise à jour rétroactivement.

Suivre la marge réelle par produit et par fournisseur

Un coût juste doit encore être visible. Les outils documentés :

  • La marge sur les commandes : activez « Marges » dans Ventes > Configuration > Paramètres. Les devis affichent la marge totale ; les colonnes Marge et Marge (%) s'activent sur les lignes via le sélecteur de colonnes. Odoo calcule prix de vente − coût : si ce coût ignore vos frais d'approche, la marge est fausse dès le devis.
  • L'analyse par produit : vue pivot ou graphique des devis, mesure Marge, regroupement par produit.
  • Le coût unitaire : dans le rapport Stock d'Inventaire, un clic sur le coût unitaire montre ses mises à jour et leur origine en coût moyen.
  • Le coefficient d'approche par fournisseur : chaque coût logistique affiche valeur d'origine et nouvelle valeur. Leur rapport, réception par réception, révèle le vrai coût de chaque fournisseur rendu entrepôt.
  • Le prix à partir de la marge : depuis Odoo 19.4 en SaaS, la marge se modifie sur la ligne de commande et le prix de vente est recalculé. Utile, si le coût est juste.

L'IA peut-elle imputer vos frais d'approche ?

Elle peut lire la facture du transitaire. Elle ne décide pas de la répartition.

Ce qui existe dans Odoo 19

La numérisation des factures fournisseurs combine OCR et IA, contre des crédits : elle accélère la saisie de la facture du transitaire, mais les lignes restent à affecter à vos articles de frais. Depuis la SaaS 19.3, on peut demander à un agent IA de créer des enregistrements, y compris en lui confiant un fichier d'instructions, par exemple un PDF. Aucune fonction IA documentée ne calcule ni ne répartit les frais d'approche : ce sont les coûts logistiques, avec leurs méthodes égale, par quantité, par coût, par poids ou par volume.

Ce que font les concurrents

Microsoft Dynamics 365 Business Central répartit les frais annexes à parts égales, par montant, par poids ou par volume, et un traitement d'ajustement des coûts reporte un frais tardif sur le coût des ventes. C'est de la règle de gestion, pas de l'IA, mais elle répond au cas que nous avons soulevé.

— Investigmatik · Radar IAPromesse vs réalité
  • Disponible · payant
    Numérisation de la facture du transitaireOCR et IA, contre des crédits ; les lignes restent à affecter.Source
  • Disponible · sans IA
    Coûts logistiquesRépartition égale, par quantité, par coût, par poids ou par volume.Source
  • Disponible · SaaS 19.3
    Agents IA qui créent des enregistrementsY compris à partir d'un fichier d'instructions, par exemple un PDF ; aucune répartition de frais documentée.Source
  • Non documenté
    Répartition des frais par IAAucune fonction IA ne calcule ni ne répartit les frais d'approche.
  • Chez les concurrents
    Frais tardif reporté au coût des ventesBusiness Central le fait par un ajustement des coûts, sans IA.Source

Questions fréquentes

Les frais d'approche entrent-ils dans la valeur du stock ?

Oui, en France : le PCG les inclut dans le coût d'acquisition (art. 213-30 et 213-31). La TVA récupérable et les coûts administratifs non dédiés restent dehors. Dans Odoo 19, un coût logistique validé augmente la valeur des biens déjà reçus sans changer leur quantité. En Suisse, faites valider la méthode par votre fiduciaire.

Comment répartir un transport sur plusieurs produits ?

Suivez ce qui fait le coût : volume pour un conteneur, poids pour la route, valeur pour l'assurance, répartition égale pour un forfait. Exemple fictif : deux articles valent chacun 10 000 € ; l'un occupe 20 m³, l'autre 8 m³. Un fret de 2 400 € réparti par coût donne 1 200 € à chacun ; par volume, 1 714 € et 686 €. Soit 514 € d'écart par article. Renseignez poids et volume sur vos fiches articles. Et si vos taux de droits varient d'un code à l'autre, la répartition par coût reste une approximation.

Et si la facture du transitaire arrive après la vente ?

C'est le point clé de notre enquête. La documentation 19.0 ne traite pas ce cas ; nous avons donc lu le code source public du module, branche 19.0. En valorisation permanente, l'écriture ne porte au stock que la quote-part des unités encore présentes ; le reste demeure en charges. La valeur des livraisons passées n'est pas recalculée : la marge des commandes concernées reste surestimée. Résultat global juste, marge par produit fausse. Validez vos coûts logistiques avant la première livraison et testez ce scénario sur une copie de votre base. Odoo 20, présenté le 24 septembre 2026, change ce comportement : selon ses notes de version, quand un coût logistique modifie le coût d'un produit déjà livré, la valeur de la livraison est mise à jour rétroactivement, ainsi que le coût facturé en valorisation permanente. Sous Odoo 19, la règle reste de valider avant de livrer.

Conclusion

La marge d'un négociant ne se lit pas sur la facture fournisseur. Le coût d'achat import intègre fret, assurance, droits, transitaire, manutention et la conversion au cours du jour. L'Incoterm dit lesquels vous paierez. Les landed costs Odoo font le reste, à deux conditions sous Odoo 19 : travailler en coût moyen ou en FIFO, et valider les frais avant de livrer. Odoo 20, présenté le 24 septembre 2026, met à jour rétroactivement la valeur des livraisons et le coût facturé en valorisation permanente quand un coût logistique arrive après la vente, et permet d'affecter un coût logistique à certains produits d'une réception (voir notre enquête sur Odoo 20 et le négoce). Dès maintenant, calculez le coefficient d'approche de vos trois derniers conteneurs.

Votre marge par produit intègre-t-elle vraiment vos frais d'approche ?

Nous passons en revue avec vous vos réceptions, vos coûts logistiques et vos marges dans Odoo.

Réserver un appel diagnostic gratuit


Vous êtes négociant et vous voulez voir ce que ça donne chez vous ? Notre page Odoo pour le négoce achat-revente détaille les flux, les modules et les frais d'approche, avec un diagnostic gratuit à la clé.

Odoo 20 et le négoce : les vraies nouveautés, pas le bruit
Odoo 20, c'est surtout de l'IA ? Pour un négociant, l'essentiel tient dans des calculs de stock, d'achat et de marge. Notre enquête.