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);
}

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 Pro

1 000 validations/mois