Facturar ventas de SAP con ARCA en n8n
Tutorial para conectar SAP con n8n y Afip SDK, autorizar comprobantes electrónicos de ARCA y devolver el resultado fiscal al documento comercial.
Descargá el workflow sap-arca-invoice.json para importarlo en n8n y adaptarlo a tu cuenta de SAP.
SAP no es una integración única: puede ser SAP Business One, SAP S/4HANA, SAP Business ByDesign o un landscape con middleware. Para n8n, el enfoque correcto es no reemplazar SAP, sino tomar el documento comercial aprobado, emitir en ARCA con Afip SDK y devolver los datos fiscales.
Documentación útil:
- SAP Business One Service Layer API Reference: https://help.sap.com/doc/056f69366b5345a386bb8149f1700c19/10.0/en-US/Service%20Layer%20API%20Reference.html
- SAP Business One Service Layer guide: https://help.sap.com/doc/fc2f5477516c404c8bf9ad1315a17238/10.0/en-US/Working_with_SAP_Business_One_Service_Layer.pdf
- SAP S/4HANA Sales Order API: https://help.sap.com/docs/SAP_S4HANA_CLOUD/03c04db2a7434731b7fe21dca77440da/10ec8998a151440795e797cb098321bb.html
- Nodo Afip SDK para n8n: https://n8n.io/integrations/afip-sdk/
Cómo funciona la integración
- SAP crea o aprueba un documento comercial.
- n8n detecta documentos pendientes de autorización fiscal.
- n8n lee cliente, sociedad, items, impuestos y totales desde SAP.
- n8n valida punto de venta, CUIT emisor y tipo de comprobante.
- Afip SDK autoriza la factura en ARCA.
- n8n actualiza SAP con CAE, vencimiento, número y PDF.
Paso 1: elegir el punto de integración
Opciones comunes:
- SAP Business One Service Layer.
- SAP S/4HANA OData APIs.
- Middleware corporativo que ya expone documentos listos para facturar.
- Tabla/interfaz de salida aprobada por el equipo SAP.
No conviene que n8n lea datos a medio completar. El documento debe estar aprobado por SAP o por el middleware.
Paso 2: disparar n8n
Hay dos modelos:
- Push: SAP o middleware llama un Webhook de n8n con el id del documento.
- Pull: n8n corre por cron y busca documentos con estado
pending_arca.
Para SAP suele ser más seguro el modelo pull contra una vista o endpoint de documentos pendientes, porque permite reintentos controlados y auditoría.
Paso 3: leer el documento desde SAP Business One
Ejemplo conceptual con Service Layer:
GET https://sap.example.com:50000/b1s/v2/Invoices(123)
Cookie: B1SESSION={{ $env.SAP_B1_SESSION }}
También puede ser Sales Order, Delivery o Draft según el circuito de la empresa. Lo importante es que SAP defina cuál documento se convierte en comprobante fiscal.
Leé:
- Business Partner.
- Federal Tax ID.
- Document lines.
- Tax codes.
- Totals.
- Currency.
- Branch o sociedad.
- Documento interno.
Paso 4: leer desde S/4HANA
En S/4HANA normalmente se usan APIs OData para Sales Orders o Billing Documents. n8n debe consumir el endpoint acordado con Basis/integraciones y no inventar el flujo.
Campos mínimos:
- Sales organization o company code.
- Sold-to party.
- Tax number.
- Billing document o sales order.
- Items.
- Taxes.
- Currency.
Paso 5: no recalcular contabilidad
SAP suele ser la fuente contable. n8n no debería cambiar importes, sino transformar al formato de ARCA.
Ejemplo de objeto intermedio:
const sap = $json;
return [{
json: {
externalId: `sap:${sap.DocEntry || sap.BillingDocument}`,
companyCode: sap.CompanyCode,
customerTaxId: sap.FederalTaxID || sap.TaxNumber,
customerName: sap.CardName || sap.CustomerName,
currency: sap.DocCurrency || sap.TransactionCurrency,
totalAmount: Number(sap.DocTotal || sap.TotalGrossAmount),
items: (sap.DocumentLines || sap.Items || []).map((line) => ({
code: line.ItemCode || line.Material,
description: line.ItemDescription || line.Description,
quantity: Number(line.Quantity),
unitPrice: Number(line.UnitPrice || line.NetPriceAmount),
taxCode: line.TaxCode,
})),
},
}];
Paso 6: emitir con Afip SDK
El flujo fiscal:
- Autorización para
wsfe. FECompUltimoAutorizado.FECAESolicitar.- Generar el PDF con el template de Afip SDK.
Clave de idempotencia:
sap:{companyCode}:{documentId}
Si hay sucursales o sociedades, mapeá cada una a CUIT y punto de venta.
Paso 7: actualizar SAP
Después de ARCA:
- Guardá CAE.
- Guardá vencimiento de CAE.
- Guardá tipo, punto de venta y número.
- Adjuntá PDF o URL del PDF.
- Cambiá estado fiscal a autorizado.
Si SAP no permite escribir esos campos directamente, hacelo mediante el middleware o una tabla de integración.
Errores comunes
- Facturar desde Sales Order cuando el circuito real factura desde Billing Document.
- Recalcular impuestos fuera de SAP.
- No mapear company code a CUIT y punto de venta.
- No manejar moneda extranjera.
- No coordinar reversas: cancelaciones y credit memos deben tener su flujo fiscal separado.
Cierre
SAP debe seguir siendo la fuente contable. n8n toma documentos aprobados, Afip SDK autoriza ante ARCA y el resultado vuelve a SAP o al middleware con trazabilidad completa.