Aller au contenu

Odoo et la fiscalité marocaine : ce que la localisation couvre

La documentation Odoo 19.0 recense 103 pays dotés d'un module de localisation fiscale, dont 45 avec une page dédiée, au 26 juillet 2026 : le Maroc est dans les 103, pas dans les 45. Son paquet existe, et il est substantiel — 634 comptes, 77 taxes, une déclaration de TVA — mais rien n'y bloque une facture B2B sans ICE client.

AnalysePar Équipe deadLine · · 11 min de lecture
Formulaire fiscal posé sur une chemise cartonnée, à côté d'un stylo et d'un téléphone
Photo : kellysikkema · Unsplash License

Information générale, à jour au 26 juillet 2026 et fondée sur les textes cités en fin d'article. Elle ne constitue ni un conseil fiscal, ni un conseil juridique : la réglementation évolue et son application dépend de votre situation. Validez toujours avec votre expert-comptable ou votre conseil.

Au 26 juillet 2026, la documentation Odoo 19.0 recense 103 pays dotés d'un module de localisation fiscale ; 45 d'entre eux portent une page de documentation dédiée, et le Maroc n'en fait pas partie. Le paquet marocain existe pourtant, et il est substantiel : 634 comptes, 77 définitions de taxes, un état « Déclaration TVA » propre au Maroc et un champ ICE contrôlé sur 15 chiffres. Ce qu'il ne porte pas, c'est le verrouillage des règles de délivrance posées à l'article 145 du Code Général des Impôts.[1][2][3]

Le Maroc figure-t-il parmi les localisations fiscales documentées d'Odoo ?

Non. La page « Fiscal localizations » de la documentation Odoo 19.0 annonce que « Fiscal localization modules are available for the countries listed below », puis énumère 103 pays. Le Maroc y figure en texte simple ; 45 des 103 entrées portent un lien vers une page de documentation propre au pays, et l'adresse fiscal_localizations/morocco.html renvoie une erreur 404 au 26 juillet 2026. Odoo précise sur cette même page que de nouveaux pays y sont ajoutés fréquemment : vérifiez la liste à votre date de décision.[1]

Ce découpage ne suit pas la taille des marchés.[1]

PaysModule de localisationPage de documentation dédiée
ÉgypteOuiOui
KenyaOuiOui
JordanieOuiOui
OmanOuiOui
OuzbékistanOuiOui
MarocOuiNon
AlgérieOuiNon
TunisieOuiNon
NigeriaOuiNon
Afrique du SudOuiNon
Extrait de la liste des localisations fiscales de la documentation Odoo 19.0, consultée le 26 juillet 2026. « Page dédiée » signifie que l'entrée du pays porte un lien vers une page qui lui est propre.[1]

Qu'est-ce qu'un paquet de localisation fiscale ?

Odoo le définit ainsi : « Fiscal localizations are country-specific modules that allows for compliance with a country's fiscal requirements ». Ce sont des modules propres à un pays, rattachés à l'application de comptabilité et parfois au point de vente ou à la boutique en ligne, selon les exigences locales.[1]

Odoo installe en principe les modules de base tout seul : « Odoo should automatically install the fiscal localization's core modules based on the company's country when the related app is installed ». Le reste s'installe à la main. La documentation ajoute une précision qui change la nature de l'objet : « These packages require fine-tuning the chart of accounts, activating the taxes to be used, configuring the country-specific statements and certifications, and sometimes more ». Un paquet de localisation est un point de départ à paramétrer, pas un réglage terminé.[1]

Odoo pose enfin une contrainte qui se découvre mal après coup : « Selecting another package is only possible if no entry has been posted ». Le choix du paquet se fige à la première écriture comptable enregistrée. Corriger une erreur de paquet après quelques mois d'exploitation ne relève plus du paramétrage.[1]

Que contient réellement le paquet marocain d'Odoo ?

Le module officiel s'appelle « Morocco - Accounting », il est signé « Odoo SA » et classé dans la catégorie « Accounting/Localizations/Account Charts ». Sa description tient en deux phrases, dont la première : « This is the base module to manage the accounting chart for Morocco ».[2]

Les chiffres qui suivent comptent des enregistrements, c'est-à-dire des lignes portant un identifiant propre, et non des lignes de fichier. La distinction n'est pas cosmétique : le fichier de définition des taxes compte 318 lignes pour 77 taxes, les 241 autres lignes étant les ventilations comptables rattachées à la taxe qui les précède.[2]

Le paquet livre 634 comptes suivant le plan comptable marocain et 77 définitions de taxes, 52 en vente et 25 en achat, réparties sur cinq taux : 28 à 10 %, 21 à 20 %, 14 à 7 %, 10 à 14 % et 4 à 0 %. S'y ajoutent 5 groupes de taxes, 2 positions fiscales et un état « Déclaration TVA » propre au Maroc, structuré en 115 lignes. L'exigibilité de taxe est activée par défaut, 73 des 77 taxes étant définies « on payment », ce qui ouvre le traitement sur encaissement, tout comme le total en toutes lettres sur les documents.[2]

