Documentación API
Middleware Verifactu API
Versión 1.0.8
API para gestion de facturacion electronica con Verifactu
🔐 Autenticación
Todas las peticiones (excepto /api/health) requieren 3 headers de autenticación.
1
Obtén tus credencialesAccede a clientes.verifacturacion.com, ve a «Mi cuenta» y copia tu API Key y Secret.
2
Genera la firma antes de cada peticiónLa firma caduca a los 5 minutos — calcula una nueva en cada llamada.
3
Incluye los 3 headers en cada peticiónVer tabla de headers más abajo.
// PHP — genera los headers de autenticación $apiKey = 'tu_api_key'; $secret = 'tu_secret'; $timestamp = time(); $message = $apiKey . ':' . $timestamp; $signature = hash_hmac('sha256', $message, $secret); // Headers que debes incluir en cada petición: // X-Api-Key: $apiKey // X-Timestamp: $timestamp // X-Signature: $signature
| Header | Requerido | Descripción |
|---|---|---|
| X-Api-Key | obligatorio | Clave de API del cliente, obtenida en el panel de cliente. |
| X-Timestamp | obligatorio | Timestamp Unix de la peticion (segundos desde 1970). |
| X-Signature | obligatorio | Firma HMAC-SHA256 calculada con la clave secreta del cliente. |
📋 Endpoints
POST
/api/invoice/create
🔒
Crear una factura
Crea y registra una nueva factura en el sistema Verifactu. Requiere autenticacion HMAC.
Request Body
Campo
Tipo
Descripción
prestashopId
string
Identificador de la factura/pedido en el sistema de origen
Ej:
API_WEBHOOK_TEST_001invoice_data
*
object
Datos de la factura. Para notas de credito usar credit_slip_data con la misma estructura
invoice_data.
number
*
string
Ej:
API-WEBHOOK-TEST-001
invoice_data.
total_paid_tax_incl
*
number (float)
Ej:
121
invoice_data.
total_paid_tax_excl
number (float)
Ej:
100
invoice_data.
total_products_tax_excl
number (float)
Usado para calcular la base si no se envia total_paid_tax_excl
invoice_data.
total_products_tax_incl
number (float)
invoice_data.
total_shipping_tax_excl
number (float)
invoice_data.
total_shipping_tax_incl
number (float)
invoice_data.
total_discount_tax_excl
number (float)
invoice_data.
total_discount_tax_incl
number (float)
invoice_data.
total_wrapping_tax_excl
number (float)
invoice_data.
total_wrapping_tax_incl
number (float)
invoice_data.
shipping_tax_rate
number (float)
invoice_data.
discount_tax_rate
number (float)
invoice_data.
wrapping_tax_rate
number (float)
invoice_data.
partial
Presencia de este campo marca la factura como nota de credito parcial
invoice_data.
order_slip_type
string
Presencia de este campo marca la factura como nota de credito
invoice_data.
note
string
order_data
object
order_data.
invoice_date
string (date-time)
Ej:
2025-10-23T21:32:19+02:00
order_data.
reference
string
invoice_address
*
object
invoice_address.
company
string
Ej:
API Test Company S.L.
invoice_address.
vat_number
string
CIF/VAT del destinatario. Requerido para operaciones intracomunitarias
Ej:
B99999999
invoice_address.
dni
string
DNI del destinatario, alternativo a vat_number para persona fisica
invoice_address.
country_iso
*
string
Codigo ISO del pais (ej. ES). Obligatorio
Ej:
ES
invoice_address.
postcode
string
Usado para detectar Canarias/Ceuta/Melilla
invoice_address.
firstname
string
invoice_address.
lastname
string
taxes
*
array
Lineas de IVA. La suma de base y amount debe ser consistente con los totales de invoice_data
taxes[].
base
number (float)
Ej:
100
taxes[].
rate
number (float)
Ej:
21
taxes[].
amount
number (float)
Ej:
21invoice_relationships
object
Solo para notas de credito/rectificativas
invoice_relationships.
parent_invoice_id
string
invoice_relationships.
original_invoice_number
string
invoice_relationships.
original_invoice_date
string (date-time)
metadata
object
metadata.
exemption_reason
string
metadata.
shop_domain_webhook
string
URL a la que se notificara la creacion de la factura
metadata.
shop_domain
string
metadata.
prestashop_version
string
metadata.
module_version
string
Respuestas
201
Factura creada exitosamente
400
Datos invalidos (formato incorrecto, pais no especificado, NIF invalido, campos obligatorios faltantes o datos inconsistentes)
401
Autenticacion HMAC ausente o invalida
422
No se pudo determinar el tipo de factura o la estrategia de operacion de IVA
500
Error inesperado del servidor
POST
/api/invoice/getInvoice
🔒
Consultar una factura
Consulta el estado y los datos de una factura previamente registrada, a partir de su UUID. Requiere autenticacion HMAC.
Request Body
Campo
Tipo
Descripción
invoice_id
*
string
UUID de la factura a consultar
Ej:
3fa85f64-5717-4562-b3fc-2c963f66afa6Respuestas
200
Factura encontrada
400
Formato invalido o invoice_id ausente/vacio/no valido
404
No existe ninguna factura con el invoice_id proporcionado
500
Error inesperado del servidor
GET
/api/health
Health check del servicio
Verifica que el servicio esta funcionando correctamente. No requiere autenticacion.
Respuestas
200
Servicio funcionando correctamente