Download the PHP package squareetlabs/laravel-verifactu without Composer

On this page you can find all versions of the php package squareetlabs/laravel-verifactu. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-verifactu

Laravel Verifactu - Sistema de facturación electrónica

Paquete Laravel 10/11/12 para gestión y registro de facturación electrónica VeriFactu

Quality Score Code Intelligence Latest Stable Version Total Downloads License


Características principales


Instalación

Publica la configuración y migraciones:


Configuración

Edita tu archivo .env o config/verifactu.php según tus necesidades:

Modos de facturación

Este paquete soporta dos modos de facturación:

1. Modo VERIFACTU (por defecto)

El modo estándar de facturación electrónica.

2. Modo NO VERIFACTU (Requerimiento)

Para facturas bajo requerimiento de la Agencia Tributaria. Requiere un RefRequerimiento proporcionado por Hacienda.

El paquete ajustará automáticamente las URLs del servicio SOAP según el modo configurado:

Colaborador social (entidad colaboradora AEAT)

Si tu plataforma está registrada como entidad colaboradora de la AEAT, puedes remitir registros en nombre de tus clientes usando el certificado de la plataforma: los obligados de emisión (autónomos, pymes…) no necesitan aportar su propio certificado digital.

En aplicaciones multi-tenant, usa AeatClientFactory (resuelve el certificado vía el contrato CertificateProvider, por defecto desde config):

Si tu aplicación guarda los certificados en otro sitio (por emisor, cifrados, Vault, S3+KMS...), implementa el contrato y re-vincúlalo:

Parámetros del Sistema Informático

Configura los parámetros según las características de tu sistema:

Variables de entorno disponibles

Todas las opciones de configuración pueden establecerse mediante variables de entorno en tu archivo .env:

Estructura de configuración completa

El archivo config/verifactu.php incluye la siguiente estructura:


Integración

Este paquete soporta dos modos de uso:

1. Proyectos Nuevos (Uso completo)

Si estás empezando un proyecto desde cero, puedes usar los modelos y migraciones que incluye el paquete.

  1. Habilita las migraciones en tu .env:

  2. Ejecuta las migraciones:

  3. Usa los modelos Squareetlabs\VeriFactu\Models\Invoice, Breakdown y Recipient directamente.

2. Sistemas Existentes (Adaptador)

Si ya tienes tu propio sistema de facturación, no necesitas usar nuestras migraciones. Solo necesitas implementar los contratos en tus modelos.

  1. Asegúrate de que VERIFACTU_LOAD_MIGRATIONS es false (por defecto).
  2. Genera un adaptador para tu modelo de factura:

  3. Esto generará el código necesario en tu terminal. Cópialo a tu modelo App\Models\Invoice e implementa la interfaz VeriFactuInvoice.

Ejemplo de implementación:


Uso rápido

Crear una Invoice (Ejemplo de Controller)


Tipos de Invoice disponibles

El paquete soporta todos los tipos de factura según la normativa AEAT:

Tipo Enum Descripción
F1 InvoiceType::STANDARD Factura completa
F2 InvoiceType::SIMPLIFIED Factura simplificada
F3 InvoiceType::SUBSTITUTE Factura que sustituye a otra
F4 InvoiceType::EXPORT Factura de exportación
R1 InvoiceType::RECTIFICATIVE_R1 Rectificativa por sustitución o diferencia
R2 InvoiceType::RECTIFICATIVE_R2 Rectificativa por anulación
R3 InvoiceType::RECTIFICATIVE_R3 Rectificativa por descuento
R4 InvoiceType::RECTIFICATIVE_R4 Rectificativa por incremento
R5 InvoiceType::RECTIFICATIVE_R5 Rectificativa por otros conceptos

Ejemplos de tipos de Invoice

A continuación, ejemplos de cómo crear cada tipo de invoice usando el modelo y enums:

Factura estándar

Factura simplificada

Factura de sustitución

Factura rectificativa (R1)

Factura de exportación (F4)

Factura con encadenamiento blockchain

Subsanación (reenvío tras rechazo AEAT)

Nota: Para facturas rectificativas y sustitutivas, si implementas los campos y relaciones adicionales (como facturas rectificadas/sustituidas, tipo de rectificación, importe de rectificación), deberás añadirlos en el array de creación.


Campos avanzados del modelo Invoice

El modelo Invoice incluye campos avanzados para cumplir con todas las especificaciones AEAT:

Campos de encadenamiento blockchain

Campos de facturas rectificativas

Campos de subsanación

Campos multi-tenant (múltiples instalaciones)

Si tu sistema gestiona múltiples instalaciones bajo el mismo NIF emisor:

Campos de estado de respuesta AEAT

Después de enviar una factura a AEAT, puedes actualizar estos campos:

Campos adicionales

Tabla de referencia rápida de campos

Campos básicos

Campo Tipo Descripción
number string Número/serie de factura
date date Fecha de expedición
type InvoiceType enum Tipo de factura (F1, F2, R1, etc.)
amount decimal Base imponible
tax decimal Importe de impuestos
total decimal Importe total

