Lección 9 de 21Módulo 3: OCR + LLM para facturación electrónica

09. Conciliar OCR con libro contable

Detección automática de mismatches. Cruce 3-way: factura - libro - SAT/SII. Cuándo escalar a revisión humana.

22 minutos

En las lecciones 7 y 8 vimos cómo extraer datos confiables de facturas, sean XML estructurados o documentos escaneados. Pero extraer datos no es el objetivo final del trabajo contable. El objetivo es que esos datos lleguen correctamente al libro contable y que coincidan con lo que la empresa declaró, lo que el proveedor declaró, y lo que el organismo fiscal tiene registrado.

Esto es conciliación. Y es probablemente donde más tiempo perdés (o ganás) en el cierre mensual.

¿Por qué la conciliación es el cuello de botella?

Pensá en el flujo completo de una factura en una empresa con operaciones normales:

  1. El proveedor emite la factura electrónica al SAT/SII/DIAN.
  2. Se la envía al cliente por mail, portal, o el cliente la descarga del sistema oficial.
  3. El cliente la recibe y la pasa al equipo contable.
  4. El equipo contable la ingresa al ERP / sistema contable (a veces a mano, a veces vía integración).
  5. El cliente paga la factura.
  6. El movimiento bancario aparece en el extracto y se registra.

En cualquier punto de esta cadena puede haber desfase:

  • La factura ingresada al sistema interno tiene un monto distinto al XML original.
  • La fecha contable es distinta a la fecha de emisión (puede ser correcto si se difiere el reconocimiento del gasto, o puede ser error).
  • El RFC/RUT/NIT del proveedor en el sistema interno no coincide con el del XML.
  • La factura se canceló en el SAT pero sigue activa en el sistema interno.
  • Se ingresó dos veces la misma factura.

Sin conciliación periódica, estos errores se acumulan. En auditoría tributaria, son hallazgos materiales según NIA 240 y NIA 315.

🎯 Lo que entregás cuando conciliás con IA

No entregás "más números". Entregás una lista corta de excepciones que requieren juicio profesional, en lugar de 5.000 transacciones para revisar de cero.

Esto es lo que distingue al contador 10x del contador estancado.


El cruce 3-way: la columna vertebral del trabajo

El concepto clave es el cruce a tres puntas (three-way match). Tradicionalmente en cuentas por pagar se hace entre orden de compra + remito + factura. En el mundo LATAM 2026 con IA, el cruce más útil es:

Factura física/escaneada (lo que recibió la empresa)
        ↕
Libro contable (lo que se registró internamente)
        ↕
Sistema oficial — SAT/SII/DIAN/AFIP/SEFAZ (lo que el fisco vio)

Si los tres coinciden: la factura está limpia y no requiere intervención.

Si hay diferencias entre cualquier par: hay excepción que investigar.

Por qué los tres puntos importan

Comparación Detecta
Factura física vs Libro contable Errores de carga manual: digitación, fechas, montos, cuenta contable
Factura física vs Sistema oficial Facturas apócrifas, EFOS (México), cancelaciones no notificadas, manipulación del PDF
Libro contable vs Sistema oficial Facturas declaradas en el sistema interno pero no existentes en SAT (riesgo grave); facturas reales del SAT no ingresadas al sistema (gastos no deducidos)

Cualquiera de las tres comparaciones por separado deja huecos. El cruce 3-way los cierra.


Mismatches típicos que la IA detecta automáticamente

Veamos los casos más frecuentes que el pipeline IA va a flaggear. Estos son los "hallazgos" que ya no perdés tiempo buscando manualmente.

1. Monto diferente

Caso: la factura escaneada dice $1.250.000 CLP, pero en el libro contable se registró como $1.250.000 CLP en monto neto cuando debería ser monto total con IVA.

Resultado en el cruce: el monto del XML coincide con el del libro, pero la diferencia entre neto + IVA y total muestra que se cargó el campo equivocado.

XML:           Neto $1.050.420 + IVA $199.580 = Total $1.250.000
Libro:         Neto $1.250.000 + IVA $237.500 = Total $1.487.500
SAT/SII:       Total declarado $1.250.000
                                          ↑
                            DISCREPANCIA: $237.500

Acción IA: flag con alta prioridad, propuesta de asiento corrector.

2. Fecha diferente

Caso: factura electrónica emitida el 29/04/2026, recibida el 02/05/2026, ingresada al sistema con fecha 02/05/2026. La factura era del mes anterior y debió registrarse en abril para el corte mensual.