C'est plus que ce que l'absence de page de documentation laisse supposer. Sur les fiches société et partenaire marocaines, le champ company_registry est relibellé « ICE », une contrainte refuse un ICE dont la longueur diffère de 15 chiffres, avec le message « ICE number should have exactly 15 digits », et l'ICE du vendeur est ajouté au bloc d'identité imprimé en tête des documents. Cette contrainte ne se déclenche toutefois que si le champ est renseigné, rien dans le module ne subordonne la validation d'une facture B2B à la présence de l'ICE du client, et la numérotation reste celle des séquences génériques d'Odoo.[2]

ÉlémentCe que le code contient
Plan comptable634 comptes suivant le plan comptable marocain
Taxes77 définitions : 52 en vente, 25 en achat, aux taux 0, 7, 10, 14 et 20 %
Groupes de taxes5, un par taux
Positions fiscales2 : Maroc et Importation/Exportation
État de TVAUn état « Déclaration TVA » propre au Maroc, structuré en 115 lignes
Champ ICEcompany_registry relibellé « ICE » sur les fiches société et partenaire marocaines
Contrôle de l'ICEFormat seul : 15 chiffres, et uniquement si le champ est renseigné
ICE du vendeur sur les documentsAjouté au bloc d'identité imprimé en tête
Total en toutes lettresActivé par défaut
ICE du client bloquant en B2BAbsent du module
Règle de numérotation propre au MarocAbsente : séquences génériques d'Odoo
Inventaire établi par lecture du code source du module l10n_ma publié par Odoo SA sur la branche 19.0, consulté le 26 juillet 2026. Chaque chiffre compte des enregistrements identifiés, pas des lignes de fichier. Les deux dernières lignes décrivent le périmètre de ce seul paquet officiel.[2]

Que coûte une localisation non documentée ?

Un module livre des données : un plan de comptes, des taxes, un libellé de champ. Une localisation documentée ajoute ce qu'aucun fichier de données ne contient, une page publique versionnée par l'éditeur, que l'intégrateur, l'expert-comptable et le prochain prestataire lisent sans ouvrir le code source. Sur un pays documenté, l'intégrateur applique une procédure publiée ; sur un pays non documenté, il reconstitue la règle, la traduit en paramétrage, puis la maintient.

La maintenance revient. L'article 145 du CGI porte, dans ses seules notes de bas de page, des renvois à six lois de finances différentes, de 2016 à 2026 : le paramétrage qui traduit ce texte se remet à jour au même rythme. Et le choix du paquet, lui, ne se refait pas, puisqu'Odoo indique qu'il ne peut plus être changé une fois la première écriture comptable enregistrée. Rien de tout cela ne disqualifie Odoo : la question posée à une PME marocaine n'est pas la qualité du produit, c'est le coût de mise en conformité locale et la personne qui le porte.[3][1]

Quelles règles marocaines un logiciel de facturation doit-il faire respecter ?

Le Code Général des Impôts 2026 impose, à son article 145-III, de délivrer aux acheteurs ou clients « des factures ou mémoires pré-numérotés et tirés d'une série continue ou édités par un système informatique selon une série continue ». Le paragraphe s'ouvre sur une réserve — « Sous réserve des dispositions du paragraphe IX ci-dessous » — et la continuité de la série est écrite dans le texte, pas laissée à une convention interne.[3]

Cette obligation ne vise pas tout le monde. L'article 145-XI écarte des dispositions de l'article 145 « les contribuables personnes physiques dont le revenu professionnel est déterminé selon le régime de la contribution professionnelle unique ou celui de l'auto-entrepreneur », sous réserve du paragraphe X, qui impose de détenir une adresse électronique.[3]

Le même article 145-III énumère les mentions à porter sur la facture, dont, au 4°, « les nom, prénoms ou raison sociale et adresse des acheteurs ou clients et leur identifiant commun de l'entreprise ». L'article 145-VIII le redit pour l'émetteur : « Les contribuables sont tenus de mentionner l'identifiant commun de l'entreprise sur les factures ou les documents en tenant lieu qu'ils délivrent à leurs clients ». Côté acheteur, l'article 146 conditionne la justification d'un achat à une « facture régulière et probante établie au nom de l'intéressé », qui « doit comporter les mêmes indications que celles citées à l'article 145 (III et VIII) ».[3]

L'article 145-IX ajoute une obligation d'outillage : les contribuables concernés « doivent se doter d'un système informatique de facturation qui répond aux critères techniques déterminés par l'administration », et « les modalités d'application des dispositions du présent paragraphe sont fixées par voie réglementaire selon les activités de chaque secteur ». Aucun texte réglementaire fixant ces critères techniques n'a pu être vérifié au 26 juillet 2026.[3]

