HttpClient + MultipartFormDataContent, idéal pour pipelines finance/ERP.

Intégrer FacturX API avec .NET

Fonctionne pour ASP.NET Core, Azure Functions ou Windows Services.

Support Polly pour retry/resilience
Compatible Azure WebJobs / Functions
Parfait pour intégrateurs ERP

Exemple curl

multipart/form-data
curl -X POST https://api.facturxapi.com/api/v1/validate \
  -H "Authorization: Bearer $FACTURX_API_KEY" \
  -F "[email protected]" \
  -F "lang=fr"

Snippet .NET

Auth + appel /api/v1/validate
using var client = new HttpClient
{
    BaseAddress = new Uri("https://api.facturxapi.com")
};
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("FACTURX_API_KEY"));

using var form = new MultipartFormDataContent();
form.Add(new StreamContent(File.OpenRead("Invoices/FX-2024-0001.pdf")), "file", "FX-2024-0001.pdf");
form.Add(new StringContent("fr"), "lang");

var response = await client.PostAsync("/api/v1/validate", form);
var payload = await response.Content.ReadFromJsonAsync<FacturxReport>();

if (payload is { Valid: false })
{
    logger.LogWarning("FacturX errors {@Errors}", payload.Errors);
}

Les 4 endpoints — appels multipart

Mêmes headers d'auth, mêmes codes d'erreur, même pipeline PDF/A-3 + Schematron EN16931.

POST /api/v1/validate

PDF/A-3 + XSD + Schematron

Valide un PDF Factur-X ou un XML CII. Retourne un rapport JSON structuré avec codes BR-* par ligne/champ.

curl -X POST https://api.facturxapi.com/api/v1/validate \
  -H "Authorization: Bearer $KEY" \
  -F "[email protected]"

POST /api/v1/extract

XML CII embarqué → JSON

Extrait le XML CII d'un PDF Factur-X reçu. Paramètre validate=true combine extraction + validation en une requête.

curl -X POST https://api.facturxapi.com/api/v1/extract \
  -H "Authorization: Bearer $KEY" \
  -F "[email protected]" \
  -F "validate=true"

POST /api/v1/convert

PDF → Factur-X PDF/A-3

Convertit un PDF visuel + données ERP (mode invoice_data JSON) en Factur-X PDF/A-3 conforme. veraPDF-certifié.

curl -X POST https://api.facturxapi.com/api/v1/convert \
  -H "Authorization: Bearer $KEY" \
  -F "[email protected]" \
  -F 'invoice_data={"invoiceNumber":"FA-001",...}'

POST /api/v1/repair

Corrections déterministes

Corrige automatiquement les erreurs réparables d'un XML CII (dates, décimaux, namespaces, schemeID). Retour : diff + XML réparé.

curl -X POST https://api.facturxapi.com/api/v1/repair \
  -H "Authorization: Bearer $KEY" \
  -F "[email protected]"

Checklist intégration

  • Réutiliser HttpClient (DI) pour éviter l'épuisement des sockets

  • Ajouter Polly (WaitAndRetry) sur 429/502

  • Logguer request_id via ILogger pour support

Retries & timeouts

Policy de retry Polly : 3 tentatives avec jitter + circuit-breaker sur 5xx consécutifs.

  • • Timeout HttpClient : 15 s
  • • Déclencher une alerte après 3 erreurs Schematron critiques
  • • Purger les fichiers temporaires après validation

Erreurs fréquentes

Mappez vos logs aux codes pour des corrections rapides.

System.Net.Http.HttpRequestException

Proxy d'entreprise bloque l'appel.

💡 Autoriser api.facturxapi.com dans vos règles sortantes ou utiliser Private Link.

400 invalid_xml

XML encodé en UTF-16.

💡 Convertir en UTF-8 avant de générer la facture.

BR-CO-26

Aucun identifiant vendeur (BT-29, BT-30 ou BT-31) présent dans la facture.

💡 Renseigner le SIREN dans BT-30 (schemeID="0002") ou le numéro de TVA dans BT-31.

FAQ

Peut-on l'utiliser dans Dynamics ?

Oui, créez un plugin qui envoie le PDF généré via HttpClient.

Comment suivre les quotas ?

Exposez les métriques dans Application Insights via custom dimensions.

Guide PDF/A-3

Vérifier vos exports ERP

Next steps

Activer votre clé

Plan Integration

Tous les endpoints + ERP-assisted