Profil le plus utilisé en B2B · Lignes dans le XML

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.

Par Tristan Godal, fondateur Mis à jour le 8 min de lecture
Sources & références (4)

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
IncludedSupplyChainTradeLineItemUne ligne de facturation3 lignes pour Sarah
SpecifiedTradeProduct/NameDésignation produit/service« Atelier stratégie »
BilledQuantityQuantité facturée3
ChargeAmountPrix unitaire HT1800.00
LineTotalAmountTotal ligne HT5400.00
CategoryCodeCatégorie TVA (S, Z, E…)S (standard)
RateApplicablePercentTaux TVA de la ligne20
ApplicableTradeTax (multiple)Breakdown TVA par taux20% et 10%
BasisAmountBase imposable du taux6900.00 / 320.00
CalculatedAmountMontant TVA du taux1380.00 / 32.00
PostalAddress (vendeur)Adresse postale complèteFR + ville + CP
SpecifiedTaxRegistration (TVA)N° TVA intracom. vendeurFRXX12345…

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.

Voir comment réparer une incohérence de totaux

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.