Verifactu PHP: Opciones y Guía de Integración

Ayuda a desarrolladores para integrar Verifactu con PHP: aprende a realizar peticiones REST, generar facturas con QR, firmar con certificado digital y crear XML de forma eficiente.

screenshot
Verifacti

Verifacti

18 mar 2025

Introducción

Para cumplir con los requisitos de Verifactu, existen dos opciones principales:

  1. Integrarse directamente con la administración: Este enfoque presenta varios retos técnicos, entre ellos:

    • Documentación confusa e insuficiente.
    • Uso obligatorio de XML como formato de comunicación.
    • Restricciones de tiempo y frecuencia en las llamadas a la API de la administración.
    • Envío con certificado digital.
    • Encadenamiento obligatorio de los registros de facturación.
    • Generación y verificación de huellas/hash.
  2. Usar una API REST como Verifacti: Una solución sencilla que permite realizar peticiones en JSON sin necesidad de certificado digital y sin los retos técnicos de la integración directa. Ver documentación API Verifactu.

Cómo hacer una petición a una API REST desde PHP

De cara a usar una API Rest como la de Verifactu, es necesario poder realizar llamadas a este tipo de APIs. Para realizar una petición HTTP a una API REST desde PHP, puedes utilizar diferentes métodos. Las librerías más comunes son:

Ejemplo de Integración con cURL en PHP

A continuación, un ejemplo de cómo realizar la misma petición usando cURL en PHP:

<?php

$url = "https://api.verifacti.com/verifactu/create";
$apiKey = "<API_KEY>";

$data = '{
  "serie": "A",
  "numero": "234634",
  "fecha_expedicion": "02-12-2024",
  "tipo_factura": "F1",
  "descripcion": "Descripcion de la operacion",
  "nif": "A15022510",
  "nombre": "Empresa de prueba SL",
  "lineas": [{
    "base_imponible": "200",
    "tipo_impositivo": "21",
    "cuota_repercutida": "42"
  }],
  "importe_total": "242"
}';

$ch = curl_init();

curl_setopt_array($ch, array(
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $data,
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer " . $apiKey,
    "Content-Type: application/json"
  ),
));

$response = curl_exec($ch);
$error = curl_error($ch);

curl_close($ch);

if ($error) {
  echo "cURL Error: " . $error;
} else {
  echo $response;
}
?>

Cómo pegar el QR a la factura en PHP

Parte de la integración requerirá pegar un QR en un documento PDF desde PHP. Para ello puedes utilizar:

Ejemplo con FPDF:

require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image('qr_code.png', 10, 10, 50, 50);
$pdf->Output('factura.pdf', 'F');

Cómo generar un QR en PHP

Si vas a optar por generar tú mismo el QR, para generar un código QR en PHP, puedes utilizar librerías como:

Ejemplo usando QRcode:

include('phpqrcode/qrlib.php');
QRcode::png('Texto de ejemplo', 'qr_code.png');

Nota: Este paso sería innecesario si se usa Verifacti, ya que la API proporciona el QR.

imagen footer

“No dejes para mañana lo que puedes hacer hoy.”

Benjamin Franklin

Contacta con nosotros

Los contenidos proporcionados por Bilbabit SL en cualquiera de sus secciones (Blog, guías, landing pages, sección preguntas frecuentes, emails comerciales o de atención al cliente) son exclusivamente informativos y no tienen validez legal. BILBABIT no es una empresa de consultoría fiscal, sino una desarrolladora de software fiscal, por lo que la información que ofrece es de carácter orientativo. En cualquier caso, cualquier actividad relacionada con la facturación y la fiscalidad debe ser consultada siempre y sin excepción con un asesor fiscal que entienda las implicaciones específicas de cada normativa para cada empresa o profesional en particular.