Factur-X BASIC : le détail ligne par ligne dans le XML, sans la complexité d'EN 16931
BASIC est le profil que choisissent 70% des TPE françaises pour leurs factures B2B. Il ajoute par rapport à MINIMUM la liste détaillée des prestations dans le XML — quantité, prix unitaire, taux de TVA appliqué par ligne. C'est ce qui permet à votre client d'intégrer automatiquement vos factures dans son ERP sans ressaisie.
Sources & références (4)
- FNFE-MPE — Spécification Factur-X 1.07.2 (profil BASIC)
- EN 16931:2017 — Semantic data model of the core elements of an electronic invoice
- UN/CEFACT CII 100pD16B — IncludedSupplyChainTradeLineItem
- Code Général des Impôts, article 289 (mentions obligatoires)
Cas d'usage typique
Sarah, cabinet de conseil stratégique (SARL, 3 salariés)
Sarah facture trois jours d'atelier stratégie à un grand client industriel : 3 jours × 1 800 € HT, un livrable rédactionnel forfaitaire à 1 500 € HT, des frais de déplacement (TVA à 10%) à 320 € HT. Total : 7 220 € HT, 1 408 € TVA (mixte 20%/10%), 8 628 € TTC. Le service achat de son client veut intégrer ces 3 lignes automatiquement dans SAP, avec ventilation analytique conseil / production / frais. BASIC est le profil qu'il faut — chaque ligne est dans le XML, lisible par le logiciel comptable, avec son taux de TVA spécifique.
Les 12 ajouts vs MINIMUM, en clair
Si vous venez d'une logique MINIMUM, voici exactement ce que BASIC introduit dans le XML :
| Champ XML | Rôle | Exemple |
|---|---|---|
| IncludedSupplyChainTradeLineItem | Une ligne de facturation | 3 lignes pour Sarah |
| SpecifiedTradeProduct/Name | Désignation produit/service | « Atelier stratégie » |
| BilledQuantity | Quantité facturée | 3 |
| ChargeAmount | Prix unitaire HT | 1800.00 |
| LineTotalAmount | Total ligne HT | 5400.00 |
| CategoryCode | Catégorie TVA (S, Z, E…) | S (standard) |
| RateApplicablePercent | Taux TVA de la ligne | 20 |
| ApplicableTradeTax (multiple) | Breakdown TVA par taux | 20% et 10% |
| BasisAmount | Base imposable du taux | 6900.00 / 320.00 |
| CalculatedAmount | Montant TVA du taux | 1380.00 / 32.00 |
| PostalAddress (vendeur) | Adresse postale complète | FR + ville + CP |
| SpecifiedTaxRegistration (TVA) | N° TVA intracom. vendeur | FRXX12345… |
Les pièges spécifiques à BASIC
Les erreurs qu'on ne voit pas en MINIMUM mais qui apparaissent dès qu'on détaille des lignes.
1. La somme des lignes ne tombe pas sur le total HT
Bug classique des feuilles de calcul Excel : on arrondit chaque cellule, et la somme ne correspond plus au total HT déclaré. En BASIC, le XML porte la somme exacte, donc tout écart se voit. Règle : arrondir après la somme, jamais avant.
2. Taux de TVA mixtes mal ventilés
Dans le cas de Sarah, conseil 20% + frais 10% = deux blocs ApplicableTradeTax distincts.
L'erreur fréquente : mettre tout sous 20% (et donc surfacturer la TVA des frais) ou inversement.
Le calcul doit être fait taux par taux.
3. Description de ligne trop courte ou trop longue
Le champ SpecifiedTradeProduct/Name n'a pas de limite XML stricte,
mais les ERPs côté acheteur tronquent souvent à 80 ou 160 caractères. Une description trop longue est tronquée, trop courte ne permet
pas l'imputation analytique. Visez 30-80 caractères, format « action : contexte » (ex : « Atelier stratégie : refonte branding »).
4. Remises lignes vs remise globale
BASIC accepte les deux : remise sur une ligne précise (AppliedTradeAllowanceCharge au niveau ligne)
ou remise globale sur le total HT. Mélanger les deux sans avoir une logique claire crée des écarts difficiles à debugger.
Recommandé : choisir une approche par client et s'y tenir.
L'extrait XML qui change tout
La signature visible de BASIC, c'est le bloc IncludedSupplyChainTradeLineItem.
Voici à quoi ressemble une ligne « 3 jours atelier stratégie » dans le XML de Sarah :
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>1</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Atelier stratégie : refonte branding</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>1800.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="DAY">3</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>20</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>5400.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
Multipliez par autant de lignes que vous avez de prestations. Ajoutez un breakdown ApplicableTradeTax
global (par taux) en fin de document. Le total HT est calculable par sommation des LineTotalAmount.
BASIC et Chorus Pro : la zone grise
Officiellement, BASIC est accepté par Chorus Pro depuis l'origine. Dans les faits, certains services de l'État (notamment ministères de la Défense, Justice, et certains hôpitaux) demandent désormais le profil EN 16931 pour des raisons d'archivage légal et d'audit Schematron complet.
Recommandation pragmatique : si vous facturez parfois le secteur public, paramétrez votre logiciel sur EN 16931 par défaut. Le surcoût XML est négligeable et vous évitez les rejets. Si vous facturez exclusivement B2B privé, BASIC est parfait.
Générer un Factur-X BASIC en 30 secondes
Easy Factur-X détecte automatiquement la présence de lignes dans votre PDF et passe en BASIC. Vous gardez le contrôle à l'étape de revue : changement de profil, correction des lignes, recalcul de TVA en un clic.
Réponses aux questions de TPE qui passent en BASIC
Combien de lignes maximum dans une facture BASIC ?
Pas de limite formelle dans le schéma. En pratique, au-delà de 200 lignes le PDF devient lourd (multi-pages) et certains ERPs côté acheteur ont des limites d'import. Si vous facturez régulièrement plus de 100 lignes, regroupez par catégorie ou émettez plusieurs factures par lot.
Comment gérer les frais de port et emballage ?
Deux écoles. Soit en ligne supplémentaire dédiée (« Frais de port »), simple et lisible, mais qui mélange avec
les vraies prestations. Soit en frais global hors lignes via
SpecifiedLogisticsServiceCharge dans le BASIC :
plus propre comptablement, mais tous les ERPs ne le supportent pas. La majorité des TPE optent pour la ligne dédiée.
Une remise sur le total final, comment je l'inscris ?
Au niveau document : SpecifiedTradeAllowanceCharge avec
ChargeIndicator à false (allowance = remise). Précisez le
motif (BR-DEC-01 — Motif de remise). Le total HT du XML reflète alors le HT après remise, pas avant.
Mon client demande l'EN 16931 : ça change quoi côté Easy Factur-X ?
Si vous avez déjà toutes les informations (adresses postales complètes, TVA intracom, code pays acheteur), le passage de BASIC à EN 16931 ne demande qu'une option à cocher dans Easy Factur-X. Le moteur ajoute automatiquement les champs supplémentaires et la validation Schematron stricte. Détails sur la page EN 16931.