E-Reporting
L'écran E-Reporting est le point d'entrée opérationnel du workflow d'e-reporting de NomaUBL — la voie déclarative de la Réforme de la Facturation Électronique (RFE). À la différence d'E-Invoicing, qui dépose une facture structurée vers la Plateforme Agréée du destinataire, E-Reporting dépose une déclaration agrégée vers l'administration fiscale via cette même PA, pour les transactions hors périmètre de l'e-invoicing :
- Transactions B2C — ventes à des particuliers.
- Transactions B2B intra-UE — ventes à un acheteur d'un autre État membre.
- Exports et autres transactions hors périmètre — ventes à des acheteurs hors UE, flux internes inter-sociétés, etc.
Pour ces transactions, l'acheteur ne reçoit pas de facture structurée via la PA. Le vendeur déclare quand même le chiffre d'affaires pour permettre à l'administration fiscale de calculer la TVA due. NomaUBL regroupe les transactions, construit le XML correspondant, le dépose sur la PA et suit son cycle de vie.
La page fonctionne quel que soit le système source — JD Edwards, SAP, NetSuite ou un ERP personnalisé.
Positionnement de l'e-reporting
L'e-reporting est la voie déclarative de la réforme — l'e-invoicing prend en charge la facture B2B structurée, l'e-reporting couvre tout ce qui ne passe pas par cette voie mais doit être déclaré pour la TVA.
La règle de routage BAR définie dans UBL Defaults → Document Type / BAR Routing pilote la répartition. La configurer correctement en amont garantit que les transactions vont automatiquement dans le bon flux.
Deux flux, quatre types de document
La spécification française d'e-reporting définit deux flux sortants et quatre types de document qui précisent si le rapport est une soumission initiale ou une correction.
| Flux | Périmètre | Forme du contenu |
|---|---|---|
10.1 | Détail B2BINT | Un élément <Invoice> par facture B2B internationale de la période — ID, date d'émission, code de type, devise, Vendeur (déclarant), Acheteur (contrepartie), totaux monétaires et un <TaxSubTotal> par taux de TVA. Les factures B2C ne sont jamais émises ici, conformément à la règle de routage de la spécification. |
10.3 | B2C / OUTOFSCOPE agrégé | Un bloc <Transactions> par (code catégorie, devise), avec des <TaxSubTotal> imbriqués par taux portant la base imposable (en devise source) et le montant de TVA (toujours en EUR). |
| Code | Signification | Cas d'usage type |
|---|---|---|
IN | Initial | Première déclaration de la période — valeur par défaut. |
RE | Remplacement | Remplace une déclaration précédente sur la même période après correction. |
CO | Annulation | Annule une déclaration précédente (par ex. soumise par erreur). |
MO | Modification | Ajuste certaines lignes d'une déclaration précédente sans remplacement complet. |
Les rapports suivent une fréquence configurable — MONTHLY (mois calendaire, défaut), DECADAL (1-10, 11-20, 21-fin de mois) ou WEEKLY (semaine ISO, lundi → dimanche) — définie dans le template e-reporting de config.json.
Codes de catégorie de transaction (flux 10.3)
Le bloc <Transactions> en flux 10.3 contient un <CategoryCode> (TT-81) qui classe l'opération sous-jacente parmi les quatre codes acceptés par la spécification :
| Code | Signification | Cas d'usage type |
|---|---|---|
TLB1 | Livraisons de biens taxables | Ventes de biens soumises à la TVA française. |
TPS1 | Prestations de services taxables | Prestations de services soumises à la TVA française. |
TNT1 | Non taxable | Opérations hors champ de la TVA française — ventes à distance intracommunautaires, services relevant de l'article 259 B du CGI, exportations. |
TMA1 | Régime de la marge | Opérations relevant du régime de TVA sur la marge (articles 266 e, 268, 297 A du CGI). |
NomaUBL dérive la catégorie depuis la ligne facture sous-jacente. Quand une ligne source a une valeur en dehors de l'ensemble accepté, la plateforme bascule automatiquement sur TLB1 (taux positif) ou TNT1 (taux nul).
Tous les éléments <TaxAmount> et <TaxTotal> produits par NomaUBL sont forcés en euros, quelle que soit la devise de la facture source. Le <TaxableAmount> garde la devise d'origine de la facture, pour que le montant de l'opération sous-jacente reste auditable.
Statuts du cycle de vie
Les rapports e-reporting suivent un cycle de vie dédié, distinct de celui des factures. NomaUBL enregistre l'un de ces huit codes à chaque transition entre la génération et l'acquittement (ou rejet) PA :
| Code | Tag | Signification |
|---|---|---|
9950 | EREPORT_CREATED | XML construit et persisté ; pas encore de tentative de dépôt. |
9951 | EREPORT_SUBMIT_SKIPPED | Rapport généré ; envoi PA désactivé (sendToPA=N sur le template e-reporting). Le XML reste téléchargeable mais n'atteint jamais la PA. |
9952 | EREPORT_SENT_TO_PA | Rapport déposé sur la PA en HTTP ; en attente de l'accusé de réception initial. |
9953 | EREPORT_PENDING | La PA a accusé réception et traite le rapport. |
9954 | EREPORT_ERROR_SENT | Échec de la soumission au niveau réseau ou HTTP — typiquement transitoire. Resend permet la reprise. |
9955 | EREPORT_DEPOSITED | La PA a accepté et enregistré le rapport — succès terminal. |
9956 | EREPORT_FAILED_IMPORT | La PA n'a pas pu importer le rapport (erreur de traitement post-acquittement). |
9957 | EREPORT_REJECTED | La PA a rejeté le rapport sur une règle de validation — échec terminal. La reprise passe par un RE corrigé. |
Les codes 9950 – 9954 sont transitoires (le rapport est en mouvement). 9955 – 9957 sont terminaux (pas de transition automatique ultérieure) ; un rapport RE (remplacement) est le seul moyen de surcharger un 9957 sur la même période.
Vue d'ensemble
Barre d'outils
La barre d'outils au-dessus du tableau combine trois filtres texte avec deux raccourcis.
| Champ | Critère |
|---|---|
| Société | Code société (Kco) auquel le rapport est rattaché (par ex. 00070). |
| Flux | Code de flux — 10.1 (détail B2BINT) ou 10.3 (B2C / OUTOFSCOPE agrégé). |
| Statut | Recherche libre sur le code ou le libellé du statut courant. |
| Rafraîchir | Relance la requête courante sans modifier les filtres. |
| Générer un rapport | Ouvre la modale de génération — décrite plus bas. Masquée pour les sessions en lecture seule. |
Filtres avancés (2026.05.10)
Un panneau Filtres avancés pliable sous la barre d'outils propose une ligne par colonne filtrable de la spec Vues de liste active (view.ereporting) — avec des sélecteurs d'opérateurs par colonne (contains, equals, ≠, <, ≤, >, ≥, between, empty, not empty). Les modifications restent en brouillon tant que Exécuter ne les valide pas.
Depuis 2026.05.12, la page fonctionne en mode hybride client-side — une tranche serveur capée par Exécuter (spec.maxRows, 5000 par défaut), puis TanStack gère filter / sort / paginate dans la tranche. Un message X / Y lignes à côté de Exécuter signale quand le cap est atteint. Depuis 2026.05.13, la colonne refList status reçoit un picker multi-sélection qui émet une clause IN (?,?,?) côté serveur — choisir plusieurs codes de statut renvoie l'union.
Liste des rapports
Le tableau affiche une ligne par rapport. Tri par défaut : RGDOC décroissant. Cliquer sur un en-tête de colonne pour trier ; cliquer sur une ligne ouvre la modale de détail.
Depuis 2026.05.10, la table passe par DataTableV2 en mode piloté par spec : la forme des colonnes vient de la spec view.ereporting sur db-nomaubl et le défaut embarqué livre toutes les colonnes listées ci-dessous. Ajouter des colonnes depuis le catalogue ou retirer une colonne de la liste blanche de filtres se fait depuis l'éditeur Vues de liste.
Colonnes par défaut
| Colonne | Description |
|---|---|
| ID | Identifiant interne du rapport (RGDOC). Auto-incrémenté. |
| Flux | 10.1 (détail B2BINT) ou 10.3 (B2C / OUTOFSCOPE agrégé). |
| Société | Code société (Kco) auquel le rapport s'applique. |
| Type | Type de document — IN / RE / CO / MO. |
| Période | Plage déclarative — début → fin (ISO 8601). |
| Factures | Nombre de factures sources incluses dans le rapport. |
| Statut | Badge du statut courant — code + libellé, coloré par famille. |
| UUID PA | Identifiant unique renvoyé par la PA après acceptation. Tronqué à 8…8 ; valeur complète au survol. |
| Création | Horodatage de génération. |
Un sélecteur de taille de page en bas du tableau est réglé sur 50 par défaut ; des valeurs jusqu'à 500 sont acceptées. Le nombre total de rapports correspondants apparaît à côté de la pagination.
Export CSV
Le bouton standard Exporter de la barre d'outils exporte la vue courante (filtres compris) au format CSV sous le nom ereporting.csv.
Modale de détail
Cliquer sur une ligne ouvre une modale qui contient trois onglets en haut : En-tête, Factures, Historique. Le titre de la modale affiche le triplet Flux / Kco / Rgdoc.
Onglet En-tête (défaut)
Grille des champs qui résument l'identité du rapport et le résultat du dépôt.
| Champ | Description |
|---|---|
| RGDOC | Identifiant interne du rapport. |
| FLUX | 10.1 ou 10.3. |
| KCO | Code société. |
| Type | IN / RE / CO / MO. |
| Début / fin de période | Dates ISO 8601 qui délimitent la fenêtre déclarative. |
| Expéditeur | Matricule du transmetteur, schéma 0238 — typiquement l'entité enregistrée auprès de la PA. |
| Émetteur | Identifiant de l'émetteur légal, schéma 0002 (SIREN). |
| UUID PA | Identifiant retourné par la PA à l'acceptation. Vide tant que le rapport n'a pas été accepté. |
| Statut | Statut courant du cycle de vie — code + libellé. |
| Message de statut | Dernier message renvoyé par la PA — typiquement le motif de rejet pour les soumissions échouées. |
| Factures | Nombre de factures sources incluses dans le rapport. |
| Date de création | Horodatage de génération. |
Onglet Factures
Tableau de chaque facture source incluse dans le rapport. Les colonnes correspondent à l'enregistrement e-invoicing sous-jacent — pour croiser le rapport et ses sources.
| Colonne | Description |
|---|---|
| Numéro | Numéro de facture — BT-1 quand il est renseigné, sinon DOC/DCT/KCO. |
| Date | Date d'émission (BT-2). |
| BAR | Code de routage BAR porté par la facture (B2C, B2BINT, OUTOFSCOPE, …). |
| Client | Nom de la partie acheteur. |
| HT | Montant total hors taxes. |
| TVA | Montant total de la TVA. |
| TTC | Montant total toutes taxes comprises. |
| Devise | Code devise ISO 4217. |
La liste reflète l'état enregistré au moment de la génération — relancer un rapport (RE) ne modifie pas rétroactivement la vue de l'IN précédent.
Onglet Historique
Le cycle de vie du rapport — chaque statut traversé, en mode ajout seul, dans l'ordre de soumission.
| Colonne | Description |
|---|---|
| # | Numéro de séquence — 1 correspond à l'état initial à la génération, les lignes suivantes sont les événements renvoyés par la PA. |
| Statut | Code + libellé du statut issu du catalogue e-reporting (par ex. 9950 Généré, 9952 Envoyé PA, 9953 En attente, 9955 Déposé, 9957 Rejeté). Voir Statuts du cycle de vie plus haut. |
| Message | Texte libre renvoyé par la PA — typiquement le motif de rejet ou la note d'acceptation. |
| Date | Horodatage de l'événement. |
Le cycle de vie est en lecture seule ici ; la seule action disponible est Renvoyer à la PA dans l'en-tête de la modale, qui ajoute un nouvel événement après un redépôt réussi.
Actions de l'en-tête
| Bouton | Comportement |
|---|---|
| Télécharger XML | Télécharge le XML formaté du rapport (format de nom ereporting-<flux>-<kco>-<rgdoc>.xml). Le XML est mis en forme quand c'est possible, sinon le contenu stocké brut est conservé. |
| Renvoyer à la PA | Redépose le XML existant sur la Plateforme Agréée. Utile après une erreur PA transitoire. Masqué pour les sessions en lecture seule. Le cycle de vie est mis à jour avec le résultat du nouveau dépôt. |
| Fermer (✕) | Ferme la modale sans modification. |
Modale de génération
Ouverte via Générer un rapport dans la barre d'outils. Construit et dépose un ou plusieurs rapports pour une combinaison société / flux / période choisie.
| Champ | Description |
|---|---|
| Société (kco) | Restreint la génération à une seule société. Laisser vide pour appliquer à toutes les sociétés déclarées dans le template e-reporting. |
| Flux à générer | Sélection multiple entre 10.1 et 10.3. Les deux sont sélectionnés par défaut — un rapport est émis par flux actif. |
| Type de document | Une valeur parmi IN (initial), RE (remplacement), CO (annulation), MO (modification). Défaut : IN. |
| Début / fin de période | Dates ISO 8601 délimitant la fenêtre déclarative. |
| Calculer la période | Pré-remplit Début / Fin avec la prochaine fenêtre due selon la fréquence configurée (MONTHLY / DECADAL / WEEKLY). |
| Annuler | Ferme la modale sans générer. |
| Générer | Construit le XML pour chaque flux sélectionné, persiste la ligne du rapport et dépose sur la PA. La liste se rafraîchit en cas de succès. |
Lors de la génération, les blocs Expéditeur, Émetteur et Business Process par facture (TT-7 / TT-12 / TT-28 / TT-29) sont remplis à partir du template e-reporting. Ces valeurs par défaut se configurent une seule fois dans Configuration → Système → E-Reporting (Expéditeur / matricule PA + rôle WK, Émetteur / SIREN sous schéma 0002 pour les sociétés françaises, Business Process émis uniquement sur les factures B2BINT). En l'absence d'identifiant de transmission saisi manuellement, le rapport est identifié par {siren}-{flux}-{début}-{fin} : la valeur reste stable d'une régénération à l'autre sur la même période et permet à la PA de dédupliquer des dépôts identiques.
Après une exécution réussie, les nouveaux rapports apparaissent en tête de liste avec un statut 9950 (Généré) qui progresse rapidement par 9952 (Envoyé PA) et 9953 (En attente), puis aboutit à 9955 (Déposé) quand la PA accuse réception. Quand l'option Send to PA est désactivée (sendToPA=N), le rapport reste en 9951 (Envoi désactivé) et le XML reste téléchargeable pour relecture hors ligne.
Conseils & bonnes pratiques
- Configurer le routage BAR en premier. La liste des factures qui arrive en flux 10.1 / 10.3 est pilotée par UBL Defaults → Document Type / BAR Routing.
B2BINTalimente le flux 10.1 (détail par facture) ;B2CetOUTOFSCOPEalimentent le flux 10.3 (agrégé). Une facture mal classée n'arrive ni dans l'un ni dans l'autre — chaque type de document doit être rattaché àB2B,B2G,B2C,B2BINTouOUTOFSCOPEavant la première génération. - Préférer Calculer la période à la saisie manuelle. Cette option respecte la fréquence configurée dans le template e-reporting, donc la fenêtre suggérée correspond à l'échéance réglementaire (mois plein précédent pour
MONTHLY, décade précédente pourDECADAL, semaine ISO précédente pourWEEKLY). INd'abord, puisREpour les corrections. Une facture arrivée tardivement ou un montant corrigé demande un rapportREqui couvre la même période — ne jamais ré-émettre unINsur une période déjà déclarée.- Réserver
COà l'annulation totale. À utiliser quand une période entière a été déclarée par erreur ; les corrections partielles passent parRE. - L'UUID PA est l'accusé de réception. Il reste vide entre la soumission et l'acceptation (statuts
9952et9953), puis devient définitif quand la PA accuse9955(Déposé). C'est la preuve juridique de la déclaration en cas de contrôle. - Redéposer après une erreur PA transitoire, pas après un rejet Schematron. Un
9954(Échec d'envoi) indique un incident réseau ou HTTP — Renvoyer permet la reprise. Un9957(Rejeté) donne un motif Schematron ou règle métier dans le Message de statut — corriger les données BAR ou la facture en amont et générer un nouveauRE, plutôt que de redéposer à l'aveugle. Un9956(Échec d'import) se situe entre les deux : lire le message avant de choisir entre redépôt et reconstruction. - L'onglet Factures est un instantané. Il enregistre les factures sources telles qu'elles étaient au moment de la génération. Les modifications ultérieures ne modifient pas rétroactivement le rapport déposé — elles apparaissent dans le
REsuivant si elles sont matérielles. - Les données de TVA sont lues depuis l'UBL en priorité. Lors de la génération, NomaUBL parse les nœuds
cac:TaxTotal/cac:TaxSubtotalau niveau document de chaque UBL stocké — les sous-totaux par ligne sont ignorés pour éviter le double comptage. La table de synthèse TVA n'est consultée qu'en secours. Si un rapport B2C sort avec des blocs<Transactions>vides alors que les factures et leur UBL sont bien en base, la synthèse TVA est probablement désynchronisée par rapport à l'UBL — relancer la génération depuis l'UBL résout l'écart. - Configurer une seule fois les valeurs Expéditeur / Émetteur / Business Process. Configuration → Système → E-Reporting regroupe le matricule PA (Expéditeur, rôle par défaut
WK), le SIREN de l'émetteur (Émetteur, schéma par défaut0002pour les sociétés françaises ;0223/0227/0228/0229pour les cas internationaux) et le processus métier par facture (émis uniquement en B2BINT). Garder ces valeurs au niveau du template garantit la cohérence de tous les rapports générés et évite les surcharges au cas par cas. - Les codes catégorie hors-liste sont remappés automatiquement. Une ligne source avec un code catégorie autre que
TLB1/TPS1/TNT1/TMA1est ramenée automatiquement àTLB1(taux positif) ouTNT1(taux nul) au moment de la génération. Renseigner explicitement la catégorie sur la ligne source dès que la valeur par défaut ne convient pas (par exemple un service qui doit aboutir enTPS1plutôt qu'enTLB1).