RègleTexteOù un logiciel doit la tenir
Série de numéros continueArticle 145-IIILe numéro est alloué par la base de données à l'émission, jamais calculé par le code applicatif
ICE du client sur une facture B2BArticles 145-III-4° et 145-VIIIL'émission est refusée en base tant que l'ICE du client est absent
Mentions de la facture délivréeArticles 145-III et 146Les mentions sont gelées à l'émission, pour qu'une réédition reste identique à l'original
Lecture du Code Général des Impôts 2026, articles 145 et 146, texte officiel du ministère de l'Économie et des Finances, consulté le 26 juillet 2026. La troisième colonne est notre lecture d'ingénierie : le CGI impose un résultat, pas une implémentation.[3]

Comment LINEPROD tient-il ces trois règles ?

L'ICE du client est bloquant sur une facture B2B, et le blocage est posé dans la base de données, pas dans un formulaire. Une facture B2B sans ICE client ne peut pas être émise, quel que soit le chemin d'écriture emprunté : interface, import ou appel d'API. Un contrôle placé dans l'écran de saisie se contourne en changeant de chemin ; un contrôle placé dans la base ne se contourne pas.

Le numéro de facture est alloué par la base de données au moment de l'émission, jamais calculé par le code applicatif. La série est continue par construction, et le numéro devient immuable ensuite : une facture annulée conserve son numéro, et la correction passe par un nouveau document, un avoir numéroté, jamais par une réécriture.

Les mentions fiscales de l'émetteur et du client sont gelées à l'émission. Un PDF réédité six mois plus tard reste identique à celui qui a été envoyé, même si la fiche du client a changé entre-temps. Chaque PDF émis est conservé avec son empreinte SHA-256 et sa date de génération, de quoi vérifier qu'un document présenté est bien celui qui a été émis. Aucune durée légale de conservation n'est promise ici.

Que ne fait pas LINEPROD sur ce sujet ?

LINEPROD ne tient pas la comptabilité générale. Le paquet marocain d'Odoo livre 634 comptes suivant le plan comptable marocain ; LINEPROD n'en livre aucun, et ne produit ni balance, ni grand livre, ni bilan, ni liasse fiscale. La chaîne couverte va du devis à l'encaissement, et les écritures se tiennent ailleurs, chez votre expert-comptable ou dans votre logiciel comptable.[2]

LINEPROD ne transmet rien à la Direction Générale des Impôts. Tant que les critères techniques annoncés à l'article 145-IX du CGI n'ont pas de texte d'application vérifiable, aucune date ni aucune conformité anticipée n'est annoncée ici.[3]

  • pas de paie : ni bulletins, ni déclarations CNSS ou AMO ;
  • une seule devise par société — dirham, euro ou dollar — choisie dans les réglages, et non une devise par document ;
  • pas de paiement en ligne au portail client : votre client déclare un règlement, vous le confirmez.

Faut-il un module tiers pour rendre Odoo conforme au Maroc ?

Le paquet officiel couvre le plan comptable, les taxes, l'état de TVA et l'identité ICE. Les règles de délivrance de l'article 145 du CGI — série continue, mentions obligatoires, ICE du client en B2B — n'y sont pas verrouillées : elles relèvent du paramétrage, d'un développement spécifique ou d'un module complémentaire. Le coût de maintenance se traite avec l'intégrateur avant la signature.[2][3]

Le champ ICE d'Odoo empêche-t-il d'émettre une facture sans ICE ?

Le module marocain d'Odoo 19.0 relibelle le champ company_registry en « ICE » et vérifie qu'il compte exactement 15 chiffres lorsqu'il est renseigné. La contrainte porte sur le format, pas sur la présence : un ICE vide passe le contrôle. Rendre l'ICE du client obligatoire à la validation d'une facture B2B demande un paramétrage ou un développement complémentaire.[2]

L'absence de page de documentation signifie-t-elle qu'Odoo ne fonctionne pas au Maroc ?

Non. Un module de localisation marocain existe, il est publié par Odoo SA et livré avec le produit. L'absence de page dédiée porte sur la documentation, pas sur la disponibilité : ce qui est écrit et maintenu par l'éditeur pour 45 pays doit, pour le Maroc, être établi et maintenu par celui qui déploie.[1]

Sources

  1. [1] Odoo — Documentation 19.0, Fiscal localizations https://www.odoo.com/documentation/19.0/applications/finance/fiscal_localizations.html (consulté le 26 juillet 2026)
  2. [2] Odoo SA — Code source du module « Morocco - Accounting » (l10n_ma), branche 19.0 https://github.com/odoo/odoo/tree/19.0/addons/l10n_ma (consulté le 26 juillet 2026)
  3. [3] Code Général des Impôts 2026, articles 145 et 146 — ministère de l'Économie et des Finances https://www.finances.gov.ma/Publication/dgi/2025/CGI-2026-FR.pdf (consulté le 26 juillet 2026) copie archivée du 8 juillet 2026

Odoo est une marque déposée de son propriétaire. Ce contenu est édité par deadLine SARL ; il n'est ni affilié à cet éditeur, ni approuvé par lui. Les informations le concernant proviennent des sources publiques citées ci-dessus, à leur date de consultation.

Voyez LINEPROD sur vos cas réels

Une démonstration personnalisée avec vos données et vos process — sans engagement.