Commerce au MarocFacturationGuides & comparatifs

UBL 2.1 expliqué sans jargon aux entreprises marocaines

Numéro, vendeur, client, lignes, TVA et total : voici où chaque donnée visible se place dans un XML UBL 2.1 et ce que sa validation signifie.

Par BelloCommerce

·

UBL 2.1 n’est ni un logiciel ni un PDF avec une extension différente. C’est un vocabulaire XML public qui range les données commerciales dans des cases nommées et prévisibles. Un programme peut ainsi trouver le numéro, le vendeur, l’acheteur, la TVA et le total sans lire visuellement une page. BelloPOS l’utilise comme format structuré d’export. Au 29 août 2026, nous ne le présentons pas comme le schéma national imposé par une spécification technique DGI publiée.

Structure UBL 2.1 d'une facture électronique au Maroc
Structure UBL 2.1 d’une facture électronique au Maroc.

UBL 2.1 en six réponses

  • UBL signifie Universal Business Language et la version 2.1 est un standard OASIS public.
  • Une facture commence par l’élément Invoice ; un avoir utilise CreditNote.
  • Les préfixes cbc et cac séparent les valeurs simples des ensembles de données.
  • Le XML transporte les données ; le PDF reste la vue lisible remise à une personne.
  • Un XML bien formé ou valide XSD n’est pas automatiquement fiscalement juste ni accepté par une administration.
  • BelloPOS Go exporte UBL 2.1, mais ne transmet pas directement le fichier à la DGI.

1. Lire l’arbre UBL comme une facture

Imaginez une chemise principale nommée Invoice. À l’intérieur, certaines étiquettes contiennent une valeur unique : ID pour le numéro, IssueDate pour la date ou DocumentCurrencyCode pour MAD. D’autres ouvrent une sous-chemise : AccountingSupplierParty pour le vendeur, AccountingCustomerParty pour le client et InvoiceLine pour chaque ligne. Cette organisation est ce qui distingue une facture structurée d’un simple PDF.

Élément UBLCe qu’il représenteExemple lisible
Invoice / CreditNoteType et racine du documentFacture ou avoir
cbc:IDNuméro du documentFAC-2026-00418
cbc:IssueDateDate d’émission2026-08-29
cbc:DocumentCurrencyCodeDeviseMAD
cac:AccountingSupplierPartyIdentité du vendeurRaison sociale, adresse, ICE
cac:AccountingCustomerPartyIdentité de l’acheteurSociété cliente et ICE
cac:InvoiceLineUne ligne facturéeQuantité, article, prix, taxe
cac:TaxTotalTVA regroupéeBase, taux et montant
cac:LegalMonetaryTotalTotaux légauxHT, TVA, TTC, payable

Les noms complets sont longs parce qu’ils évitent les ambiguïtés entre deux logiciels. Les préfixes ne sont pas des décorations : cbc regroupe généralement les composants de base, comme un identifiant ou une date, et cac les composants agrégés, comme une partie ou une ligne. Il n’est pas nécessaire de les mémoriser pour facturer, mais les reconnaître aide à contrôler un export.


2. Relier la page visible aux données XML

Prenons une vente de deux chaises à 500 DH HT l’unité, avec 20 % de TVA. La page A4 affiche le client, deux unités, 1 000 DH HT, 200 DH de TVA et 1 200 DH TTC. Le XML doit raconter exactement la même opération : quantité 2, prix unitaire 500, montant de ligne 1 000, catégorie de taxe, taux 20, taxe 200 et total payable 1 200. Les mentions de la facture marocaine restent à contrôler dans le document et dans l’export.

  • Le vendeur : Nom légal, adresse et identifiants sont regroupés dans la partie fournisseur.
  • Le client : La partie acheteur porte l’identité applicable, au lieu d’une note libre difficile à traiter.
  • Les lignes : Chaque quantité, unité, libellé, prix et montant garde sa relation avec l’article vendu.
  • La TVA : Les sous-totaux par catégorie ou taux permettent de recomposer le montant fiscal.
  • Les totaux : Les bases, taxes, arrondis et montant payable doivent se rapprocher des lignes.
  • Le paiement : Le moyen, l’échéance ou la référence peuvent être structurés sans changer le total facturé.

Une facture peut être lisible mais mal structurée, ou structurée mais fiscalement fausse. Par exemple, un XML valide accepte un nom de client correctement encodé ; il ne sait pas si cet ICE appartient réellement à ce client. La qualité dépend donc des données saisies, des règles du logiciel et du contrôle humain.

3. Quatre niveaux de contrôle à ne pas confondre

Le mot valide est trop souvent utilisé seul. Demandez toujours : valide contre quoi ?

  1. Bien formé XML : les balises s’ouvrent, se ferment et les caractères spéciaux sont échappés.
  2. Valide contre le XSD UBL 2.1 : les éléments et types respectent le schéma générique publié par OASIS.
  3. Conforme aux règles métier : numérotation, identité, calculs, références et taxes répondent au profil demandé.
  4. Accepté par le destinataire : son portail ou son système reçoit le fichier et rend un accusé ou un statut.
ContrôleCe qu’il détecteCe qu’il ne prouve pas
Parseur XMLBalise cassée, caractère invalideJustesse du taux de TVA
Schéma XSDStructure ou type interditApplication d’un profil marocain
Règles métierTotal incohérent ou champ requis absentDépôt effectivement réalisé
Accusé du portailRéception ou rejet par ce canalAuthenticité de toutes les données saisies

