Saltar al contenido principal
Las reglas de coincidencia definen cómo Matcher compara transacciones entre distintas fuentes. Puedes aplicar coincidencias estrictas, permitir variaciones controladas o modelar lógica más avanzada mediante condiciones compuestas.

Cómo funcionan las reglas


Cuando se inicia una ejecución de conciliación, Matcher evalúa las reglas según su prioridad.
  • Las reglas se evalúan desde el número de prioridad más bajo hasta el más alto.
  • La primera regla que produce una coincidencia determina el resultado.
  • Si ninguna regla coincide, la transacción se clasifica como una excepción.
Este enfoque garantiza una conciliación determinista, al tiempo que permite reglas progresivamente más flexibles como respaldo.

Tipos de reglas


Exact

Requiere una coincidencia estricta en los campos configurados.
  • Ideal para: coincidencias deterministas donde los valores deben alinearse 1:1.

Tolerance

Permite una variación controlada en la comparación de montos.
  • Ideal para: patrones de variación conocidos, como comisiones, redondeos o diferencias de tipo de cambio (FX).

Date lag

Permite diferencias de fecha entre transacciones.
  • Ideal para: retrasos de contabilización entre sistemas.

Creación de reglas de coincidencia


Regla Exact

cURL
curl -X POST "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "type": "EXACT",
   "priority": 1,
   "config": {
     "matchAmount": true,
     "matchCurrency": true,
     "matchDate": true,
     "matchReference": true,
     "datePrecision": "DAY",
     "caseInsensitive": true,
     "referenceMustSet": false,
     "matchBaseAmount": false,
     "matchBaseCurrency": false,
     "matchScore": 100,
     "matchBaseScore": 90
   }
 }'

Referencia de configuración

CampoTipoPor defectoDescripción
matchAmountBooleantrueRequiere coincidencia exacta de monto
matchCurrencyBooleantrueRequiere coincidencia exacta de moneda
matchDateBooleantrueRequiere coincidencia exacta de fecha
matchReferenceBooleantrueRequiere coincidencia exacta de referencia
datePrecisionString"DAY"Precisión de comparación de fecha: DAY o TIMESTAMP
caseInsensitiveBooleantrueComparación de referencia sin distinción de mayúsculas/minúsculas
referenceMustSetBooleanfalseRequiere que la referencia esté presente en ambos lados
matchBaseAmountBooleanfalseComparar monto base (convertido) en lugar del original
matchBaseCurrencyBooleanfalseComparar moneda base en lugar de la original
matchScoreInteger100Puntuación de confianza asignada cuando la regla coincide
matchBaseScoreInteger90Puntuación de confianza asignada cuando la regla coincide por monto base

Respuesta

{
  "id": "019c96a0-2b20-7123-9a1b-2c3d4e5f6a7b",
  "contextId": "019c96a0-2a10-7dfe-b5c1-8a1b2c3d4e5f",
  "type": "EXACT",
  "priority": 1,
  "config": {
    "matchAmount": true,
    "matchCurrency": true,
    "matchDate": true,
    "matchReference": true,
    "datePrecision": "DAY",
    "caseInsensitive": true,
    "referenceMustSet": false,
    "matchBaseAmount": false,
    "matchBaseCurrency": false,
    "matchScore": 100,
    "matchBaseScore": 90
  },
  "createdAt": "2026-02-02T16:40:00Z",
  "updatedAt": "2026-02-02T16:40:00Z"
}
API Reference: Create match rule

Regla Tolerance

cURL
curl -X POST "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "type": "TOLERANCE",
   "priority": 2,
   "config": {
     "percentTolerance": 0.005,
     "absTolerance": 0.50,
     "dateWindowDays": 3,
     "roundingScale": 2,
     "roundingMode": "HALF_UP",
     "percentageBase": "MAX",
     "matchCurrency": true,
     "matchReference": true,
     "caseInsensitive": true,
     "referenceMustSet": false,
     "matchBaseAmount": false,
     "matchBaseCurrency": false,
     "matchScore": 85,
     "matchBaseScore": 80
   }
 }'

Referencia de configuración

CampoTipoPor defectoDescripción
percentToleranceDecimal0.005Variación porcentual máxima permitida (0.005 = 0.5%)
absToleranceDecimal0.50Variación absoluta máxima de monto permitida
dateWindowDaysIntegerNúmero de días permitidos entre fechas de transacción
roundingScaleIntegerDecimales para redondeo
roundingModeStringEstrategia de redondeo: HALF_UP, BANKERS, FLOOR, CEIL o TRUNCATE
percentageBaseStringBase para cálculo de porcentaje: MAX, MIN, AVERAGE, LEFT o RIGHT
matchCurrencyBooleantrueRequiere coincidencia de moneda
matchReferenceBooleantrueRequiere coincidencia de referencia
caseInsensitiveBooleantrueComparación de referencia sin distinción de mayúsculas/minúsculas
referenceMustSetBooleanfalseRequiere que la referencia esté presente en ambos lados
matchBaseAmountBooleanfalseComparar monto base (convertido)
matchBaseCurrencyBooleanfalseComparar moneda base
matchScoreInteger85Puntuación de confianza cuando la regla coincide
matchBaseScoreInteger80Puntuación de confianza cuando la regla coincide por monto base
Ejemplo:
  • Transacción A: $1,000.00
  • Transacción B: $1,005.00
  • Variación: 0.5% → Coinciden (dentro de la tolerancia de 0.5% y tolerancia absoluta de $0.50)

