Facturar ventas de Tiendanube con ARCA en n8n
Cómo automatizar facturas electrónicas de ARCA para órdenes de Tiendanube usando webhooks, n8n y los nodos oficiales de Afip SDK.
Descargá el workflow tiendanube-arca-invoice.json para importarlo en n8n y adaptarlo a tu cuenta de Tiendanube.
Tiendanube expone una API de órdenes y Webhooks. Para facturación electrónica, el flujo más confiable es recibir un Webhook de orden, consultar la orden completa por API y emitir sólo cuando el pago esté confirmado.
Documentación útil:
- API de Tiendanube/Nuvemshop: https://dev.nuvemshop.com.br/en/docs/developer-tools/nuvemshop-api
- Order resource: https://tiendanube.github.io/api-documentation/resources/order
- Webhooks: https://tiendanube.github.io/api-documentation/resources/webhook
- Nodo Afip SDK para n8n: https://n8n.io/integrations/afip-sdk/
Cómo funciona la integración
- Tiendanube dispara un Webhook cuando se crea o actualiza una orden.
- n8n recibe el evento.
- n8n consulta la orden por API.
- n8n valida que la orden esté pagada o lista para facturar.
- n8n toma datos fiscales desde campos del checkout o un formulario propio.
- Afip SDK autoriza la factura.
- n8n guarda CAE, PDF y estado en tu sistema de gestión.
Paso 1: crear Webhooks de órdenes
En Tiendanube, registrá Webhooks para eventos de órdenes. El Webhook envía una notificación cuando hay una interacción con el recurso, pero para facturar necesitás consultar la orden completa.
En n8n:
- Nodo Webhook
POST. - Nodo HTTP Request para consultar la orden.
- Nodo IF para filtrar estados no facturables.
Paso 2: consultar la orden
La API de Tiendanube usa access_token y store id.
GET https://api.tiendanube.com/v1/{{ $env.TIENDANUBE_STORE_ID }}/orders/{{ $json.id }}
Authentication: bearer {{ $env.TIENDANUBE_ACCESS_TOKEN }}
User-Agent: AfipSDK n8n integration
Revisá en la respuesta:
id.- Estado de pago.
- Cliente.
- Productos.
- Envío.
- Descuentos.
- Total.
Paso 3: capturar datos fiscales argentinos
La orden de Tiendanube puede no tener CUIT, razón social o condición fiscal de forma nativa según cómo esté configurado el checkout. Tenés que definir una fuente:
- Campos adicionales del checkout.
- Formulario post-compra.
- CRM conectado.
- ERP que ya tenga el cliente fiscalizado.
El workflow debe cortar si faltan datos obligatorios. No conviene inventar condición fiscal en n8n.
Paso 4: armar el payload fiscal
Ejemplo de nodo Code:
const order = $json;
const products = order.products || [];
const items = products.map((product) => ({
description: product.name?.es || product.name,
quantity: Number(product.quantity),
unitPrice: Number(product.price),
sku: product.sku,
}));
return [{
json: {
externalId: `tiendanube:${order.id}`,
orderNumber: order.number,
customerEmail: order.contact_email,
items,
totalAmount: Number(order.total),
shippingAmount: Number(order.shipping_cost_customer || 0),
},
}];
Después agregá neto, IVA y tipo de comprobante según las reglas fiscales del negocio.
Paso 5: emitir con Afip SDK
Usá estos nodos:
- Obtener autorización
wsfe. - Consultar último comprobante.
- Autorizar comprobante con
FECAESolicitar. - Crear y descargar el PDF con el template de Afip SDK.
Clave de idempotencia recomendada: tiendanube:{order.id}.
Paso 6: guardar resultado
Tiendanube puede quedar como canal comercial y tu ERP como registro fiscal. Guardá:
- CAE.
- Vencimiento de CAE.
- Tipo y número de comprobante.
- URL del PDF.
- Estado
facturada.
Si tu flujo usa un ERP conectado a Tiendanube, escribí el comprobante ahí y sólo sincronizá un estado simple a la tienda.
Errores comunes
- Usar Webhook de creación de orden sin esperar confirmación de pago.
- No pedir CUIT en checkout.
- Facturar descuentos y envío de forma distinta a como aparece en la orden.
- No separar órdenes canceladas o reembolsadas.
- Reprocesar la misma orden por updates sucesivos.
Cierre
Tiendanube se integra bien con n8n si el Webhook sólo dispara el flujo y la API de órdenes es la fuente de datos. Para Argentina, la parte clave es sumar captura fiscal y bloquear duplicados antes de llamar a Afip SDK.