Facturar ventas de Mercado Pago con ARCA en n8n
Aprende a conectar pagos aprobados de Mercado Pago con Afip SDK en n8n para emitir factura electrónica de ARCA, generar PDF y guardar el resultado junto a la operación.
Descargá el workflow mercadopago-arca-invoice.json para importarlo en n8n y adaptarlo a tu cuenta de Mercado Pago.
Mercado Pago no es un ecommerce completo: es el confirmador del cobro. Por eso el workflow correcto no debe facturar “un pago” aislado, sino una orden de tu sistema marcada como cobrada por Mercado Pago.
La integración se arma con Webhooks de Mercado Pago, la Payments API y los nodos oficiales de Afip SDK para n8n.
Documentación útil:
- Webhooks de Mercado Pago: https://www.mercadopago.com.ar/developers/en/docs/your-integrations/notifications/webhooks
- Payments API: https://www.mercadopago.com.ar/developers/en/reference/payments/_payments_id/get
- Búsqueda de pagos: https://www.mercadopago.com.ar/developers/en/reference/payments/_payments_search/get
- Nodo Afip SDK para n8n: https://n8n.io/integrations/afip-sdk/
Cómo funciona la integración
- Tu checkout crea una preferencia o un pago en Mercado Pago.
- En
external_referenceometadataguardás el id de orden interno. - Mercado Pago envía un Webhook cuando el pago cambia de estado.
- n8n recibe el Webhook y consulta el pago por API.
- Si el pago está
approved, n8n busca la orden original en tu ecommerce, ERP o base operativa. - n8n normaliza los datos fiscales de la orden.
- Afip SDK autoriza la factura electrónica en ARCA.
- n8n guarda CAE, número de comprobante y PDF en tu sistema.
Paso 1: configurar el Webhook de Mercado Pago
En Mercado Pago, configurá una URL pública de n8n como endpoint de Webhooks. El evento que te interesa es el de pagos.
En n8n:
- Agregá un nodo Webhook.
- Usá método
POST. - Copiá la production URL que genera n8n.
- Configurala en Mercado Pago como URL de notificaciones.
El Webhook no debería emitir factura directamente. Usalo como disparador y después consultá la Payments API. Así evitás confiar en un payload parcial o en notificaciones duplicadas.
Paso 2: consultar el pago
Después del Webhook agregá un nodo HTTP Request hacia Mercado Pago:
GET https://api.mercadopago.com/v1/payments/{{ $json.data.id }}
Authorization: Bearer {{ $env.MERCADO_PAGO_ACCESS_TOKEN }}
Validá:
statusdebe serapproved.external_referencedebe existir y apuntar a una orden interna.transaction_amountdebe coincidir con el total cobrado.metadatapuede traer datos auxiliares, pero no conviene usarla como única fuente fiscal.
Paso 3: buscar la orden real
Mercado Pago confirma el cobro, pero normalmente no tiene todos los items fiscales de la venta. Con el external_reference, consultá tu fuente de verdad:
- Shopify, WooCommerce, Tiendanube u otra tienda.
- Tu ERP.
- Tu propio backend.
- Una hoja o tabla operativa si el negocio todavía es chico.
La orden debe aportar:
- CUIT, DNI o regla de consumidor final.
- Razón social o nombre.
- Condición frente al IVA.
- Items con precio, cantidad, descuentos e IVA.
- Envío, si corresponde facturarlo.
Paso 4: normalizar para ARCA
Agregá un nodo Code en n8n y construí un objeto fiscal. Ejemplo:
const payment = $('Get Mercado Pago payment').first().json;
const order = $('Get order').first().json;
return [{
json: {
externalId: `mp:${payment.id}`,
sourceOrderId: payment.external_reference,
pointOfSale: 1,
voucherType: order.customer.tax_id ? 1 : 6,
documentType: order.customer.tax_id ? 80 : 99,
documentNumber: order.customer.tax_id || 0,
customerName: order.customer.name,
netAmount: order.totals.net,
vatAmount: order.totals.vat,
totalAmount: order.totals.total,
items: order.items.map((item) => ({
description: item.name,
quantity: item.quantity,
unitPrice: item.unit_price,
vatRate: item.vat_rate,
})),
},
}];
No incluyas comisiones de Mercado Pago en la factura al comprador. La factura debe representar la venta, no el costo financiero del medio de pago.
Paso 5: emitir con Afip SDK
Con los nodos de Afip SDK:
- Obtené autorización para
wsfe. - Ejecutá
FECompUltimoAutorizado. - Calculá
CbteDesdeyCbteHastacomo último comprobante + 1. - Ejecutá
FECAESolicitar. - Generá el PDF con el template de Afip SDK.
Para producción, usá una clave de idempotencia como mp:{payment.id} o order:{external_reference} y guardá el resultado antes de responder OK al Webhook.
Paso 6: guardar el resultado
Mercado Pago no es el mejor lugar para guardar el comprobante fiscal. Guardalo en la orden real:
- Campo
invoice_number. - Campo
cae. - Fecha de vencimiento del CAE.
- URL o archivo del PDF.
- Estado
facturada.
Si no tenés backend propio, podés usar Google Sheets, Airtable o una base operativa como registro de facturas emitidas.
Errores comunes
- Facturar apenas llega el Webhook sin consultar el pago.
- No usar
external_referencey después no poder unir pago con orden. - Facturar con el total cobrado sin reconstruir neto e IVA.
- Reintentar un Webhook y emitir dos comprobantes.
- Tratar una devolución de Mercado Pago como si fuera una nota de crédito automática.
Cierre
Mercado Pago debe disparar el flujo, pero la orden comercial debe definir qué se factura. n8n queda en el medio como orquestador, y Afip SDK concentra la parte fiscal: autorización, CAE y PDF.