qr-afip

Nodo de n8n que lee el QR fiscal de AFIP/ARCA de facturas electrónicas argentinas en PDF

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.2

Documentation

n8n-nodes-qr-afip

Nodo comunitario de n8n que lee el QR fiscal de AFIP/ARCA de una factura electrónica argentina en PDF y devuelve sus datos en JSON.

Sirve para controlar lo que otro paso (OCR, IA, carga manual) extrajo de la factura contra los datos que el emisor informó al pedir el CAE.

Instalación

En n8n: Configuración → Community nodes → Install y escribir n8n-nodes-qr-afip. Lo tiene que hacer un usuario owner o admin.

No necesita salida a internet ni credenciales: el render del PDF (mupdf) y la lectura del QR (zxing) corren en WebAssembly dentro de n8n.

Uso

El nodo Leer QR AFIP recibe items con un PDF en un campo binario (por defecto data, el que deja el nodo de Google Drive o el de HTTP Request) y agrega el resultado en un campo del JSON (por defecto qrAfip). El JSON original y el binario pasan sin cambios, así que se puede poner en serie antes de otros nodos que usen el mismo PDF.

Parámetro Default Descripción
Campo binario del PDF data Campo binario de entrada
Campo de salida qrAfip Dónde se deja el resultado
Máximo de páginas a revisar 30 Se revisan primero la primera y la última página. 0 = todas
CUIT receptor esperado vacío Si se indica, derivados.receptorEsperado dice si el QR está emitido a ese CUIT

Con Settings → On Error → Continue los errores (por ejemplo, un item sin binario) quedan en el resultado en lugar de cortar la ejecución.

Resultado

{
  "ok": true,
  "encontrado": true,
  "pagina": 1,
  "paginas": 1,
  "qr": {
    "ver": 1, "fecha": "2026-01-15", "cuit": "30712345678", "ptoVta": 12, "tipoCmp": 1, "nroCmp": 1234,
    "importe": 121000.50, "moneda": "PES", "ctz": 1, "tipoDocRec": 80, "nroDocRec": "30123456789",
    "tipoCodAut": "E", "codAut": "76123456789012"
  },
  "derivados": { "letra": "A", "nroFormateado": "00012A00001234", "receptorEsperado": true },
  "parser": "tolerante",
  "advertencias": ["JSON del QR con números con ceros a la izquierda"],
  "url": "https://www.afip.gob.ar/fe/qr/?p=...",
  "ms": 175
}
  • Sin QR: ok: false, encontrado: false y motivo.
  • QR encontrado pero ilegible: ok: false, encontrado: true, motivo y jsonCrudo.
  • cuit, nroDocRec y codAut van como texto. El resto de los campos numéricos, como número.
  • nroFormateado = punto de venta (5 dígitos) + letra + número (8 dígitos).

Tolerancias

El JSON del QR debería ser válido, pero en facturas reales no siempre lo es. El nodo recupera estos casos y lo informa en parser: "tolerante" y en advertencias:

  • Números con ceros a la izquierda ("ptoVta":0210).
  • Texto sin comillas ("tipoCodAut":E) y nombres de campo con otra capitalización ("ptovta").
  • El JSON duplicado dentro del mismo QR: se toma el último bloque completo.
  • Comillas o llaves de más alrededor del JSON.
  • Base64 partido en líneas, url-safe o sin relleno =.
  • QR en cualquier página, no solo en la primera.
  • QR estampado como imagen con fondo transparente encima del texto: si no aparece en la página renderizada, se leen las imágenes del PDF de a una (lo transparente en blanco, con margen y agrandadas). En ese caso el resultado trae origen: "imagen embebida".

No se recuperan los PDF dañados que mupdf no puede abrir.

Licencia

AGPL-3.0-or-later, por depender de mupdf (AGPL-3.0-or-later). zxing-wasm es MIT.

Discussion