Facturino / Documentation / AFNOR (générique)

Connecteur AFNOR XP Z12-013 — une PA, n'importe laquelle

Pas besoin d'attendre un connecteur dédié : le connecteur AFNOR générique de Facturino se branche sur toute Plateforme Agréée qui expose l'API standard d'interopérabilité XP Z12-013 (AFNOR, mai 2025). C'est la norme que les plateformes agréées adoptent pour être interopérables entre elles — la même API partout. Résultat : au-delà de nos connecteurs dédiés (Super PDP, Iopole, B2Brouter, Seqino), vous pouvez connecter l'une des 137+ plateformes agréées dès qu'elle publie son API AFNOR, en renseignant simplement sa base URL et vos identifiants — aucun développement côté Facturino.

Statut : bêta. Le connecteur générique est éprouvé sur l'API AFNOR d'une Plateforme Agréée existante et sa couverture s'étend à chaque PA qui publie son API normée. Pour Super PDP, Iopole, B2Brouter et Seqino, nos connecteurs dédiés restent le chemin le plus éprouvé.

Sous le capot, le connecteur implémente les deux services de la norme : Flow Service (POST /flows multipart, POST /flows/search, téléchargement par docType) et Directory Service (résolution SIREN/SIRET), avec l'auth OAuth 2.0 client_credentials du référentiel.

Norme
XP Z12-013
AFNOR, mai 2025
Couverture
6 flux
F1 · F2 · F6 · F10 · F11 · F12
Authentification
OAuth 2.0
client_credentials

Couverture universelle. La norme laisse chaque PA monter ses services où elle veut : Facturino expose donc, à la connexion, des champs pour surcharger le segment Flow, le segment Directory et l'endpoint OAuth2. Aucune intervention du support n'est requise — vous configurez tout vous-même dans l'interface. Vides, ces champs retombent sur les chemins normatifs par défaut (/flow-service, /directory-service, {base}/auth-service/token).