Regla Date lag

cURL
curl -X POST "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "type": "DATE_LAG",
   "priority": 3,
   "config": {
     "maxDays": 3,
     "minDays": 0,
     "inclusive": true,
     "direction": "ABS",
     "feeTolerance": 0,
     "matchScore": 80,
     "matchCurrency": true
   }
 }'

Referencia de configuración

CampoTipoPor defectoDescripción
maxDaysIntegerNúmero máximo de días de diferencia permitidos
minDaysInteger0Número mínimo de días de diferencia requeridos
inclusiveBooleantrueSi los días límite son inclusivos
directionString"ABS"Cómo medir el desfase: ABS (absoluto), LEFT_BEFORE_RIGHT o RIGHT_BEFORE_LEFT
feeToleranceDecimal0Diferencia de monto permitida para compensar comisiones
matchScoreInteger80Puntuación de confianza cuando la regla coincide
matchCurrencyBooleantrueRequiere coincidencia de moneda

Configuración de asignación (todos los tipos de regla)

Todos los tipos de regla aceptan configuraciones adicionales de asignación para coincidencia dividida y agregada:
CampoTipoDescripción
allowPartialBooleanPermitir asignación parcial de montos de transacción
allocationDirectionStringOrden de asignación: LEFT_TO_RIGHT o RIGHT_TO_LEFT
allocationToleranceModeStringCómo se mide la tolerancia: ABS (absoluta) o PERCENT
allocationToleranceValueDecimalUmbral de tolerancia para la asignación
allocationUseBaseAmountBooleanUsar monto base (convertido) para la asignación

Prioridad de las reglas


Las reglas se evalúan según su prioridad. Los números más bajos se ejecutan primero.

Estrategia de prioridad

PrioridadTipo de reglaCaso de uso
1–10EXACTCoincidencias deterministas
11–50TOLERANCEVariaciones pequeñas y esperadas
51–100DATE_LAGDiferencias de fecha entre sistemas

Reordenar reglas

Puedes reordenar las reglas proporcionando los IDs en el orden deseado:
cURL
curl -X POST "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules/reorder" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "ruleIds": [
     "550e8400-e29b-41d4-a716-446655440001",
     "550e8400-e29b-41d4-a716-446655440002",
     "550e8400-e29b-41d4-a716-446655440000"
   ]
 }'
API Reference: Reorder match rules

Pruebas de reglas


Prueba las reglas en modo dry-run antes de confirmar las coincidencias.
cURL
curl -X POST "https://api.matcher.example.com/v1/matching/contexts/{contextId}/run" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "mode": "DRY_RUN"
 }'
El modo dry-run evalúa todas las reglas y muestra coincidencias potenciales sin persistir los resultados.

Gestión de reglas


Listar reglas

cURL
curl -X GET "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules" \
 -H "Authorization: Bearer $TOKEN"

Respuesta

El endpoint de listado devuelve una vista resumida de las reglas. Para ver los detalles completos de configuración de una regla específica, utiliza el endpoint individual de la regla o la respuesta de creación, que incluye el objeto config completo.
{
  "items": [
    {
      "id": "019c96a0-2b20-7123-9a1b-2c3d4e5f6a7b",
      "contextId": "019c96a0-2a10-7dfe-b5c1-8a1b2c3d4e5f",
      "type": "EXACT",
      "priority": 1,
      "config": {
        "matchAmount": true,
        "matchCurrency": true,
        "matchDate": true,
        "matchReference": true,
        "datePrecision": "DAY",
        "matchScore": 100,
        "matchBaseScore": 90
      },
      "createdAt": "2026-02-02T16:40:00Z",
      "updatedAt": "2026-02-02T16:40:00Z"
    }
  ],
  "limit": 20,
  "hasMore": false
}
API Reference: List match rules

Actualizar una regla

cURL
curl -X PATCH "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules/{ruleId}" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "priority": 5,
   "type": "TOLERANCE",
   "config": {
     "percentTolerance": 0.02,
     "absTolerance": 10.0
   }
 }'
API Reference: Update match rule

Eliminar una regla

cURL
curl -X DELETE "https://api.matcher.example.com/v1/config/contexts/{contextId}/rules/{ruleId}" \
 -H "Authorization: Bearer $TOKEN"
API Reference: Delete match rule

Buenas prácticas


Prioriza reglas exactas. Agrega reglas de tolerancia solo para variaciones que puedas justificar y explicar.
Usa intervalos (1, 10, 20, 50) para poder insertar reglas sin renumerar todo el conjunto.
Trata las actualizaciones de reglas como cambios de producción. Valida tasas de coincidencia y volumen de excepciones antes de confirmar.
Una regla debe documentar la variación que cubre y el riesgo que introduce.
Si una regla nunca coincide, puede ser innecesaria. Si coincide con demasiada frecuencia, puede ser demasiado amplia.
Una alta tolerancia incrementa los falsos positivos. Úsala como respaldo y revisa los resultados cuidadosamente.

Próximos pasos


Exception routing

Configura la clasificación, asignación y escalamiento de transacciones no conciliadas.

Confidence scoring

Entiende cómo se calculan los puntajes y cómo los umbrales afectan la automatización.