> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Listar candidatos de coincidencia para una transacción

> Devuelve una lista clasificada de transacciones sin coincidencia del lado opuesto que el motor considera contrapartes plausibles para la transacción objetivo, cada una con una puntuación de confianza, la regla que la impulsó, una justificación por componente (el "por qué") y deltas de importe/fecha. Impulsa los selectores de candidatos de resolución de excepciones y coincidencia manual. Alcance: las propuestas se puntúan mediante el motor de reglas determinista sobre importes de transacción sin procesar y NO aplican normalización de comisiones en tiempo de ejecución ni la banda de varianza FX; solo se devuelven contrapartes 1:1 por pares.



## OpenAPI

````yaml es/openapi/v3-current/matcher.yaml get /v1/matching/candidates
openapi: 3.1.0
info:
  title: Matcher APIs
  description: >-
    Referencia completa de la API para el motor de conciliación Matcher, que
    proporciona conciliación automatizada de transacciones entre Midaz Ledger y
    sistemas externos.
  version: 4.1.0
  license:
    name: Elastic License 2.0
    url: https://www.elastic.co/licensing/elastic-license
servers:
  - url: https://matcher.sandbox.lerian.net
security: []
paths:
  /v1/matching/candidates:
    get:
      tags:
        - Matching
      summary: Listar candidatos de coincidencia para una transacción
      description: >-
        Devuelve una lista clasificada de transacciones sin coincidencia del
        lado opuesto que el motor considera contrapartes plausibles para la
        transacción objetivo, cada una con una puntuación de confianza, la regla
        que la impulsó, una justificación por componente (el "por qué") y deltas
        de importe/fecha. Impulsa los selectores de candidatos de resolución de
        excepciones y coincidencia manual. Alcance: las propuestas se puntúan
        mediante el motor de reglas determinista sobre importes de transacción
        sin procesar y NO aplican normalización de comisiones en tiempo de
        ejecución ni la banda de varianza FX; solo se devuelven contrapartes 1:1
        por pares.
      operationId: listMatchCandidates
      parameters:
        - description: Context ID the transaction belongs to
          explode: false
          in: query
          name: contextId
          required: true
          schema:
            description: ID del contexto al que pertenece la transacción
            format: uuid
            type: string
        - description: >-
            Target transaction to find counterparts for. For an exception,
            resolve its transaction id first, then pass it here.
          explode: false
          in: query
          name: transactionId
          required: true
          schema:
            description: >-
              Transacción objetivo para la que encontrar contrapartes. Para una
              excepción, resuelva primero su id de transacción y luego páselo
              aquí.
            format: uuid
            type: string
        - description: Maximum number of ranked proposals to return
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Número máximo de propuestas clasificadas a devolver
            format: int64
            maximum: 200
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CandidateProposalsResponse'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    CandidateProposalsResponse:
      additionalProperties: false
      properties:
        items:
          description: Propuestas candidatas clasificadas (mayor puntuación primero)
          items:
            $ref: '#/components/schemas/CandidateProposalResponse'
          maxItems: 200
          type:
            - array
            - 'null'
        targetTransactionId:
          description: La transacción para la que se propusieron contrapartes
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
      required:
        - targetTransactionId
        - items
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Código de error de dominio estable y legible por máquina con alcance
            al servicio emisor (formato: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            Una explicación legible por humanos específica de esta ocurrencia
            del problema.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Lista opcional de detalles de errores individuales
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            Una referencia URI que identifica la ocurrencia específica del
            problema.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: Código de estado HTTP
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            Un resumen breve y legible por humanos del tipo de problema. Este
            valor no debería cambiar entre ocurrencias del error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: >-
            Una referencia URI a documentación legible por humanos para el
            error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    CandidateProposalResponse:
      additionalProperties: false
      properties:
        amountDelta:
          description: candidate.amount - target.amount como cadena decimal con signo
          examples:
            - '0.00'
          type: string
        dateDeltaDays:
          description: >-
            Diferencia de días enteros con signo (candidate - target) en días
            UTC
          examples:
            - 0
          format: int64
          type: integer
        ruleId:
          description: >-
            Identificador de la regla que produjo la mejor puntuación para este
            par
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        ruleType:
          description: Estrategia de la regla que produjo la mejor puntuación
          examples:
            - EXACT
          type: string
        score:
          description: Puntuación de confianza del motor para este par (0..100)
          examples:
            - 90
          format: int64
          maximum: 100
          minimum: 0
          type: integer
        transaction:
          $ref: '#/components/schemas/CandidateTransactionView'
          description: La transacción contraparte propuesta
        why:
          $ref: '#/components/schemas/CandidateWhy'
          description: Justificación por componente de la puntuación
      required:
        - transaction
        - ruleId
        - ruleType
        - score
        - why
        - amountDelta
        - dateDeltaDays
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Dónde ocurrió el error, p. ej. 'body.items[3].tags' o
            'path.thing-id'
          type: string
        message:
          description: Texto del mensaje de error
          type: string
        value:
          description: El valor en la ubicación indicada
      type: object
    CandidateTransactionView:
      additionalProperties: false
      properties:
        amount:
          description: Importe candidato como cadena decimal
          examples:
            - '100.50'
          type: string
        baseAmount:
          description: >-
            Importe candidato en moneda base, cuando la transacción fue
            convertida por FX
          examples:
            - '100.50'
          type: string
        currency:
          description: Código de moneda candidato ISO 4217
          examples:
            - USD
          type: string
        date:
          description: Fecha de la transacción candidata (marca de tiempo RFC 3339)
          examples:
            - '2025-01-15T10:30:00Z'
          type: string
        externalId:
          description: Referencia/id externo de la transacción candidata
          examples:
            - INV-1234
          type: string
        id:
          description: ID de la transacción candidata (UUID)
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        sourceId:
          description: Fuente a la que pertenece el candidato (UUID)
          examples:
            - 550e8400-e29b-41d4-a716-446655440001
          type: string
      required:
        - id
        - sourceId
        - amount
        - currency
        - date
      type: object
    CandidateWhy:
      additionalProperties: false
      properties:
        amountMatch:
          description: >-
            Si los importes son literalmente iguales en el eje de signo de la
            regla coincidente (no solo dentro de la tolerancia)
          examples:
            - true
          type: boolean
        currencyMatch:
          description: Si los códigos de moneda son literalmente iguales y ambos no vacíos
          examples:
            - true
          type: boolean
        dateMatch:
          description: >-
            Si ambas transacciones caen en el mismo día calendario UTC (no la
            ventana completa DATE_LAG)
          examples:
            - true
          type: boolean
        matchedKeys:
          description: >-
            Concordancia por clave para los campos de coincidencia compuestos
            configurados de la regla coincidente (matchFields), en orden de
            nombre de campo. Vacío cuando la regla coincidente no declara
            matchFields activos.
          items:
            $ref: '#/components/schemas/CandidateMatchedKey'
          type:
            - array
            - 'null'
        referenceScore:
          description: Contribución de similitud de referencia graduada de 0 a 1
          examples:
            - 1
          format: double
          maximum: 1
          minimum: 0
          type: number
      required:
        - amountMatch
        - currencyMatch
        - dateMatch
        - referenceScore
      type: object
    CandidateMatchedKey:
      additionalProperties: false
      properties:
        agreed:
          description: >-
            Si las dos transacciones concuerdan en esta clave bajo el
            modo/tolerancia configurado del campo — la propia decisión de
            compuerta por campo del motor
          examples:
            - true
          type: boolean
        field:
          description: >-
            Nombre del campo de coincidencia compuesto configurado (clave de
            metadatos)
          examples:
            - payment_id
          type: string
      required:
        - field
        - agreed
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Autenticación con token Bearer (formato: "Bearer {token}")'

````