Si la diferencia es razonable (fines de mes, gastos devengados) puede ser correcto. Si genera diferencias con el IVA del período, hay que ajustar.

Acción IA: comparar fecha_emision (del XML) con fecha_contable (del libro). Si la diferencia cruza un período fiscal, flag.

3. RUT/RFC/NIT mal cargado

Caso: el XML tiene RFC ABC123456XYZ. En el libro contable está como ABC123456XYS (un carácter mal). El sistema interno acepta el alta del proveedor con tax ID erróneo y la factura se contabiliza, pero no es deducible porque no coincide con el SAT.

Estos errores son sutiles y se detectan solo cuando alguien hace cruce 1-a-1 contra el sistema oficial.

Acción IA: comparar tax ID del XML/OCR contra tax ID del libro carácter por carácter. Cualquier diferencia es flag rojo automático.

4. Factura cancelada por el emisor

Caso: el proveedor canceló el CFDI hace 3 semanas (en México), pero en tu sistema interno sigue viva. Lo descubrís en la auditoría 6 meses después, cuando ya pagaste, registraste el gasto y declaraste el IVA acreditable.

Acción IA: consulta periódica al SAT (o equivalente) por todos los CFDIs activos en el sistema. Cambios de estado se notifican automáticamente al equipo contable.

5. Duplicados sutiles

Caso: la misma factura se ingresó dos veces, una con el número correcto y otra con el número con un espacio o cero a la izquierda. Los sistemas tradicionales detectan duplicados exactos; el LLM detecta duplicados sutiles.

Ingreso 1:  Proveedor X, Factura "F2026-00123", $450.000, 03/05/2026
Ingreso 2:  Proveedor X, Factura "F2026 00123", $450.000, 03/05/2026
                                       ↑
                            misma factura, formato distinto

Acción IA: el LLM compara normalizado (sin espacios, sin caracteres especiales, sin ceros a la izquierda) y flaggea posibles duplicados con confidence score.

6. Factura del sistema oficial NO ingresada al libro

Este es el caso silencioso: el SAT/SII/DIAN tiene una factura emitida a nombre de tu cliente, pero el equipo contable nunca la ingresó. Resultado: el cliente pierde el IVA acreditable y la deducción del gasto.

Es plata real que se está dejando sobre la mesa.

Acción IA: comparar el universo de facturas declaradas por proveedores al SAT contra el universo registrado en el libro. La diferencia son facturas faltantes en el sistema interno.

💡 Caso de uso real LATAM

En México, descargar el universo completo de CFDIs recibidos en un período del portal del SAT y cruzar contra el ERP interno es una práctica estándar de auditoría. La IA acelera dramáticamente el cruce y el análisis de las diferencias.

Es común encontrar entre 2% y 8% de discrepancias en este cruce. En empresas medianas, eso son decenas o cientos de facturas que requieren acción.


El workflow concreto de conciliación

Veamos el flujo completo, paso a paso, sin programación. Asumimos uso de n8n o Make como orquestador.

Paso 1: Reunir los tres datasets

  • Dataset A — Facturas físicas/digitales procesadas: salida del pipeline OCR + LLM de la Lección 8, o XMLs ya parseados de la Lección 7.
  • Dataset B — Libro contable: exportación del ERP / sistema contable (Excel, CSV, conexión directa). Columnas mínimas: proveedor, tax ID, número de factura, fecha, monto neto, IVA, total, cuenta contable.
  • Dataset C — Sistema oficial: extracción del portal SAT/SII/DIAN/AFIP/SEFAZ. La mayoría tiene APIs o portales que permiten descargar el universo de facturas del período.

Paso 2: Normalizar los tres datasets

El LLM normaliza para que los datos sean comparables:

  • Fechas a ISO YYYY-MM-DD.
  • Tax IDs sin espacios ni guiones, en mayúscula.
  • Montos como número decimal limpio.
  • Número de factura sin caracteres especiales ni espacios.

Paso 3: Cruce key-by-key

El cruce se hace por clave compuesta: tax_id_emisor + numero_factura. Para cada factura del Dataset A, buscar coincidencia en B y en C.

Resultado del cruce:

