Saltar al contenido principal
La conciliación del mundo real a menudo involucra transacciones que no coinciden 1:1. Un solo pago puede cubrir varias facturas, o varios depósitos pueden consolidarse en un solo asiento bancario. Matcher atiende estos escenarios complejos mediante la coincidencia por división y por agregación.

Resumen


El tipo de contexto controla la cardinalidad de la coincidencia. Matcher admite tres tipos de contexto:
No existe un tipo de contexto N:1 separado. La transacción única siempre está en el lado izquierdo. Para una agregación, pon en el lado izquierdo el origen que trae el asiento consolidado.

Cómo funciona


Dos mecanismos controlan el comportamiento de división y agregación:
  1. Tipo de contexto: determina la cardinalidad de la coincidencia (1:1, 1:N o N:M).
  2. Flags de asignación de la regla: controlan cómo Matcher distribuye los montos dentro de un grupo de coincidencia.
No hay un ajuste separado de “split” o “aggregate” en el contexto. El tipo de contexto define los patrones permitidos, y la configuración de la regla controla el comportamiento de asignación.

Mapeo de tipos de contexto

Configuración de asignación de la regla

Todos los tipos de regla aceptan flags de asignación en su config. Matcher los aplica en contextos 1:N:

Ejemplo: regla de división con asignación

En un contexto 1:N, cada transacción del lado derecho debe pasar los controles de la regla contra la transacción del lado izquierdo. Una regla que compara montos solo coincide con tramos iguales al total, así que una regla de división desactiva matchAmount y deja que la asignación verifique el total. Las reglas TOLERANCE siempre comparan montos.
cURL

Cómo crear un contexto 1:N


Para habilitar la coincidencia por división o por agregación, crea un contexto con el tipo 1:N:
cURL
Referencia de API: Crear contexto

Coincidencia por división 1:N


Una transacción del lado izquierdo coincide con muchas transacciones del lado derecho.

Casos de uso comunes

  • Pago masivo: una sola transferencia bancaria que cubre varias facturas
  • Nómina: un solo débito bancario para varios pagos de salario
  • Liquidación: un solo pago del gateway para varios pedidos

Ejemplo: pago masivo de facturas

Lado izquierdo (extracto bancario): Lado derecho (asientos del ledger): Resultado: coincidencia 1:3 con asignación completa

Coincidencia por agregación (muchos a uno)


Muchas transacciones coinciden con una transacción consolidada. Esto usa el tipo de contexto 1:N con el origen consolidado en el lado izquierdo. No existe un tipo N:1 separado.

Casos de uso comunes

  • Depósitos bancarios: varios cheques depositados como un solo crédito
  • Liquidaciones de tarjetas: lote diario de transacciones como un solo depósito
  • Consolidación de efectivo: varios recibos de caja registradora a un solo depósito

Ejemplo: depósito consolidado

Lado derecho (punto de venta): Lado izquierdo (extracto bancario): Resultado: coincidencia 3:1 con asignación completa

Coincidencia N:M de muchos a muchos


Varias transacciones de origen coinciden con varias transacciones de destino. Este es el patrón más complejo.

Casos de uso comunes

  • Neteo intercompañía: varias facturas neteadas contra varios pagos
  • Liquidaciones de operaciones: compensación compleja con ejecuciones parciales
  • Reconocimiento de ingresos: varias entregas contra varios anticipos

Ejemplo: neteo intercompañía

Orígenes (cuentas por pagar de la Empresa A): Destinos (cuentas por cobrar de la Empresa A): Resultado: coincidencia 2:2, $18,000 en total coincidente Para habilitar la coincidencia N:M, crea un contexto con el tipo N:M:
cURL

Cómo ejecutar y revisar las coincidencias


Después de configurar el contexto y las reglas, dispara una ejecución de coincidencia y revisa los grupos resultantes.

Ejecutar la coincidencia

cURL
Una ejecución DRY_RUN informa sus estadísticas, pero no guarda grupos de coincidencia. Para listar grupos de coincidencia, ejecuta con COMMIT.

Ver el historial de ejecuciones de coincidencia

cURL

Ver los grupos de coincidencia de una ejecución

