Ligne de commande¶
C'est le même binaire, mais pas le même contrat. Le terminal expose le mode direct : un convertisseur HTML + JSON → Factur-X, utile pour scripter, déboguer, ou travailler sans IA. Il applique les mêmes règles EN 16931 et le même auto-contrôle que le serveur MCP.
Le mode direct n'émet pas de facture
-html rend le fichier qu'on lui donne : il n'attribue aucun numéro et
n'inscrit rien au registre. La numérotation légale — séquence continue, sans
trou, jamais réutilisée — n'existe que par les outils MCP.
Dans un dossier d'organisation, gofact -html refuse donc de générer un fichier
inconnu du registre, et ne sert plus qu'à re-rendre une facture déjà émise. Pour en
émettre une, demandez-la à votre IA (create_invoice).
Générer une facture¶
# -data et -out déduits du nom du HTML :
gofact -html "2026001 - ACME.html"
# → lit "2026001 - ACME.json", écrit "2026001 - ACME.pdf"
# Chemins explicites + XML CII dumpé pour inspection :
gofact -html f.html -data f.json -out f.pdf -xml f.xml
| Option | Effet |
|---|---|
-env <fichier> |
.env explicite (défaut : ./.env puis ~/.config/gofact/.env) |
-validate=false |
saute l'auto-contrôle du PDF produit |
-chrome <chemin> |
force l'exécutable du navigateur |
-q |
silencieux (erreurs seulement) |
Code de sortie 0 si le Factur-X est produit et conforme.
Le sidecar JSON¶
Les données structurées de la facture. Tous les montants en centimes — jamais de flottant. Le vendeur, l'IBAN et le régime de TVA viennent de la configuration de l'organisation : le JSON ne porte que ce qui varie.
{
"number": "2026001",
"issue_date": "2026-08-31",
"buyer": {
"name": "ACME SAS",
"siret": "55208131700015",
"email": "compta@acme.example",
"electronic_address": "552081317",
"electronic_address_scheme": "0225",
"address": "1 rue de la Paix",
"postal_code": "75002",
"city": "Paris"
},
"lines": [
{ "name": "Développement backend", "unit": "day", "quantity": "2.00",
"unit_price_ht_cents": 60000, "amount_ht_cents": 120000 }
]
}
Champs optionnels : type (invoice | credit_note), due_date (défaut : à
réception), delivery_date (défaut : émission), currency (défaut EUR), vat
({"exempt": false, "rate_pct": "20.00"} pour la TVA standard), buyer_reference,
seller, iban, title (objet de la facture, inscrit au registre), notes.
Notes et mentions légales
Les trois mentions obligatoires — pénalités de retard (PMD), frais de
recouvrement (PMT), escompte (AAB) — sont toujours émises. notes les
complète : une note sans subject_code part en information générale (AAI),
une note portant PMD, PMT ou AAB remplace la mention par défaut du même
code. Une facture qui en perdrait une est refusée avant génération (BR-FR-05).
Adresse de routage de l'acheteur
Sans electronic_address, l'acheteur est routé sur son SIREN (dérivé du SIRET)
en scheme 0225, comme le vendeur. L'e-mail (EM) ne sert qu'à défaut de tout
identifiant légal — et une PDP ne sait pas le livrer.
Organisations¶
gofact org list # organisations découvertes, compteurs, prochain numéro
gofact org init -path DIR -name "…" -siret … -iban …
gofact org show # fiche détaillée — jamais de secret affiché
Envoi PDP¶
gofact -html f.html -send -poll # génère puis dépose
gofact send -pdf f.pdf -poll # dépose un PDF existant
Identifiants lus dans l'environnement ou le .env (voir Envoi PDP).
Serveur et installation¶
gofact mcp # serveur MCP sur stdio
gofact install [-yes] # configure les clients MCP du poste
Variables d'environnement¶
Le fichier .env.example
du dépôt les documente toutes : identité GOFACT_SELLER_*, GOFACT_PAYEE_IBAN,
mentions d'exonération GOFACT_VAT_*, GOFACT_CHROME, GOFACT_OFFLINE,
GOFACT_PDP, SUPERPDP_*.