Shopify · Shopify Plus
Shopify emite facturas a su manera, pero no las que exige el RD 1007/2023: ni huella encadenada, ni QR, ni registro en AEAT. Cofactu no tiene app en la App Store aún; tiene un webhook que factura lo que Shopify le mande, y Shopify Flow o Make lo mandan en cuatro pasos.
Shopify 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.
Con código · el hook nativo
Flow viene incluido en todos los planes de Shopify. El disparador «Order paid» y la acción «Send HTTP request» bastan; no hace falta desplegar nada en un servidor propio.
// Acción «Send HTTP request» de Shopify Flow
// Method: POST
// URL: https://api.cofactu.com/api/webhooks/ecommerce-orders
// Headers: Authorization: Bearer vf_live_… · Content-Type: application/json
// Body (Liquid):
{
"platform": "shopify",
"externalOrderId": "{{ order.name }}",
"client": {% if order.billingAddress.company or order.customer %}{
"nombre": "{{ order.billingAddress.company | default: order.customer.displayName }}",
"email": "{{ order.email }}",
"direccion": "{{ order.billingAddress.address1 }}",
"codigoPostal": "{{ order.billingAddress.zip }}",
"ciudad": "{{ order.billingAddress.city }}",
"pais": "{{ order.billingAddress.countryCodeV2 }}"
}{% else %}null{% endif %},
"lines": [
{% for line in order.lineItems %}
{
"descripcion": "{{ line.title }}",
"cantidad": {{ line.quantity }},
"precioUnitario": {{ line.originalUnitPriceSet.shopMoney.amount }},
"tipoIva": {{ line.taxLines.first.ratePercentage | default: 21 }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
} Sin código
Crea una API key en Cofactu (Configuración → API keys).
En Make, módulo «Shopify → Watch Orders» filtrando financial_status = paid; en Zapier, «Shopify → New Paid Order».
Módulo HTTP: POST a https://api.cofactu.com/api/webhooks/ecommerce-orders con la cabecera Authorization: Bearer vf_live_….
Mapea order.name a externalOrderId y las line_items a lines. Los precios de Shopify van con IVA incluido si así configuraste los impuestos: pásalos sin IVA (precio / 1,21) o Cofactu facturará de más.
El JSON que espera Cofactu
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 y se ve cada pedido con su estado en AEAT.
{
"platform": "shopify",
"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
No. Shopify emite recibos y facturas sin huella encadenada, sin QR de verificación y sin registro en AEAT, que son los tres requisitos del RD 1007/2023 desde 2027. La tienda puede seguir siendo Shopify; la factura la tiene que emitir un sistema VeriFactu.
Todavía no. Shopify Flow —incluido en todos los planes— hace la llamada al webhook sin instalar nada, y Make o Zapier también. La app nativa está en el roadmap y dependerá de la demanda real.
Puedes añadir un campo de NIF con Shopify Checkout Extensibility o pedirlo en el campo «Empresa» de la dirección. Si no llega, manda client: null y se emite factura simplificada F2, válida para ventas a consumidor final.
Un reembolso en Shopify no anula la factura ya registrada: VeriFactu exige una rectificativa. Se emite desde Cofactu sobre la factura original (una llamada a la API o dos clics en la app), enlazada por su número.
Cada línea lleva su tipoIva, así que el tipo que aplique tu configuración de impuestos en Shopify es el que llega a la factura. 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.
Cuenta gratis, API key en un minuto y un pedido de prueba para ver la primera factura encadenada.
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 .
Empieza gratis o mira los planes. Tu primera factura VeriFactu en menos de 10 minutos.