Debes enviar el parámetro de query string contextId. La respuesta es una lista de grupos de coincidencia paginada por cursor, cada uno con sus transacciones coincidentes (en todas las cardinalidades) y sus puntuaciones de confianza.
cURL

Romper (deshacer) un grupo de coincidencia

Para revertir un grupo incorrecto, deshaz la coincidencia. Matcher rechaza un grupo PROPOSED y revoca un grupo CONFIRMED. En ambos casos, sus transacciones vuelven a UNMATCHED. Revocar un grupo CONFIRMED también retira sus residuales de partidas abiertas, anula sus variaciones de comisión y retira las excepciones que generó, en la misma transacción. Debes enviar el parámetro de query string contextId y un reason en el cuerpo.
cURL

Algoritmo de coincidencia


El algoritmo depende del tipo de contexto.

Asignación secuencial determinista 1:N

Para los escenarios de división y agregación (1:N), Matcher usa asignación secuencial determinista:
  1. Ordenar: Matcher ordena las transacciones de forma determinista para asegurar resultados reproducibles entre ejecuciones.
  2. Recolectar: para cada transacción del lado izquierdo, Matcher recolecta las transacciones del lado derecho que pasan los controles de la regla contra ella.
  3. Asignar: Matcher asigna las transacciones recolectadas en el orden de clasificación y se detiene cuando el monto restante queda dentro de la tolerancia de asignación. Omite una transacción en otra moneda. Asigna solo transacciones con el signo de liquidación del signConvention del contexto: el signo de la transacción del lado izquierdo con SAME (el predeterminado), el signo opuesto con OPPOSITE.
  4. Seguir los residuos: Matcher hace seguimiento de los montos que quedan sin asignar. Si allowPartial es true, Matcher limita un tramo que se excede al monto restante. Una división con cobertura insuficiente igual expone una excepción de diagnóstico.

Solucionador de coincidencia de conjuntos N:M

Para los escenarios N:M, Matcher no asigna de forma secuencial. Usa un solucionador acotado de selección de subconjuntos. El solucionador agrupa los candidatos por la identidad de coincidencia de la regla. Luego busca un subconjunto de transacciones del lado izquierdo y un subconjunto de transacciones del lado derecho que concilien entre sí. Un grupo tiene como máximo 4 transacciones por lado. Matcher omite un bucket que tiene más de 40 transacciones en cualquiera de los lados. Solo las reglas EXACT y TOLERANCE se ejecutan en contextos N:M. La selección se mantiene determinista sobre la entrada ordenada. Cada grupo propuesto debe superar el control fijo de confianza (puntuación mínima 60). Ninguna transacción cae en dos grupos propuestos dentro de una misma ejecución. En las reglas TOLERANCE, la clave nmDeductionBand permite que el solucionador admita un subconjunto de pagos que paga de menos un subconjunto de facturas dentro de la banda.

Motivos de excepción

Las transacciones que Matcher no puede conciliar por completo se exponen como excepciones tipificadas:
  • SPLIT_INCOMPLETE: existen asignaciones pero no cubren por completo el monto de destino, sin importar allowPartial.
  • OVER_SETTLED: una transacción liquidó de más una obligación que una ejecución anterior arrastró abierta. Matcher expone el remanente liquidado de más como una discrepancia tipificada.
Puedes filtrar la lista de excepciones por estos valores de reason.

Mejores prácticas


La coincidencia de muchos a muchos es compleja. Empieza con patrones más simples y habilita N:M solo cuando sea necesario.
Las pequeñas diferencias de redondeo son comunes en los pagos divididos. Configura allocationToleranceValue en unos pocos centavos para evitar excepciones falsas.
Configura allowPartial en true solo cuando esperas coincidencias parciales. Esto evita coincidencias falsas por datos incompletos.
Prueba siempre la coincidencia por división y por agregación primero en modo DRY_RUN y lee las estadísticas de la ejecución. Una ejecución de prueba no guarda grupos de coincidencia.
Haz seguimiento de los montos residuales en el tiempo. Los residuos crecientes pueden indicar problemas sistemáticos de coincidencia.

Próximos pasos


Reglas de coincidencia

Configura reglas y ajustes de asignación.

Seguridad

Seguridad y control de acceso.