1. Préparer votre PA

  1. Récupérez la base URL de votre PA (ex : https://pa.example.com/api).
  2. Générez un client_id et un client_secret OAuth 2.0 dans la console de votre PA.
  3. Vérifiez auprès de votre PA que les 6 flux AFNOR sont implémentés :
    • F1 — émission de facture
    • F2 — émission d'avoir
    • F6 — événements de cycle de vie
    • F10 — e-reporting
    • F11 / F12 — annuaire (SIREN, SIRET)

2. Connecter Facturino

La connexion d'une PA se gère depuis l'interface Facturino — les identifiants sensibles ne transitent jamais par l'API publique.

  1. Ouvrez Paramètres → Facturation électronique et choisissez Autre PA (AFNOR XP Z12-013).
  2. Renseignez les identifiants :
    • Client ID (OAuth2) ou clé API (obligatoire) — fourni par votre PA
    • Client Secret (optionnel) — laissez vide si votre PA utilise une simple clé API (elle sera envoyée en bearer)
    • Base URL (obligatoire) — URL racine de l'API AFNOR de votre PA
  3. (Optionnel) Config avancée, si votre PA monte ses services hors des chemins normatifs :
    • Endpoint OAuth2 (token) — défaut {base}/auth-service/token
    • Segment Flow Service — défaut /flow-service
    • Segment Directory Service — défaut /directory-service
    • Scope OAuth2 — uniquement si votre PA l'exige

    Exemple Super PDP : endpoint https://api.superpdp.tech/oauth2/token, segment Flow /afnor-flow, segment Directory /afnor-directory.

  4. Cliquez sur Connecter. Facturino négocie un bearer OAuth 2.0 (client_credentials), puis dépose chaque flux via POST {flow}/v1/flows (multipart flowInfo + fichier Factur-X/CII).

3. Webhook entrant

Au moment de Connecter, Facturino génère un secret HMAC-SHA256 et affiche une URL à configurer sur votre PA : https://facturino.com/api/v1/webhooks/pa-flow/{companyId}. Le secret est accepté en encodage hexadécimal ou base64 — Facturino détecte automatiquement le format.

4. Codes de cycle de vie supportés

Le connecteur mappe les 14 codes du cycle de vie facture (fr:200 à fr:213) du CDAR vers les statuts internes Facturino. Les codes obligatoires DGFiP sont garantis :

  • fr:200 — Déposée
  • fr:210 — Refusée
  • fr:212 — Encaissée
  • fr:213 — Rejetée

Les autres codes de la plage 200–213 (recommandés / optionnels) sont également mappés. Un code hors de cette plage n'entraîne aucun changement de statut : le connecteur retombe alors sur l'accusé technique du flux (Pending → sending).

Les métadonnées d'un flux XP Z12-013 ne portent que l'accusé technique (Pending, Ok, Error). Les statuts réglementaires arrivent comme flux CustomerInvoiceLC entrants : Facturino télécharge le document CDAR du flux (docType=Original), y lit le code, le motif et la note, et l'apparie à la facture par le numéro qu'il référence. Une plateforme qui expose en plus le code sur les métadonnées est lue sans téléchargement uniquement si referencedFlowId désigne le dépôt. Un accusé Ok sur un flux de cycle de vie ne modifie jamais la facture à lui seul.

E-reporting : contrôles et accusés

Le rapport FRR suit les formats DGFiP v3.2 : dates sur huit chiffres (AAAAMMJJ) et horodatage sur quatorze chiffres (AAAAMMJJHHMMSS). Les données unitaires portent l’identité de l’acheteur, la TVA du déclarant et, pour un avoir 381, la référence de la facture corrigée (TG-11). Consultez les règles de l’avoir unitaire.

Un accusé technique Ok produit l’état acknowledged, résumé submitted. L’acceptation par l’administration (accepted) provient d’un verdict métier dans le cycle de vie du rapport.

5. Tester votre première facture

curl -X POST https://facturino.com/api/v1/invoices/inv_xxx/send \
  -H "Authorization: Bearer fac_test_..."

Avec une clé fac_test_, le dépôt est simulé : aucun appel à la plateforme. En production, surveillez le statut via le webhook ou par polling sur GET /v1/invoices/{id} : sending attend la confirmation du dépôt, puis deposited et les autres statuts suivent les réponses de votre PA.

Questions fréquentes

Ma plateforme agréée n'a pas de connecteur dédié — puis-je quand même la connecter ?

Oui, dès qu'elle expose l'API AFNOR XP Z12-013. Renseignez sa base URL et vos identifiants OAuth 2.0 : aucun développement côté Facturino n'est nécessaire. Si elle n'expose pas encore cette API, restez en dépôt manuel (téléchargement du Factur-X conforme) en attendant.

Comment savoir si ma PA expose l'API AFNOR ?

Demandez à votre PA si elle publie une API conforme XP Z12-013 (Flow Service + Directory Service, auth OAuth 2.0 client_credentials). Sa documentation développeur doit mentionner la norme ou les endpoints /flows et l'annuaire SIREN/SIRET.

Ma PA monte ses services sur des chemins non standard — est-ce bloquant ?

Non. La configuration avancée permet de surcharger le segment Flow, le segment Directory, l'endpoint OAuth 2.0 et le scope. Laissés vides, ces champs retombent sur les chemins normatifs par défaut.

Dois-je fournir un client secret ?

Seulement si votre PA utilise OAuth 2.0 client_credentials. Si elle s'authentifie par une simple clé API, laissez le champ secret vide : la clé sera envoyée en bearer.

Le connecteur générique gère-t-il l'e-reporting ?

Oui : le flux F10 (e-reporting) fait partie des six flux implémentés, aux côtés de l'émission (F1), l'avoir (F2), le cycle de vie (F6) et l'annuaire (F11/F12).

Ressources