Comment Hela traite les régimes

Dans un nombre croissant de pays, une facture n'est valable que si elle est transmise à l'administration ou passe par un réseau : eTIMS au Kenya, le dispositif électronique fiscal en RDC, la plateforme FNE en Côte d'Ivoire, Peppol en Belgique, la PDP en France. Hela porte ces règles — un régime par pays — et les applique au moment où le document est émis.

Trois formats, un document

Une vente Hela se lit en trois formats, toujours disponibles :

Format Route Pour
PDF GET /sales/{id}/invoice.pdf Le client, l'imprimante
UBL 2.1 (EN 16931, Peppol BIS 3.0) GET /sales/{id}/invoice.xml Peppol, Yuki, les PDP, la plupart des régimes européens
CII (UN/CEFACT, profil EN 16931 ; base de Factur-X et XRechnung) GET /sales/{id}/invoice.cii.xml La France (Factur-X), l'Allemagne (XRechnung)

Les régimes africains n'utilisent pas ces formats : chaque administration a son API JSON, et le régime la parle.

Le régime

Un régime déclare :

  • les pays où il s'applique ;
  • l'autorité et l'obligation en une phrase ;
  • le transport : authority_api (une API de l'administration), access_point (un point d'accès Peppol), pdp (une plateforme agréée), peppol (le réseau en direct), device (un dispositif ou une passerelle agréée près de vous) ;
  • s'il couvre les tickets de caisse ou seulement les factures B2B ;
  • son comportement hors ligne : queue_then_submit (la facture est émise, la transmission suit dès que le réseau revient) ou device_local (le dispositif signe localement) ;
  • les champs à renseigner pour s'enrôler, et ses réglages.

GET /companies/{id}/fiscal renvoie les régimes applicables au pays de l'entreprise, avec tout cela et l'état de l'enrôlement.

S'enrôler

Finance → Conformité, puis Activer sur le régime : le formulaire demande ce que l'administration vous a remis (TIN, clé, certificat, adresse du dispositif…). Les secrets sont chiffrés. Hela teste l'enrôlement avant de l'enregistrer : un identifiant faux est refusé tout de suite, avec la réponse de l'administration.

Le pays de l'entreprise doit être renseigné en code à deux lettres (CD, KE, BE…) dans les paramètres ; c'est ce qui sélectionne les régimes.

Transmettre

Avec le réglage Transmettre automatiquement (par défaut), chaque facture part à l'émission (invoice.issued) — et chaque ticket aussi quand le régime couvre les tickets. Pour les régimes B2B (Peppol, PDP, XRechnung), seules les ventes adressées à un partenaire identifié (numéro de TVA, identifiant Peppol ou numéro fiscal renseigné) partent.

Une facture peut aussi partir à la demande — bouton Transmettre au fisc sur la facture, ou POST /fiscal/submit/sale/{saleId} — par exemple pour un document antérieur à l'enrôlement.

La transmission est un travail en file, exécuté en arrière-plan, réessayé en cas de panne de l'administration. Son état se lit sur la facture et dans Conformité → Transmissions :

État Sens
queued En attente du prochain passage
submitted Envoyée, réponse attendue (régimes asynchrones)
accepted Acceptée ; la référence de l'autorité et, le cas échéant, le code QR sont enregistrés et imprimés sur le PDF
rejected Refusée ; le motif est affiché, la facture reste à corriger et à renvoyer
error L'administration n'a pas répondu ; réessai programmé

Les événements fiscal.accepted et fiscal.rejected sont émis, et le connecteur de messagerie sait les relayer.

Le journal scellé

Indépendamment de toute administration, Hela tient un journal fiscal : chaque facture émise y est écrite avec un hachage SHA-256 qui enchaîne le hachage précédent et le contenu canonique de la facture (hash = sha256(précédent | contenu)). Modifier ou supprimer une ligne après coup casse la chaîne, et Vérifier la chaîne (GET /fiscal/journal/verify) le montre.

C'est ce que demandent les administrations qui exigent l'inaltérabilité sans imposer de transmission (la France pour les logiciels de caisse, l'Allemagne avec la KassenSichV), et c'est une preuve utile partout.

Hors ligne

Une caisse qui n'a pas de réseau continue de vendre. Avec queue_then_submit, les tickets s'accumulent et partent à la reconnexion, dans l'ordre, chacun avec son horodatage d'origine. Avec device_local, le dispositif agréé signe sur place et la transmission à l'administration est son affaire.

Pays couverts en 3.0

Zone Régimes
Union européenne Peppol (BE, NL, LU, nordiques…), France — PDP, Allemagne — XRechnung
Afrique de l'Est Kenya — eTIMS, Rwanda — EBM, Tanzanie — VFD, Ouganda — EFRIS
OHADA Côte d'Ivoire — FNE, Bénin — e-MECeF, Sénégal, Burkina Faso, Cameroun, RDC ; le plan SYSCOHADA pour les exports

Un pays absent de la liste a tout de même le journal scellé et les trois formats.

فقرة خاطئة أو ناقصة؟ راسلنا.