VeriFactu en WooCommerce.
Un hook de WordPress y cada pedido acaba en AEAT.

WooCommerce · WordPress

WooCommerce mueve la mayoría del ecommerce pequeño en España y su sistema de hooks está hecho para esto. No hay plugin de Cofactu en WordPress.org; hay un webhook y un add_action que lo llama. Si prefieres no tocar PHP, Make o Zapier hacen lo mismo, y la conexión directa del catálogo recibe los pedidos sin código.

Sin plugin en WordPress.org · webhook y conexión directa. Hoy no hay plugin de Cofactu para instalar desde WordPress.org, ni fecha para tenerlo. Hay dos caminos que funcionan: el webhook universal, que factura y envía a AEAT, y la conexión directa del catálogo, que recibe los pedidos de la tienda y prepara la factura en borrador.

Ver cómo se conecta ↓

Sin plugin en WordPress.org · webhook y conexión directa

¿Qué puedes conectar hoy
entre WooCommerce y Cofactu?

Hoy no hay plugin de Cofactu para instalar desde WordPress.org, ni fecha para tenerlo. Hay dos caminos que funcionan: el webhook universal, que factura y envía a AEAT, y la conexión directa del catálogo, que recibe los pedidos de la tienda y prepara la factura en borrador.

Estado de la integración con WooCommerce, revisado contra el código de Cofactu
CaminoHoyQué hace
Plugin, módulo o app de Cofactu en WordPress.orgNo disponibleNo existe ni tiene fecha. No hay nada de Cofactu que instalar en la tienda.
Webhook universalDisponibleFactura cada pedido que le mandes y lo envía a AEAT con tu certificado. Necesita una API key: desde el plan Pyme o en la prueba de 30 días.
Conexión directa del catálogoDisponibleSin código y desde el plan Pyme: Cofactu se conecta a la API REST de WooCommerce. El pedido pagado entra como pedido y, si lo activas, como factura en borrador que revisas y emites. Para que salga a AEAT sin pasar por ti, usa el webhook universal.
Make o ZapierDisponibleCon su módulo HTTP contra el webhook. Cofactu no tiene app propia en Make ni en Zapier.

Revisado el 26 de octubre de 2026 · Lo que no está disponible no tiene fecha

Flujo del pedido a AEAT

Del pedido pagado en WooCommerce
a la factura registrada.

  1. 01

    Pedido pagado en tu tienda

    WooCommerce dispara su evento de pago, como ya hace hoy.

  2. 02

    Un POST al webhook de Cofactu

    Desde el hook nativo o desde Make. JSON normalizado, API key en la cabecera.

  3. 03

    Factura encadenada

    Cofactu numera, calcula la huella SHA-256 encadenada y genera el PDF con QR.

  4. 04

    Registrada en AEAT

    Con tu certificado, el registro sale a AEAT en segundo plano y guarda el CSV de respuesta.

Scroll
Con código · el hook nativo

woocommerce_payment_complete

Se dispara cuando la pasarela confirma el cobro. Para pedidos contra reembolso o transferencia, usa además woocommerce_order_status_completed. Guarda el fichero en wp-content/mu-plugins/ y se carga solo.

php
<?php
// wp-content/mu-plugins/cofactu-verifactu.php
add_action('woocommerce_payment_complete', function (int $order_id): void {
    $order = wc_get_order($order_id);
    $lines = [];
    foreach ($order->get_items() as $item) {
        $subtotal = (float) $item->get_subtotal();          // sin IVA
        $tax      = (float) $item->get_subtotal_tax();
        $lines[]  = [
            'descripcion'    => $item->get_name(),
            'cantidad'       => (float) $item->get_quantity(),
            'precioUnitario' => $subtotal / max(1, $item->get_quantity()),
            'tipoIva'        => $subtotal > 0 ? round($tax / $subtotal * 100) : 0,
        ];
    }
    $nif = $order->get_meta('_billing_nif');                 // el meta de tu plugin de NIF
    wp_remote_post('https://api.cofactu.com/api/webhooks/ecommerce-orders', [
        'headers' => [
            'Authorization' => 'Bearer ' . COFACTU_API_KEY,   // define() en wp-config.php
            'Content-Type'  => 'application/json',
        ],
        'body' => wp_json_encode([
            'platform'        => 'woocommerce',
            'externalOrderId' => (string) $order->get_id(),
            'client'          => $nif ? [
                'nif'          => $nif,
                'nombre'       => $order->get_formatted_billing_full_name(),
                'email'        => $order->get_billing_email(),
                'direccion'    => $order->get_billing_address_1(),
                'codigoPostal' => $order->get_billing_postcode(),
                'ciudad'       => $order->get_billing_city(),
                'pais'         => $order->get_billing_country(),
            ] : null,                                           // F2 simplificada
            'lines' => $lines,
        ]),
        'timeout' => 15,
    ]);
});
Sin código · conexión directa

Conexión directa desde el catálogo de Cofactu

Paso 101

En WooCommerce, crea unas claves de la API REST (Ajustes → Avanzado → API REST) con permiso de lectura y escritura.

Paso 202

En Cofactu, Catálogo → Catálogo público → Integraciones ecommerce → «Conectar WooCommerce»: nombre, URL de la tienda y las dos claves. Cofactu te enseña una sola vez el secreto del webhook.

Paso 303