Une future spécification marocaine peut restreindre UBL, choisir un autre format ou ajouter des règles, codes et signatures. C’est pourquoi le guide sur l’obligation de facturation électronique sépare le CGI en vigueur des détails techniques encore à publier ou à confirmer.

Lecture des données d'une facture dans un fichier XML UBL
Lecture des données d’une facture dans un fichier XML UBL.

Un standard international n’est pas une homologation nationale

OASIS publie UBL 2.1 et ses schémas. Cette existence ne suffit pas à affirmer que la DGI marocaine impose ce format, certifie le logiciel qui l’émet ou accepte aujourd’hui n’importe quel fichier UBL. Il faut une source administrative distincte pour chacune de ces affirmations.

4. Ce que BelloPOS met dans son UBL 2.1

BelloPOS sérialise une facture sous la racine Invoice et un avoir sous CreditNote. L’export porte le numéro émis, la date, MAD, les parties vendeur et client avec les ICE disponibles, les lignes, quantités, prix, TVA regroupée par taux, totaux et données de paiement. Les caractères comme & ou < sont échappés par une bibliothèque XML plutôt que concaténés comme du texte.

À l’émission, l’application conserve le XML exact et calcule son empreinte SHA-256. Elle exporte ensuite ces mêmes octets, au lieu de reconstruire la facture avec des coordonnées qui auraient changé. Cette mécanique est détaillée dans le guide sur le scellement SHA-256.

La fonction est incluse dans BelloPOS Go et Pro. Elle prépare et exporte les fichiers localement. Elle ne signe pas avec un certificat qualifié et n’effectue pas de transmission directe à la DGI. Le commerçant ou sa fiduciaire doit vérifier le canal officiel et les exigences applicables au moment du dépôt.

5. Checklist pour ouvrir un fichier sans être développeur

Travaillez sur une copie et utilisez un éditeur qui n’exécute pas de contenu externe. Le contrôle initial prend quelques minutes.

  • Le fichier se termine par .xml et s’ouvre sans erreur de syntaxe.
  • La racine correspond au document : Invoice ou CreditNote.
  • Le numéro, la date et MAD correspondent à la facture visible.
  • Le nom, l’adresse et l’ICE du vendeur sont exacts.
  • Le client professionnel et son ICE correspondent à la fiche validée.
  • Chaque ligne retrouve quantité, libellé, prix et montant.
  • Les bases et montants de TVA se recomposent par taux.
  • Le total payable égale le document remis au client.
  • L’empreinte du fichier correspond à celle du manifeste quand elle est fournie.
  • Le canal destinataire confirme le format et le profil qu’il attend.

Conservez le PDF, le XML, le manifeste et l’éventuel accusé ensemble, avec une convention de nommage stable. Cette paire lisible et structurée simplifie la restitution, le contrôle et la migration future.

Les erreurs à éviter

  • Renommer un PDF en .xml.
  • Croire que toutes les balises sont obligatoires dans tous les profils.
  • Valider seulement la syntaxe sans rapprocher les montants.
  • Confondre CreditNote et facture négative improvisée.
  • Présenter UBL comme une preuve de dépôt DGI.
  • Modifier le XML scellé pour corriger l’affichage.
  • Envoyer un fichier client réel à un validateur web inconnu.
  • Oublier de conserver la version lisible et l’accusé.

Questions fréquentes

UBL 2.1 est-il un format de facture électronique ?

Oui. OASIS publie UBL comme une bibliothèque de documents commerciaux structurés, dont Invoice et CreditNote. Un profil destinataire peut toutefois ajouter ses propres contraintes.

UBL 2.1 est-il officiellement imposé par la DGI marocaine ?

Nous n’avons pas trouvé, dans les sources officielles vérifiées au 29 août 2026, une spécification nationale publiée qui permette cette affirmation générale. BelloPOS l’utilise comme format d’export.

Le client doit-il lire le XML ?

Pas normalement. Le PDF ou l’impression reste utile à la personne ; le XML sert au traitement par les logiciels. Les deux doivent décrire la même facture.

Quelle différence entre Invoice et CreditNote ?

Invoice représente la facture. CreditNote représente l’avoir et peut référencer la facture corrigée. Ce sont deux racines UBL distinctes.

Un fichier valide XSD est-il fiscalement correct ?

Pas nécessairement. Le XSD contrôle la structure générique. L’identité réelle, la TVA, la numérotation, les règles métier et l’acceptation du canal demandent d’autres contrôles.

BelloPOS envoie-t-il l’UBL à la DGI ?

Non. Go et Pro préparent, scellent et exportent le fichier. Le dépôt reste effectué par le commerçant ou sa fiduciaire via le canal officiel disponible.

À retenir

UBL 2.1 devient simple quand on le lit comme un classeur : racine du document, parties, lignes, taxes et totaux. Sa valeur est la donnée prévisible, pas un badge de conformité. Contrôlez la facture visible, le XML, le profil demandé et l’accusé comme quatre preuves séparées.

Sources

Les chiffres et les règles cités ci-dessus viennent de ces pages, consultées à la date indiquée dans l’article.

Testez un vrai export UBL, pas une capture

Émettez une facture d’essai dans BelloPOS Go, retrouvez chaque valeur dans le XML, vérifiez l’empreinte et remettez le fichier à votre fiduciaire avant la bascule.

Pour aller plus loin

D’autres guides pratiques sur le même sujet :