
Paso 101
En WooCommerce, crea unas claves de la API REST (Ajustes → Avanzado → API REST) con permiso de lectura y escritura.
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.
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.
| Camino | Hoy | Qué hace |
|---|---|---|
| Plugin, módulo o app de Cofactu en WordPress.org | No disponible | No existe ni tiene fecha. No hay nada de Cofactu que instalar en la tienda. |
| Webhook universal | Disponible | Factura 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álogo | Disponible | Sin 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 Zapier | Disponible | Con 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
WooCommerce dispara su evento de pago, como ya hace hoy.
Desde el hook nativo o desde Make. JSON normalizado, API key en la cabecera.
Cofactu numera, calcula la huella SHA-256 encadenada y genera el PDF con QR.
Con tu certificado, el registro sale a AEAT en segundo plano y guarda el CSV de respuesta.


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
// 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,
]);
}); 
En WooCommerce, crea unas claves de la API REST (Ajustes → Avanzado → API REST) con permiso de lectura y escritura.

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.

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.

«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í.

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.
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.

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).

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

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

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 ↗{
"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
} 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.
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.
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.
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.
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.
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.
Usamos cookies propias, de Google (qué anuncios traen registros) y de PostHog (cómo se usa la web). Si las rechazas, la web funciona igual. Más información .
Browsing in your own language is always better. Switch for a fully localized experience.