Kreyo VeriFactu

VeriFactu sin implementar VeriFactu.

Send invoice JSON. Kreyo computes the SHA-256 chain, builds the registro, signs it with your certificate, and submits it to AEAT in real time — returning the CSV confirmation and QR URL.

Free tier — 50 registros/month, no certificate required.

JSON in — registro firmado + QR out

One API call does it all: validate, chain, sign, submit to AEAT.

POST /verifactu/v1/registros/alta

  "issuer_nif": "B12345678",
  "issuer_name": "Acme Solutions S.L.",
  "invoice_series": "A",
  "invoice_number": "2026-0142",
  "invoice_date": "2026-03-15",
  "invoice_type": "F1",
  "description": "Desarrollo web",
  "recipient_nif": "A87654321",
  "taxes": [
    "rate": 21.0,
    "base": 3120.00,
    "amount": 655.20
  ],
  "tax_total": 655.20,
  "invoice_total": 3775.20,
  "certificate_id": "cert_abc123"
→
200 OK

  "id": "vf_7f3a9b2c",
  "chain_position": 1847,
  "huella": "A1B2C3D4E5F6...",
  "estado_envio": "aceptado",
  "csv_aeat": "3M7A2K1P9Q",
  "qr_url": "https://www1.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=B12345678&numserie=A%2F2026-0142&fecha=15-03-2026&importe=3775.20",
  "legend_required": "VERI*FACTU",
  "signed": true,
  "created_at": "2026-03-15T10:30:42Z"
Get your free API key — no auth required

The VeriFactu deadline is here

RRSIF (Real Decreto-ley 15/2025) obliges all SIF software in the Spanish market. Non-compliance: up to €150,000 per product type.

Oct 2028 (planned) — Companies

Impuesto de Sociedades

All companies paying Impuesto de Sociedades must issue invoices through a VeriFactu-capable SIF. Date planned for October 2028 (pending regulatory approval).

Oct 2028 (planned) — Self-employed

IRPF declarantes

Self-employed and businesses under IRPF, same date: planned for October 2028 (pending regulatory approval). Every SaaS serving autónomos is on the hook.

Up to €150,000 penalty

Per non-compliant product

RRSIF penalizes SIF manufacturers — not end users. If your software issues invoices to Spanish customers, it must be VeriFactu-capable.

What Kreyo does for you

3–6 months of implementation work, collapsed into one API integration.

1

Validate automatic

NIF check digits, IVA rate validation (0%, 4%, 10%, 21%), tax math consistency, date range (not older than 4 years, not in the future), F2 simplificada recipient rule. Returns specific AEAT error codes, not generic 500s.

2

Chain per NIF

Compute the SHA-256 huella over the AEAT-specified field order. Append to the cryptographic chain for this issuer NIF (Redis lock + PostgreSQL UNIQUE constraint prevent duplicates even under concurrent load).

3

Sign XMLDSig

Build the RegistroAlta or RegistroAnulacion XML per SuministroLR.xsd. Apply W3C XMLDSig enveloped signature using the customer's own .pfx certificate — RSA-SHA256, not XAdES. Your software remains the SIF.

4

Submit to AEAT mutual TLS

Submit via SOAP 1.1 over HTTPS with mutual TLS using the customer's certificate. Parse the response: Correcto, AceptadoConErrores, Incorrecto, or SOAP fault. All AEAT traffic logged for audit.

5

Retry automatically backoff

AEAT has planned outages. If submission fails, the registro is queued for retry with exponential backoff: 1min → 5min → 15min → 1h → 6h. The chain continues — AEAT confirms this is correct behaviour per their FAQ.

6

Return CSV + QR URL compliant

Returns the AEAT CSV confirmation code, the QR URL formatted exactly per spec (URL-encoded serie, DD-MM-YYYY fecha, dot-decimal importe), and the mandatory legend "VERI*FACTU" for the visible invoice.

Everything RRSIF requires. Nothing you have to build.

The spec is 200+ pages of AEAT PDFs. We read them so you don't have to.

🔗

SHA-256 hash chain

Per-NIF cryptographic chain with the exact field ordering from AEAT spec v1.0.3. Golden-vector tested. Chain never breaks — even during AEAT outages.

🔏

XMLDSig enveloped signature

W3C XML Digital Signature on each registro using your customer's certificate. RSA-SHA256, C14N canonicalization. Your certificate, your signature — Kreyo is not your representative.

📡

SOAP/AEAT client

Direct integration with AEAT's VerifactuSOAP endpoint via SOAP 1.1 + mutual TLS. Handles production and pre-production. Parses all response states including SOAP faults.

📦

Batch up to 1,000 registros

AEAT accepts up to 1,000 registros per SOAP call. POST /registros/batch chains, signs, and submits all of them in a single request. Ideal for high-volume SIFs.

📱

QR URL per spec

The exact URL format AEAT requires for the QR code on the visible invoice. URL-encoded, DD-MM-YYYY dates, dot-decimal amounts. Production and sandbox variants.

🔑

Your certificate. Your control.

Upload a .pfx certificate once. Stored encrypted (AES-256). Reuse across FacturaE and VeriFactu. Kreyo never signs on your behalf — you remain the SIF manufacturer.

Who builds with Kreyo VeriFactu

Any SIF in the Spanish market serving companies or autónomos needs this before the deadline.

ERPs & vertical SaaS

Add VeriFactu in days

Talleres, clínicas, academias, hostelería, comercio — any vertical SaaS with Spanish customers billing IVA needs VeriFactu. One API, all product types (F1–F5, R1–R5).

Gestorías

One integration, all clients

Submit registros for multiple NIFs under a single API key. Each NIF has an independent chain. Each client uploads their own certificate.

Fintechs

Invoice compliance at scale

Factoring platforms, expense management tools, and neobanks issuing invoices for autónomos. Batch endpoint handles 1,000 registros per call.

Software contable

Compete with built-in VeriFactu

Compete with Holded and Quipu without a 6-month compliance sprint. Same JSON data model as your existing invoice flow.

One subscription. One API key.

Every Kreyo product runs on a single shared pool of operations — no separate plans per product.

Free
€0/mo
100 operations/month, all products
  • Shared pool across all products
  • 5 req/min rate limit
  • No credit card required
Get started free
Pro
€49/mo
10,000 operations/month, all products
  • Shared pool across all products
  • 60 req/min rate limit
  • Unlimited certificates
Activation coming soon — email us if you need it now

Get your free API key

50 registros/month, no certificate required to start testing.

Invoicing the public sector (FACe) or exchanging FacturaE privately? Same certificate, same JSON. Check out Kreyo FacturaE → For the AEAT B2B mandate (UBL), see Kreyo B2B →

Need visible PDF invoices with the QR embedded? Check out Kreyo PDF →