Integrar VeriFactu en .NET y C#
· Equipo Factuneo
Emite facturas VeriFactu desde .NET con HttpClient: alta del emisor, emisión con idempotencia y estado por webhook. Ejemplo listo para tu API o servicio en C#.
Integra VeriFactu en tu aplicación .NET / C# con HttpClient. La API resuelve la huella, el XML, el QR y el envío a la AEAT; tú haces una petición HTTP.
1. API key
Guárdala fuera del código (variables de entorno o un appsettings seguro): FACTUNEO_API_KEY.
2. Cliente y alta del emisor
using System.Net.Http;
using System.Net.Http.Json;
var http = new HttpClient { BaseAddress = new Uri("https://factuneo.es/api/v1/") };
http.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("FACTUNEO_API_KEY"));
await http.PostAsJsonAsync("emisores", new {
nif = "B12345678",
nombreRazon = "Mi Empresa SL",
certMode = "PROPIO"
});
3. Emitir factura
var req = new HttpRequestMessage(HttpMethod.Post, "invoices") {
Content = JsonContent.Create(new {
emisorNif = "B12345678",
numeroSerie = "FAC-2026-0001",
fechaExpedicion = "2026-06-08",
tipoFactura = "F1",
nombreRazonEmisor = "Mi Empresa SL",
descripcionOperacion = "Servicios",
baseImponible = 100.00,
cuotaIva = 21.00,
importeTotal = 121.00,
destinatarios = new[] { new { nombreRazon = "Cliente SA", nif = "A28000024" } },
desglose = new[] { new {
claveRegimen = "01",
calificacionOperacion = "S1",
tipoImpositivo = 21,
baseImponible = 100.00,
cuotaRepercutida = 21.00
} }
})
};
req.Headers.Add("Idempotency-Key", "FAC-2026-0001");
var res = await http.SendAsync(req);
var factura = await res.Content.ReadFromJsonAsync<System.Text.Json.JsonElement>();
// factura.GetProperty("huella"), ("qr"), ("estado")
La cabecera Idempotency-Key evita duplicados si reintentas la petición.
4. Webhook de estado
Expón un endpoint (Minimal API o un controller) que reciba el POST de Factuneo con el estado del envío a la AEAT, verifica su firma HMAC-SHA256 con el secreto de tu cuenta y actualiza tu factura.
Referencia completa en la documentación. ¿Comparando opciones? Mira la comparativa.