Estado Significado
A ∩ B ∩ C Factura limpia. Está en los tres lados. Auto-aprobada.
A ∩ B, no en C Factura no validada en sistema oficial. Riesgo grave (apócrifa o EFOS).
A ∩ C, no en B Factura faltante en libro contable. Hay que ingresar.
B ∩ C, no en A Factura registrada que no tiene respaldo físico/digital. Pedir documento.
Solo en A Posible factura no ingresada y no validada. Revisar.
Solo en B Factura inventada o mal ingresada. Crítico.
Solo en C Factura emitida pero no recibida. Verificar con proveedor.

Paso 4: LLM analiza las excepciones

Para cada excepción detectada, el LLM:

  1. Clasifica el tipo de excepción (monto, fecha, tax ID, duplicado, faltante, etc.).
  2. Asigna una prioridad (rojo/amarillo/verde) según monto e impacto fiscal.
  3. Sugiere acción concreta: corregir asiento, contactar proveedor, ajustar declaración, escalar a auditoría.
  4. Genera narrativa en lenguaje natural para el reporte.

Prompt típico:

Sos asistente de un contador senior auditando el cierre mensual.
Te paso una excepción de conciliación detectada por el sistema.

Para cada excepción, devolvé en JSON:
- tipo_excepcion: ["monto", "fecha", "tax_id", "duplicado", 
                   "faltante_libro", "faltante_oficial", "otro"]
- prioridad: ["alta", "media", "baja"]
- accion_sugerida: texto breve
- justificacion: por qué le diste esa prioridad
- escalar_a_humano: bool

Excepción: { ... datos del cruce ... }
Contexto del cliente: { ... industria, tamaño, antecedentes ... }

Paso 5: Reporte de excepciones

La salida final no es "1.247 transacciones a revisar". Es un reporte estructurado con:

  • Resumen ejecutivo: cuántas facturas se procesaron, cuántas pasaron limpias, cuántas requieren acción.
  • Excepciones de alta prioridad: lista corta (típicamente 5-20) con monto, descripción y acción recomendada.
  • Excepciones de prioridad media: revisar pero no urgente.
  • Información: cambios estadísticos vs períodos anteriores (subió/bajó el porcentaje de excepciones).

Ese reporte es el entregable real al contador senior o auditor.


Cuándo escalar a revisión humana

Acá viene la parte que NUNCA podés saltarte. La IA detecta y sugiere; el humano decide. Estos son los casos donde siempre escala a revisión humana profesional:

1. Cualquier discrepancia de monto > umbral

Definí un umbral en valor absoluto o porcentual. Cualquier diferencia que lo supere va a revisión sí o sí.

2. Cualquier ausencia en el sistema oficial

Si una factura está en el libro contable pero no aparece en el sistema oficial, eso es siempre revisión humana, sin importar el monto. Puede ser una factura apócrifa, una operación simulada (EFOS en México), o un error grave del proveedor. NIA 240 (Fraude) lo exige.

3. Cambio de estado en el sistema oficial

Cancelaciones, devoluciones, reemisiones detectadas por monitoreo periódico. La IA notifica; el humano decide cómo asentar el reverso.

4. Proveedores nuevos o de alto riesgo

Si el proveedor es nuevo (menos de 6 meses en el sistema) o está en una lista de riesgo, las excepciones de ese proveedor escalan automáticamente. Esto se alinea con NIA 315 (evaluación de riesgos del entorno).

5. Patrones inusuales

Si el LLM detecta un patrón inusual (mismo proveedor con muchas excepciones, montos que se acumulan justo bajo un umbral, fechas que se concentran en cierres de período), escala a revisión por posible problema sistémico.

⚠️ Recordatorio NIA 240

El auditor mantiene escepticismo profesional independientemente de lo que diga la herramienta de IA. Una factura que el sistema marcó como "limpia" sigue siendo responsabilidad del auditor si más adelante se descubre fraude.

La IA reduce el espacio de búsqueda. No te quita la responsabilidad.


El reporte de excepciones para el auditor

Veamos cómo se ve un reporte concreto que el LLM puede generar al cierre del mes. Esto es lo que recibe el contador senior o el auditor externo:

CONCILIACIÓN MENSUAL — Cliente: ACME SA
Período: Mayo 2026
Generado: 03/06/2026 09:15

──── RESUMEN ────
Facturas procesadas:           1.847
Facturas limpias (3-way OK):   1.762 (95.4%)
Excepciones detectadas:           85 (4.6%)
  Alta prioridad:                 12
  Media prioridad:                34
  Baja prioridad:                 39

