Documentación API

Empieza a usar la API en 5 minutos. JSON REST, sin XML, sin SOAP.

Publicidad

AdSense placeholder

Añade NEXT_PUBLIC_ADSENSE_CLIENT en .env

¿Qué ofrece esta API?

Crear facturas

Envía JSON, recibe factura verificada con QR y hash SHA-256.

PDF automático

Cada factura tiene su PDF profesional descargable.

Rate Limiting

60 req/min, 1000/día por API key. Sin abuso.

100 facturas gratis

Cada 30 días desde tu primer uso. Sin tarjeta.

SDKs en 3 lenguajes

Node.js, Python y PHP. Copia y pega.

XML AEAT + QR

Generamos el XML FacturaE y el código QR verificable.

Quickstart

Copia, pega y envía tu primera factura en 5 minutos.

1Consigue tu API Key

Regístrate en el dashboard y obtén tu API key gratis. Formato: vf_live_XXX...

Ir al dashboard →

2Instala el SDK

📦 Node.js

npm install @verifactu/node

🐍 Python

pip install verifactu

🐘 PHP

composer require verifactu/sdk

3Envía tu primera factura

Node.js

import { VeriFactu } from '@verifactu/node';

const client = new VeriFactu('vf_live_xxx');

const factura = await client.invoices.create({
  emitter: {
    nif: 'B12345678',
    name: 'Tu Empresa SL'
  },
  receiver: {
    nif: '12345678A',
    name: 'Cliente Ejemplo'
  },
  lines: [{
    description: 'Desarrollo web',
    amount: 1000,
    vat: 21
  }]
});

console.log(factura.id);
// "d4f8c3a2-..."
console.log(factura.qrCode);
// URL del QR verificable

cURL

curl -X POST \
  https://verifactu-api-nine.vercel.app/api/v1/invoices \
  -H "Authorization: Bearer vf_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "emitter": {
      "nif": "B12345678",
      "name": "Tu Empresa SL"
    },
    "receiver": {
      "nif": "12345678A",
      "name": "Cliente Ejemplo"
    },
    "lines": [{
      "description": "Desarrollo web",
      "amount": 1000,
      "vat": 21
    }]
  }'

Respuesta: { "id": "uuid", "total": 1210, "vat": 210, "status": "created" }

Referencia de Endpoints

Base URL: https://verifactu-api-nine.vercel.app/api

MétodoEndpointDescripciónAuth
GET/v1/healthEstado del servicio
POST/v1/invoicesCrear facturaAPI Key
GET/v1/invoicesListar facturas (limit/offset)API Key
GET/v1/invoices/:idObtener factura por IDAPI Key
POST/v1/invoices/:idCancelar factura (action: cancel)API Key
GET/v1/invoices/:id/pdfDescargar factura en PDFAPI Key
GET/v1/invoices/exportExportar facturas a CSVAPI Key
POST/v1/invoices/exportImportar facturas desde CSV/JSONAPI Key
GET/v1/productsListar productosAPI Key
POST/v1/productsCrear productoAPI Key
GET/v1/customersListar clientes (search opcional)API Key
POST/v1/customersCrear clienteAPI Key
GET/v1/webhooksListar webhooksAPI Key
POST/v1/webhooksCrear webhookAPI Key
DELETE/v1/webhooksEliminar webhookAPI Key
GET/v1/subscriptionVer plan actualAPI Key
GET/v1/usageVer uso de rate limitAPI Key
GET/v1/keysListar API keysJWT
POST/v1/keysCrear nueva API keyJWT
GET/v1/user/statsEstadísticas del usuarioJWT
POST/auth/registerRegistrar usuario
POST/auth/loginIniciar sesión

Autenticación

API Key (para facturas)

Incluye tu API key en el header Authorization:

Authorization: Bearer vf_live_3a7b9c2d1e4f...

Formato: vf_live_ + 32 caracteres hexadecimales

JWT (para dashboard)

Para gestionar API keys y ver estadísticas, usa el token JWT del login:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Expira en 7 días. Se obtiene al hacer login o register.

Rate Limiting

60

peticiones / minuto

1.000

peticiones / día

100

facturas / mes

Si excedes el rate limit, recibirás HTTP 429 con el header Retry-After. Los headers X-RateLimit-* te indican cuántas peticiones te quedan.

Los SDKs reintentan automáticamente con exponential backoff. No necesitas gestionarlo manualmente.

Límite de Facturas (Plan Gratuito)

100 facturas gratis cada 30 días

El ciclo de 30 días empieza con tu primera factura, no al registrarte. Las facturas no usadas no se acumulan para el siguiente ciclo.

  • • Al alcanzar las 100 facturas, la API devuelve error 403
  • • En el dashboard ves cuántas te quedan y la fecha exacta de renovación
  • • No hay permanencia ni tarjeta de crédito

Códigos de Estado HTTP

200

OK - Petición exitosa

201

Created - Recurso creado (factura, producto...)

400

Bad Request - Faltan campos obligatorios

401

Unauthorized - API key inválida o ausente

403

Forbidden - Límite de facturas alcanzado

404

Not Found - La factura no existe o no es tuya

429

Rate Limit - Demasiadas peticiones

500

Internal Server Error - Error del servidor

Publicidad

AdSense placeholder

Añade NEXT_PUBLIC_ADSENSE_CLIENT en .env

¿Listo para empezar?

Crea tu cuenta gratis y obtén tu API key en 1 minuto.

Obtener API Key gratis