Soumettre une facture fournisseur électronique (CII/UBL) au registre (ADR-00D101 §7)
const url = 'https://example.com/v1/inbound-invoices';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"operatingMandateId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","xml":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/inbound-invoices \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "operatingMandateId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "xml": "example" }'Parse (fail-closed) puis valide EN 16931 le document. TOUJOURS enregistré : received si conforme (champs extraits, montants en centimes bigint-string), rejected avec raisons structurées sinon (le rejet est un résultat métier, pas une erreur). Re-upload octet-identique → réponse idempotente (deduplicated: true). Même n° de facture/fournisseur avec un contenu DIFFÉRENT → 409 INBOUND_INVOICE_DUPLICATE_CONFLICT.
Authorizations
Section intitulée « Authorizations »Request Body required
Section intitulée « Request Body required »object
Document XML source (CII D16B/D22B ou UBL 2.1), max 2 000 000 caractères
Example generated
{ "operatingMandateId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "xml": "example"}Responses
Section intitulée « Responses »Entrée du registre (received ou rejected) + indicateur de dédup
object
object
object
SHA-256 hex du document source (dédup octet-identique)
BT-27 — null si rejet
BT-30 quand SIREN français (9 chiffres)
BT-31
BT-44
BT-1
BT-3 (UNTDID 1001)
BT-2
BT-5 (ISO 4217)
object
Montant en centimes (bigint sérialisé en string)
object
Montant en centimes (bigint sérialisé en string)
object
Montant en centimes (bigint sérialisé en string)
object
Montant en centimes (bigint sérialisé en string)
object
Montant en centimes (bigint sérialisé en string)
Ventilation TVA BG-23 (vide si rejet)
object
BT-118 (UNTDID 5305)
BT-119 (%)
object
Montant en centimes (bigint sérialisé en string)
object
Montant en centimes (bigint sérialisé en string)
Raisons structurées de non-conformité (vide si received)
object
True = document octet-identique déjà au registre (réponse idempotente)
Example
{ "data": { "invoice": { "status": "received", "syntax": "cii", "typeCode": "380", "totalLineNet": { "amountCents": "12000", "currency": "EUR" }, "totalTaxExclusive": { "amountCents": "12000", "currency": "EUR" }, "totalTax": { "amountCents": "12000", "currency": "EUR" }, "totalGrand": { "amountCents": "12000", "currency": "EUR" }, "totalDue": { "amountCents": "12000", "currency": "EUR" }, "vatBreakdown": [ { "ratePercent": "20.00", "taxable": { "amountCents": "12000", "currency": "EUR" }, "tax": { "amountCents": "12000", "currency": "EUR" } } ], "rejectionReasons": [ { "rule": "BR-CO-15" } ] } }}Corps ou paramètres invalides
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}Non authentifié
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}Permission refusée ou périmètre non vérifiable
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}Conflit d’état ou stock épuisé
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}