Genera facturas VeriFactu automáticamente en Magento 2 con un módulo personalizado y el observer sales_order_invoice_pay.
Magento 2 ofrece un sistema de eventos y observers que permite interceptar cualquier momento del ciclo de vida de un pedido. La integración con InvoCash usa el evento sales_order_invoice_pay para generar automáticamente la factura VeriFactu en el momento del cobro.
Al ser un módulo Magento nativo, la integración es robusta y actualizable, beneficiándose del sistema de inyección de dependencias de Magento 2.
Magento crea una invoice interna al cobrar el pedido y dispara el evento sales_order_invoice_pay con todos los datos.
Tu observer PHP recoge los datos de la invoice de Magento y llama a la API REST de InvoCash para crear la factura VeriFactu.
InvoCash genera la factura, la valida con la AEAT y opcionalmente envía el PDF al email del cliente automáticamente.
<!-- app/code/Vendor/InvoCash/etc/events.xml -->
<config>
<event name="sales_order_invoice_pay">
<observer
name="invocash_crear_factura"
instance="Vendor\InvoCash\Observer\CrearFactura"
/>
</event>
</config>namespace Vendor\InvoCash\Observer;
use Magento\Framework\Event\ObserverInterface;
class CrearFactura implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer): void
{
$invoice = $observer->getEvent()->getInvoice();
$order = $invoice->getOrder();
$lines = [];
foreach ($invoice->getAllItems() as $item) {
if (!$item->getQty()) continue;
$taxBase = (float) $item->getRowTotalInclTax() - (float) $item->getTaxAmount();
$taxAmount = (float) $item->getTaxAmount();
$taxPctge = $taxBase > 0 ? round($taxAmount / $taxBase * 100) : 21;
$lines[] = [
'description' => $item->getName(),
'quantity' => (int) $item->getQty(),
'unit_price' => $taxBase / $item->getQty(),
'tax_base' => $taxBase,
'tax_pctge' => $taxPctge,
'tax_amount' => $taxAmount,
'tax_withholding_pctge' => 0,
'tax_withholding_amount' => 0,
'tax_type' => 'IVA',
'clave_regimen' => '01',
'qualification_operation' => 'S1',
'exempt_operation' => null,
'total' => $taxBase,
];
}
$ch = curl_init('https://{su-tenant}.invo.cash/api/invoices');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: {tu_api_key}',
],
CURLOPT_POSTFIELDS => json_encode([
'verifactu_issuer_territory' => 'MAINLAND',
'simplified' => false,
'lines' => $lines,
'total' => (float) $invoice->getGrandTotal(),
]),
]);
curl_exec($ch);
curl_close($ch);
}
}VeriFactu incluido automáticamente: todas las facturas creadas mediante la API de InvoCash se procesan con el sistema VeriFactu de la AEAT. Cumplimiento de la Ley Antifraude y el RD 1007/2023 sin ningún desarrollo adicional por tu parte.
Un distribuidor industrial con catálogo de 10.000 productos en Magento 2 procesaba manualmente 50-80 facturas diarias. Tras integrar InvoCash mediante módulo observer, cada cobro genera automáticamente su factura VeriFactu — reduciendo el tiempo administrativo de facturación en un 90%.
Nuestro equipo técnico te acompaña en todo el proceso. Sin compromiso.