En WooCommerce, crea un webhook de pedidos (Ajustes → Avanzado → Webhooks) que apunte a la «Webhook URL» de la conexión, con ese secreto. Cofactu rechaza lo que no venga firmado con él.

Paso 404

«Sincronizar productos» sube tu catálogo de Cofactu a la tienda: nombre, referencia, precio, descripción e imagen. El stock no se sincroniza desde aquí.

Paso 505

Cada pedido nuevo entra en Cofactu como pedido. Si llega pagado y tienes activado «Generar factura VeriFactu automáticamente al cobrar», Cofactu prepara la factura en borrador. Si la tienda reenvía el mismo pedido con cambios, no se toca: se marca para revisar.

Sin código

Sin tocar PHP: Make o Zapier

  1. Paso 1

    Crea una API key en Cofactu (Configuración → API keys) con permiso para crear facturas. La API va incluida desde el plan Pyme y en la prueba de 30 días.

  2. Paso 2

    En Make, módulo «WooCommerce → Watch Orders» con estado processing o completed; en Zapier, «WooCommerce → Order Paid» (WooCommerce necesita el plugin de Zapier para exponer el trigger).

  3. Paso 3

    Módulo HTTP: POST a https://api.cofactu.com/api/webhooks/ecommerce-orders con Authorization: Bearer vf_live_….

  4. Paso 4

    Mapea id a externalOrderId, billing a client y line_items a lines (subtotal / quantity es el precio unitario sin IVA).

El JSON que espera Cofactu

Un solo formato para todas las tiendas

POST https://api.cofactu.com/api/webhooks/ecommerce-orders con Authorization: Bearer vf_live_…. Precios sin IVA y tipoIva por línea; client: null emite una factura simplificada F2; externalOrderId hace la llamada idempotente. Desde Configuración → Integraciones → Ecommerce se lanza un pedido de prueba, que queda en borrador; los pedidos reales aparecen en Facturas con su estado en AEAT.

Configuración → Integraciones → Ecommerce ↗
json
{
  "platform": "woocommerce",
  "externalOrderId": "2026-000123",
  "client": {
    "nif": "B12345678",
    "nombre": "Tienda Ejemplo SL",
    "email": "compras@ejemplo.com",
    "direccion": "C/ Mayor 1",
    "codigoPostal": "28001",
    "ciudad": "Madrid",
    "pais": "ES"
  },
  "lines": [
    {
      "descripcion": "Zapatillas running 42",
      "cantidad": 1,
      "precioUnitario": 79.34,
      "tipoIva": 21
    },
    {
      "descripcion": "Gastos de envío",
      "cantidad": 1,
      "precioUnitario": 4.13,
      "tipoIva": 21
    }
  ],
  "autoSubmit": true
}
Preguntas frecuentes

WooCommerce y VeriFactu, en corto

¿Hay plugin de Cofactu para WooCommerce en WordPress.org?

No, y no tiene fecha. Hoy se conecta de tres formas: un mu-plugin de veinte líneas o Make/Zapier, que llaman al webhook universal, o la conexión directa del catálogo de Cofactu, que recibe los pedidos y prepara la factura en borrador.

¿Los PDF de factura que genera mi plugin de WooCommerce valen para VeriFactu?

No. Los plugins de «PDF Invoices» generan un documento, pero no un registro de facturación con huella encadenada, QR y envío a AEAT. Puedes seguir usándolos como albarán o justificante; la factura fiscal la emite Cofactu.

¿Cómo recojo el NIF del cliente en el checkout?

Con cualquier plugin de campos de NIF/CIF para WooCommerce (los hay gratuitos) que lo guarde como meta del pedido, y leyendo ese meta en el hook. Sin NIF, client: null emite una factura simplificada F2.

¿Y si WordPress vuelve a lanzar el hook (reintento, plugin de caché…)?

El webhook es idempotente por platform + externalOrderId: el mismo pedido nunca produce dos facturas. La segunda llamada devuelve la primera factura con su estado en AEAT.

¿Necesito certificado digital para que esto funcione?

Para el envío a AEAT sí: se carga una vez en Cofactu y el webhook lo usa en cada pedido. Sin certificado, las facturas se crean en borrador y las envías cuando lo tengas. El JSON es el mismo para las cuatro tiendas: platform, externalOrderId, client (o null para una factura simplificada F2) y lines con precio sin IVA y tipoIva por línea.

Otras plataformas

Otras plataformas

  1. 01 Magento VeriFactu en Magento
  2. 02 Shopify VeriFactu en Shopify
  3. 03 PrestaShop VeriFactu en PrestaShop
  4. 04 Ecommerce Comparativa ecommerce completa
  5. 05 VeriFactu Guía VeriFactu
Empieza por un pedido de prueba

Tu tienda sigue siendo WooCommerce.
La factura, VeriFactu.

30 días con todo Cofactu, API incluida y sin tarjeta, y un pedido de prueba para ver la primera factura encadenada. Después, la API va desde el plan Pyme.

Ver precios ↗

(Empieza hoy)

Empieza en el plan Gratis con facturas ilimitadas y VeriFactu, sin tarjeta. Cuando lo necesites, subes de plan desde la misma cuenta.

Tu primera factura

  • Facturas ilimitadas con VeriFactu y QR
  • Sin tarjeta
  • Exportación completa de tus datos