Les guides du développeur

Pour contrôler chaque facture depuis votre propre code, au moment où votre système la produit : des exemples complets à copier, dans votre langage, et le contrat de l'appel qu'ils ont en commun.

Par où commencer

Il n'existe pas de bibliothèque à installer pour chaque langage : un appel HTTP suffit. Le bon point de départ dépend de ce que votre système utilise déjà.

Les guides publiés

Le contrat de l'appel

Chaque exemple fait le même appel : POST https://valide-facture.fr/api/validate, authentifié par l'en-tête Authorization: Bearer suivi de votre clé API.

Le rapport

Une réponse 200 porte toujours un rapport, et une facture non conforme n'est pas une erreur : elle a été jugée. Le membre verdict vaut CONFORME, NON_CONFORME ou NON_EVALUABLE ; le contrat garde une quatrième valeur, PROFIL_NON_SUPPORTE, qui n'est plus produite.

Chaque anomalie de findings porte sa gravité (severity), le code de la règle (code), l'explication en français (messageFr), l'endroit du fichier (location) et une piste de correction (correctionHint). Les membres versions et coverage disent quels référentiels ont été appliqués et quels contrôles ont réellement tourné. De nouvelles valeurs peuvent apparaître au fil des versions : prévoyez toujours une branche par défaut.

Les refus, et le geste qui convient

Quand le service n'a pas pu juger la facture, il répond en application/problem+json. Branchez votre traitement sur le membre type, jamais sur le seul code HTTP ni sur la phrase detail, dont la rédaction peut changer. Chaque type est une adresse qui mène à sa documentation.

typeCodeQue faire
https://valide-facture.fr/problems/unauthenticated401Vérifier la clé : absente, révoquée ou expirée.
https://valide-facture.fr/problems/insufficient-scope403Créer une clé qui autorise la validation.
https://valide-facture.fr/problems/rate-limit-exceeded429Attendre les secondes de l'en-tête Retry-After, puis renvoyer.
https://valide-facture.fr/problems/quota-exceeded429Ne pas renvoyer : changer d'abonnement ou attendre la période suivante. Pas de Retry-After.
https://valide-facture.fr/problems/malformed-request400Corriger l'envoi : un seul fichier, dans le champ file.
https://valide-facture.fr/problems/unreadable-document400Corriger le fichier : il est vide, tronqué ou mal formé.
https://valide-facture.fr/problems/payload-too-large413Réduire le fichier sous la borne de taille.
https://valide-facture.fr/problems/unsupported-media-type415Envoyer un PDF ou un XML.
https://valide-facture.fr/problems/unsupported-syntax415Envoyer un XML CII ou UBL.
https://valide-facture.fr/problems/validation-unavailable503Renvoyer plus tard, et garder correlationId pour le support.

Renvoyer la même requête après un refus d'envoi ou de fichier donne le même refus. Les deux 429 appellent des gestes opposés, et c'est pourquoi chaque exemple lit le type : l'un se résout en attendant quelques secondes, l'autre non.

Un troisième 429 ne vient pas de l'API : la limite de débit du serveur frontal répond par une page HTML, sans type. Testez donc l'en-tête Content-Type avant de décoder un corps d'erreur.

La documentation de l'API

La documentation de l'API décrit chaque réponse, chaque type de refus et le schéma complet du rapport, champ par champ, et permet d'essayer l'appel depuis le navigateur. Chaque code de règle qu'un rapport peut porter a sa page parmi les codes d'erreur du validateur.

Déposer une facture à valider

Pour voir un rapport complet avant d'écrire une ligne de code, déposez un Factur-X (PDF), ou un CII ou un UBL (XML), dans le validateur.

Déposer une facture à valider

Portée de ces pages

Ces exemples envoient une facture et lisent la réponse ; ils ne relancent rien d'eux-mêmes. Le verdict porte sur la conformité technique du document au format et aux règles appliquées par le validateur. Il constitue une aide au diagnostic, et ne présume pas de l'acceptation de la facture par la plateforme de votre destinataire.