──── EXCEPCIONES ALTA PRIORIDAD ────

[1] Proveedor: SERVICIOS TI XYZ SAS - NIT 9001234567
    Factura: FE-2026-04812, $4.250.000 COP
    Tipo: Discrepancia de monto
    Libro:    $4.250.000 (cargado como neto)
    XML/DIAN: $4.250.000 total (neto $3.571.428 + IVA)
    Acción sugerida: corregir asiento contable, separar 
                     neto + IVA. Verificar declaración mensual.

[2] Proveedor: CONSULTING ABC LTDA - RUT 76.123.456-7
    Factura: 33-001-00123, $2.890.000 CLP
    Tipo: Cancelada en SII
    Detalle: factura cancelada el 25/05 por emisor. 
             Aún activa en libro contable.
    Acción sugerida: asiento de reverso, ajustar IVA débito 
                     fiscal del período.

[3] ... 

──── PATRONES OBSERVADOS ────

- Aumento del 18% en excepciones vs abril 2026
- Proveedor "FERRETERIA INDUSTRIAL XYZ" con 4 excepciones 
  consecutivas — revisar relación.
- 3 facturas registradas con misma referencia bancaria — 
  posible duplicado.

──── PROCESADO POR ────
Pipeline: Document AI + GPT-5.5 + Reglas Internas v2.1
Validación humana pendiente: 12 facturas (estimado 1.5h)

Este formato es el que cierra el loop. El humano sabe exactamente qué revisar, con qué prioridad, y por qué.

🎯 La transformación profesional

Antes (sin IA): el contador senior recibe 1.847 facturas, hace muestreo manual, revisa 50-100, no sabe si las que no revisó están bien.

Después (con IA): el contador senior recibe un reporte con 12 excepciones alta prioridad. Las revisa todas en 1-2 horas. Tiene garantía documental de que las otras 1.835 pasaron los tres cruces automatizados, con trazabilidad completa.


El patrón ganador, completo

Cerremos el módulo 3 con el patrón aplicado al pipeline completo de factura a cierre:

1. Adquisición:    XML (Lección 7)  o  Document AI / OCR (Lección 8)
2. Normalización:  LLM normaliza, completa, clasifica
3. Reglas:         políticas internas (umbrales, proveedores autorizados)
4. Conciliación:   3-way match (factura ↔ libro ↔ sistema oficial)
5. Excepciones:    LLM clasifica y prioriza
6. Humano:         revisa excepciones, firma cierre, mantiene escepticismo NIA

Cada paso es esencial. Saltearse uno rompe la cadena de confianza profesional.


Próximos pasos

Cerraste el Módulo 3 sobre OCR, facturación electrónica y conciliación. Ya tenés el pipeline completo de procesamiento documental contable con IA.

En el Módulo 4 (lecciones 10-12) entramos a auditoría asistida por IA: Ley de Benford para detección de anomalías, muestreo inteligente que va más allá del azar, y generación automatizada de workpapers de auditoría según NIA.

💡 Tarea opcional antes de continuar

Pensá en el último cierre mensual donde hubo problemas — diferencias que aparecieron tarde, ajustes de último momento, observaciones del auditor.

Mirando el patrón completo (adquisición → normalización → reglas → conciliación → excepciones → revisión humana):

  1. ¿En qué paso se rompió la cadena?
  2. ¿Qué herramienta de las que vimos lo habría evitado?
  3. ¿Qué umbrales y reglas tendrías que definir explícitamente para tu firma?

Anotalo. Va a ser la base de tu roadmap de implementación del Módulo 7.

Próxima lección: 10. Detección de anomalías con Ley de Benford + IA

Checkpoint de comprensión

3 preguntas para verificar lo aprendido. No afecta tu nota del examen final.

1En el cruce 3-way de conciliación (factura física ↔ libro contable ↔ sistema oficial), ¿qué detecta específicamente la comparación libro contable vs sistema oficial que las otras dos no detectan?
2El pipeline detecta que el libro contable tiene la factura "F2026-00123" y también "F2026 00123" del mismo proveedor, mismo monto, mismo día. ¿Cuál es la acción correcta del LLM?
3Según NIA 240 (Fraude), ¿qué tipo de excepción debe escalar SIEMPRE a revisión humana profesional, sin importar el monto?

Completaste esta leccion?

Marca esta leccion como completada. Tu progreso se guardara en tu navegador.