Visión general
La Verifactu API te permite generar, enviar y consultar facturas cumpliendo con Verifactu y TicketBAI. Es una API REST con autenticación por API Key y respuestas en JSON.
https://api.verifactu-api.com/v1JSONBearer <API_KEY>Autenticación
Incluye tu API Key en la cabecera Authorization de todas las peticiones.
# curl
curl -X GET "https://api.verifactu-api.com/v1/nifs" \
-H "Authorization: Bearer <tu_api_key>" \
-H "Content-Type: application/json"
// JavaScript (fetch)
await fetch('https://api.verifactu-api.com/v1/nifs', {
headers: { 'Authorization': 'Bearer '+process.env.VERIFACTU_API_KEY }
})
Errores
La API utiliza códigos HTTP estándar. En caso de error, el cuerpo incluye un objeto con code, message y, opcionalmente, details.
{
"error": {
"code": "invalid_recipient",
"message": "El NIF del receptor no es válido",
"details": { "field": "receptor.nif" }
}
}
Sandbox
Usa el entorno de pruebas para validar tu integración sin efectos en producción.
https://sandbox.verifactu-api.com/v1sk_dev_... (no compartas tu clave pública)Límites
Aplicamos rate limiting por plan. Si superas el límite, devolveremos 429 Too Many Requests.
NIFs
Lista los NIFs configurados en tu cuenta.
curl -s -H "Authorization: Bearer <api_key>" \
https://api.verifactu-api.com/v1/nifs | jq
Valida un NIF antes de generar una factura.
curl -X POST https://api.verifactu-api.com/v1/nifs/validate \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{"nif":"B00000000"}'
Facturas
Crea una factura y la envía a Verifactu/TicketBAI según la configuración.
// Node.js
import { VerifactuAPI } from '@verifactu/sdk'
const api = new VerifactuAPI(process.env.VERIFACTU_API_KEY)
const factura = await api.facturas.crear({
emisor: { nif: 'B00000000' },
receptor: { nif: '00000000A', nombre: 'Cliente Demo' },
lineas: [ { concepto: 'Servicio', cantidad: 1, precio: 9.99 } ]
})
Obtiene una factura por su identificador.
curl -H "Authorization: Bearer <api_key>" \
https://api.verifactu-api.com/v1/facturas/fac_123
Consulta el estado de procesamiento y envío.
curl -H "Authorization: Bearer <api_key>" \
https://api.verifactu-api.com/v1/facturas/fac_123/estado
Procesamiento en lote
Permite enviar un conjunto de facturas para procesarlas de forma asíncrona.
curl -X POST https://api.verifactu-api.com/v1/facturas/lote \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{"facturas":[{"emisor":{"nif":"B00000000"},"receptor":{"nif":"00000000A","nombre":"Demo"},"lineas":[{"concepto":"Servicio","cantidad":1,"precio":9.99}]}]}'
Webhooks
Registra un endpoint para recibir eventos en tiempo real. Los webhooks están firmados y debes validar la firma antes de procesar.
Registra un webhook de notificaciones.
curl -X POST https://api.verifactu-api.com/v1/webhooks \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{"url":"https://miapp.com/webhooks/verifactu","eventos":["factura.creada","factura.estado.actualizado"]}'
// Verificación de firma (Node.js/Express)
app.post('/webhooks/verifactu', rawBody(), (req, res) => {
const signature = req.header('X-Verifactu-Signature')
if (!verify(signature, req.rawBody)) return res.sendStatus(401)
const event = JSON.parse(req.rawBody)
handle(event)
res.sendStatus(200)
})
SDKs
Usa nuestras librerías oficiales para acelerar tu integración y aplicar buenas prácticas por defecto.
Soporte
¿Dudas o incidencias? Escríbenos y te ayudamos rápidamente.