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": "Nombre cliente",
  "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.

Posts relacionados

Obligatoriedad Verifactu: ¿para quién es obligatorio Verifactu?

Obligatoriedad Verifactu. Quién está obligado al cumplimiento de VeriFactu. Obligatoriedad para sisemas informáticos de facturación, personas jurídicas y autónomos.

El Reglamento VeriFactu: ley y normativa para VeriFactu

Explicación sobre el Real Decreto 1007/2023, conocido como el reglamento VeriFactu. Resumen e implicaciones del reglamento VeriFactu.

Verifactu en Python: guía integración

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