Campos de cliente/emisor

Campo Tipo Descripción
customer_name string|null Nombre del cliente
customer_tax_id string|null NIF/CIF del cliente
customer_country string|null País del cliente (ISO)
issuer_name string Nombre del emisor
issuer_tax_id string NIF/CIF del emisor
issuer_country string País del emisor (ISO)

Campos de encadenamiento blockchain

Campo Tipo Descripción
is_first_invoice boolean Si es la primera factura de la cadena
previous_invoice_number string|null Número de factura anterior
previous_invoice_date date|null Fecha de factura anterior
previous_invoice_hash string|null Hash de factura anterior
hash string|null Hash de esta factura

Campos de facturas rectificativas

Campo Tipo Descripción
rectificative_type string|null 'S' = Sustitución, 'I' = Diferencia
rectified_invoices array Array de números de facturas rectificadas
rectification_amount array Importes de rectificación (base, tax, total)

Campos de subsanación

Campo Tipo Descripción
is_subsanacion boolean Si es una subsanación
rejected_invoice_number string|null Número de factura rechazada
rejection_date date|null Fecha de rechazo

Campos multi-tenant

Campo Tipo Descripción
numero_instalacion string|null Identificador de instalación

Campos de estado AEAT

Campo Tipo Descripción
aeat_status string|null Estado: ACEPTADA, RECHAZADA, ENVIADA
aeat_response_code string|null Código de respuesta AEAT
aeat_response_message string|null Mensaje de respuesta
aeat_registration_date datetime|null Fecha de registro en AEAT
aeat_csv string|null CSV de registro
has_aeat_warnings boolean Si tiene advertencias

Campos adicionales

Campo Tipo Descripción
operation_date date|null Fecha de operación (si difiere de date)
tax_period string|null Período fiscal (01, 02, 0A, etc.)
correction_type string|null Tipo de corrección
external_reference string|null Referencia externa
description string|null Descripción de la operación
status string Estado interno (draft, sent, accepted, rejected)
csv string|null CSV interno

Ejemplos avanzados

Factura con cliente extranjero

Para clientes extranjeros, usa el campo id_type en el modelo Recipient:

Tipos de identificadores extranjeros disponibles:

Factura rectificativa completa (por diferencia)

Factura con múltiples instalaciones (multi-tenant)

Cadena completa de facturas (blockchain)

Subsanación de factura rechazada


Envío de Invoice a AEAT (Ejemplo de Controller)

Nota: Protege este endpoint con autenticación/autorización adecuada.

El resultado incluirá el XML enviado y recibido, útil para depuración.

Si el certificado no es válido o hay error de validación, el array tendrá 'status' => 'error' y 'message'.

Consultar estado de facturas enviadas

Puedes consultar el estado de las facturas después de enviarlas:


Validación y creación de Breakdown (Ejemplo de Controller)


Uso de Helpers

Helpers de fecha, string y hash

Generación de URL para códigos QR

El paquete incluye un helper para generar las URLs necesarias para los códigos QR que deben incluirse en las facturas según la normativa VERIFACTU.

El helper generará automáticamente la URL correcta según el entorno y modo:

Si no proporcionas el parámetro verifactuMode, el helper usará el valor configurado en config/verifactu.php:

Ejemplo en un controlador:


Uso avanzado

Integración de eventos y listeners

Puedes disparar eventos cuando se crean, actualizan o envían invoices a AEAT. Ejemplo:

Despacha el evento tras el envío:

Crea un listener para notificaciones o logging:

Registra tu evento y listener en EventServiceProvider:


Políticas de autorización

Puedes restringir el acceso a invoices usando policies de Laravel:

Registra la policy en AuthServiceProvider:

Úsala en tu controller:


Integración de notificaciones

Puedes notificar a usuarios o admins cuando una invoice se envía o falla:

Despacha la notificación en tu job o listener:


Integración con colas (queues)

Puedes enviar invoices a AEAT de forma asíncrona usando colas:

En tu job, implementa ShouldQueue:

Configura tu conexión de cola en .env y ejecuta el worker:


Auditoría

Puedes usar paquetes como owen-it/laravel-auditing para auditar cambios en invoices:

  1. Instala el paquete:

  2. Añade el contrato \OwenIt\Auditing\Contracts\Auditable a tu modelo:

  3. Ahora todos los cambios en invoices serán auditados automáticamente. Puedes ver los logs:

Testing

Ejecuta todos los tests unitarios:


Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature
  3. Commit tus cambios
  4. Push a la rama
  5. Abre un Pull Request

Licencia

Este paquete es open-source bajo la Licencia MIT.

Soporte

Autores


Si este paquete te ha sido útil, ¡no olvides darle una estrella en GitHub!


All versions of laravel-verifactu with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
illuminate/support Version ^10.0|^11.0|^12.0
ext-soap Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package squareetlabs/laravel-verifactu contains the following files

Loading the files please wait ...