Integrar VeriFactu en Python y Django
· Equipo Factuneo
Emite facturas VeriFactu desde Python/Django con requests: alta del emisor, emisión con idempotencia y webhook de estado. Ejemplos listos para copiar.
Integra VeriFactu en Python/Django con una simple petición HTTP. Nada de XML, huellas ni SOAP a mano.
1. API key
Guarda tu API key en una variable de entorno (FACTUNEO_API_KEY), no en un settings.py versionado.
2. Cliente mínimo con requests
import os, requests
BASE = "https://factuneo.es/api/v1"
HEADERS = {"x-api-key": os.environ["FACTUNEO_API_KEY"]}
# Alta de emisor
requests.post(f"{BASE}/emisores", headers=HEADERS, json={
"nif": "B12345678",
"nombreRazon": "Mi Empresa SL",
"certMode": "PROPIO",
})
3. Emitir factura
r = requests.post(f"{BASE}/invoices",
headers={**HEADERS, "Idempotency-Key": "FAC-2026-0001"},
json={
"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": [{"nombreRazon": "Cliente SA", "nif": "A28000024"}],
"desglose": [{
"claveRegimen": "01",
"calificacionOperacion": "S1",
"tipoImpositivo": 21,
"baseImponible": 100.00,
"cuotaRepercutida": 21.00,
}],
})
factura = r.json() # huella, qr y estado en la respuesta
4. Webhook en Django
import json
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def factuneo_webhook(request):
# verifica la firma HMAC-SHA256 con el secreto de tu cuenta
estado = json.loads(request.body)["estado"]
return HttpResponse(status=204)
La documentación tiene la referencia completa. Compara con otras opciones en la comparativa.