Descripción general
La cardinalidad de la coincidencia se controla mediante el tipo de contexto. Matcher soporta tres tipos de contexto:
No existe un tipo de contexto
N:1 separado. La coincidencia agregada (muchos orígenes a un destino) es simplemente el tipo de contexto 1:N aplicado en la dirección de agregación: el mismo tipo de contexto cubre tanto la división como la agregación.Cómo funciona
El comportamiento de división y agregación se controla mediante dos mecanismos:
- Tipo de contexto — determina la cardinalidad de la coincidencia (
1:1,1:NoN:M). - Flags de asignación en la regla — controlan cómo se distribuyen los montos dentro de un grupo de coincidencia.
Mapeo de tipo de contexto
Configuraciones de asignación en reglas
Todos los tipos de regla aceptan flags de asignación en suconfig:
Ejemplo: regla de tolerancia con asignación
cURL
matchScore y matchBaseScore se aceptan y validan pero son reservados/inertes — no cambian la puntuación de confianza calculada. La confianza siempre se calcula a partir de los pesos de componentes internos fijos (monto 40, moneda 30, fecha 20, referencia 10). Consulta Puntuación de confianza.Creando un contexto 1:N
Para habilitar coincidencia dividida o agregada, crea un contexto con tipo
1:N:
cURL
Coincidencia dividida 1:N
Una transacción de origen coincide con múltiples transacciones de destino.
Casos de uso comunes
- Pago masivo: Una transferencia cubriendo múltiples facturas
- Nómina: Un débito bancario para múltiples pagos de salario
- Liquidación: Un pago de pasarela para múltiples órdenes
Ejemplo: pago masivo de facturas
Origen (Extracto bancario):
Destinos (Asientos contables):
Resultado: Coincidencia 1:3 con asignación completa
Coincidencia agregada (muchos a uno)
Múltiples transacciones de origen coinciden con una transacción de destino. Esta es la dirección de agregación del tipo de contexto
1:N: no es un tipo N:1 separado.
Casos de uso comunes
- Depósitos bancarios: Múltiples cheques depositados como un crédito
- Liquidaciones de tarjeta: Lote diario de transacciones como un depósito
- Consolidación de efectivo: Múltiples recibos de caja a un depósito
Ejemplo: depósito consolidado
Orígenes (Punto de venta):
Destino (Extracto bancario):
Resultado: Coincidencia 3:1 con asignación completa
Coincidencia N:M muchos a muchos
Múltiples transacciones de origen coinciden con múltiples transacciones de destino. Este es el patrón más complejo.
Casos de uso comunes
- Compensación intercompañía: Múltiples facturas compensadas contra múltiples pagos
- Liquidaciones comerciales: Compensación compleja con llenados parciales
- Reconocimiento de ingresos: Múltiples entregas contra múltiples anticipos
Ejemplo: compensación intercompañía
Orígenes (Cuentas por pagar Empresa A):
Destinos (Cuentas por cobrar Empresa A):
Resultado: Coincidencia 2:2, $18,000 total coincidido
Para habilitar coincidencia N:M, crea un contexto con tipo
N:M:
cURL
Ejecutando y revisando coincidencias
Después de configurar el contexto y las reglas, inicia una ejecución de coincidencia y revisa los grupos resultantes.
Ejecutar coincidencia
cURL
Ver historial de ejecuciones
cURL
Ver los grupos de coincidencia de una ejecución
El parámetro de consultacontextId es obligatorio. La respuesta es una lista paginada por cursor de grupos de coincidencia, cada uno con sus transacciones coincididas (en todas las cardinalidades) y sus puntajes de confianza.
cURL
Deshacer (desemparejar) un grupo de coincidencia
Para revertir un grupo incorrecto, deshaz el emparejamiento. Esto rechaza el grupo con un motivo y revierte todas sus transacciones aUNMATCHED. El parámetro de consulta contextId es obligatorio, y se envía un reason en el cuerpo.
cURL
Algoritmo de coincidencia
Para escenarios N:M, Matcher usa asignación secuencial determinista para emparejar transacciones.
Cómo funciona
- Ordenar: Las transacciones se ordenan de forma determinista para asegurar resultados reproducibles entre ejecuciones.
- Iterar: El motor recorre los candidatos en orden de prioridad.
- Asignar: Los montos se distribuyen según la configuración de
allocationDirection(LEFT_TO_RIGHToRIGHT_TO_LEFT). - Rastrear residuos: Cualquier monto no asignado restante se rastrea. Si
allowPartialestrue, se crean coincidencias parciales; de lo contrario, las transacciones no asignadas se convierten en excepciones.
Mejores prácticas
Comienza con 1:N antes de N:M
Comienza con 1:N antes de N:M
La coincidencia muchos a muchos es compleja. Comienza con patrones más simples y habilita N:M solo cuando sea necesario.
Usa tolerancia de asignación para redondeos
Usa tolerancia de asignación para redondeos
Las pequeñas diferencias de redondeo son comunes en pagos divididos. Configura allocationToleranceValue en unos pocos centavos para evitar excepciones falsas.
Habilita asignación parcial deliberadamente
Habilita asignación parcial deliberadamente
Solo configura allowPartial como true cuando se esperan coincidencias parciales. Esto previene coincidencias falsas de datos incompletos.
Ejecuta dry-run antes de confirmar
Ejecuta dry-run antes de confirmar
Siempre prueba la coincidencia dividida y agregada en modo DRY_RUN primero para verificar los resultados de asignación.
Monitorea los residuos
Monitorea los residuos
Rastrea los montos residuales a lo largo del tiempo. Los residuos crecientes pueden indicar problemas sistemáticos de coincidencia.
Próximos pasos
Reglas de coincidencia
Configura reglas y configuraciones de asignación.
Seguridad
Seguridad y control de acceso.

