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).

5. Tester votre première facture

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

Une fois la facture envoyée, surveillez le statut via le webhook ou par polling sur GET /v1/invoices/{id}. Vous devriez observer deposited dans les secondes suivant l'envoi, puis les autres statuts au rythme de votre PA.

Ressources