> ## 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.

# Requisitos previos

> Revisa los requisitos de infraestructura, dependencias, autenticación y formato de archivos que tu entorno necesita antes de desplegar Matcher para conciliación.

Antes de desplegar Matcher, confirma que tu entorno cumple los requisitos descritos en esta página.
Estos requisitos previos definen la base para ejecutar la conciliación de forma confiable en entornos de desarrollo y producción.

## Requisitos del sistema

***

### Infraestructura

Los valores de abajo son puntos de partida operativos validados en la plataforma, no mínimos impuestos por el producto. Ajústalos según tu volumen de transacciones y tus necesidades de retención.

| Componente         | Punto de partida validado / guía de escalamiento | Propósito                                                       |
| ------------------ | ------------------------------------------------ | --------------------------------------------------------------- |
| **CPU**            | 2 núcleos / 4+ núcleos                           | La lógica de coincidencia y puntuación usa mucha CPU            |
| **Memoria**        | 2 GB / 4+ GB                                     | Procesamiento en memoria de lotes de transacciones              |
| **Almacenamiento** | 10 GB / 50+ GB                                   | Almacenamiento persistente de transacciones y logs de auditoría |

### Dependencias

El stack local de Compose es la base de dependencias validada en la plataforma. Fija:

* **PostgreSQL 17**: almacén de datos principal de contextos de conciliación, transacciones, coincidencias y logs de auditoría.
* **Valkey 8**: servicio compatible con Redis que se usa para cache, detección de duplicados, bloqueo distribuido y control de idempotencia.
* **RabbitMQ 4.1.3**: broker de mensajes para el procesamiento asíncrono entre contextos delimitados.

### Entorno de ejecución

Las siguientes versiones son la base de herramientas validada en la plataforma, no una matriz de compatibilidad del producto:

* **Go 1.26+** (obligatorio solo cuando compilas desde el código fuente)
* **Docker 24+** y **Docker Compose 2.20+** para despliegues en contenedores
* **Kubernetes 1.28+** para despliegues de nivel productivo con Helm

## Opcional: conciliar datos de Midaz

***

Matcher se combina con Midaz Ledger, pero **no hay un conector en vivo entre ellos**. Matcher no tiene `MIDAZ_API_URL` y no abre ninguna conexión con Midaz. Conciliar datos de Midaz es del todo opcional. Matcher funciona como un producto independiente que concilia cualquier fuente de datos.

### Cuándo conciliar datos de Midaz

Concilia los datos del ledger de Midaz si:

* Usas Midaz como tu sistema de ledger
* Quieres conciliar los asientos de Midaz contra fuentes externas (extractos bancarios, informes de gateway)

### Cuándo Midaz no participa

Matcher funciona de forma independiente cuando:

* Se concilia entre sistemas externos (bancos, ERP, procesadores de pago)
* Se usa otro sistema de ledger
* Se importan datos del ledger mediante archivos CSV/JSON/XML

### Cómo funciona

Matcher concilia los datos de Midaz igual que ingiere cualquier fuente (por importación, no por consulta en vivo):

1. Exporta los datos del ledger del período que quieres conciliar.
2. Importa esa exportación a un contexto de Matcher como una fuente de tipo `LEDGER`.
3. Importa los datos de la contraparte (extracto bancario o informe de gateway) como el otro lado.
4. Matcher empareja los dos lados con tus reglas de coincidencia.

<Info>
  Consulta la guía [Matcher y Midaz](/es/products/matcher/integrations/matcher-midaz-integration) para el flujo completo.
</Info>

## Autenticación

***

Matcher usa **lib-auth** para autenticación y autorización, igual que el resto del ecosistema Lerian.

### Flujo de autenticación

1. El cliente obtiene un JWT del proveedor de identidad
2. El cliente envía el token en el header `Authorization: Bearer ***`.
3. Matcher valida el token mediante lib-auth
4. Los claims del token aportan la identidad del tenant y los permisos

### Permisos obligatorios

Permisos granulares controlan el acceso a las funciones de Matcher:

| Permiso              | Descripción                               |
| -------------------- | ----------------------------------------- |
| `contexts:create`    | Crear contextos de conciliación           |
| `contexts:read`      | Ver la configuración del contexto         |
| `rules:create`       | Crear y actualizar reglas de coincidencia |
| `imports:create`     | Subir archivos de transacciones           |
| `match-runs:run`     | Ejecutar trabajos de coincidencia         |
| `exceptions:read`    | Ver excepciones                           |
| `exceptions:resolve` | Resolver excepciones                      |
| `reports:read`       | Acceder a informes y vistas de auditoría  |

### Modo single-tenant

`MULTI_TENANT_ENABLED` controla este modo. Su valor predeterminado es `false`, lo que hace que Matcher use el tenant predeterminado de abajo. El estado de autenticación o la falta del claim de tenant en el JWT no cambian Matcher a modo single-tenant.

```bash theme={null}
# Default tenant configuration (single-tenant mode)
DEFAULT_TENANT_ID=11111111-1111-1111-1111-111111111111
DEFAULT_TENANT_SLUG=default
```

## Formatos de importación genéricos

***

Los importadores genéricos de Matcher aceptan CSV, JSON y XML. Los parsers integrados también admiten CAMT.053, CNAB 240/400, OFX, varios formatos de adquirentes y formatos de cuentas por cobrar. Consulta el [catálogo de formatos de importación](/es/products/matcher/imports/matcher-import-formats) para el inventario completo.

Cada formato genérico tiene requisitos estructurales específicos para una ingesta correcta.

### CSV (valores separados por comas)

De uso común para extractos bancarios y exportaciones.

**Requisitos:**

* El archivo debe tener una fila de encabezado
* Codificación UTF-8
* Delimitador de coma (configurable)
* Campos entre comillas para valores que contienen delimitadores

**Ejemplo:**

```csv theme={null}
transaction_id,amount,currency,date,reference
TXN-001,1000.00,USD,2024-01-15,Invoice payment
TXN-002,-250.50,USD,2024-01-16,Refund
```

### JSON (notación de objetos javascript)

Recomendado para integraciones basadas en API.

**Requisitos:**

* Arreglo JSON válido de objetos de transacción
* Codificación UTF-8
* Nombres de campo consistentes en todos los registros

**Ejemplo:**

```json theme={null}
[
  {
    "transaction_id": "TXN-001",
    "amount": 1000.0,
    "currency": "USD",
    "date": "2024-01-15",
    "reference": "Invoice payment"
  }
]
```

### XML (lenguaje de marcado extensible)

Común en integraciones empresariales y bancarias.

**Requisitos:**

* Un único elemento raíz
* Codificación UTF-8
* Estructura de elementos consistente

**Ejemplo:**

```xml theme={null}
<?xml version="1.0" encoding="UTF-8"?>
<transactions>
 <transaction>
 <transaction_id>TXN-001</transaction_id>
 <amount>1000.00</amount>
 <currency>USD</currency>
 <date>2024-01-15</date>
 <reference>Invoice payment</reference>
 </transaction>
</transactions>
```

### Límites de tamaño de archivo

| Límite                              | Predeterminado | Configuración                                                                                    |
| ----------------------------------- | -------------- | ------------------------------------------------------------------------------------------------ |
| Tamaño máximo del archivo subido    | 1 GiB          | `INGESTION_MAX_UPLOAD_BYTES` en el arranque o Systemplane en tiempo de ejecución (1 MiB a 8 GiB) |
| Cuerpo máximo de solicitud en búfer | 100 MiB        | `HTTP_BODY_LIMIT_BYTES` (solicitudes que no son de subida)                                       |

## Requisitos de red

***

### Acceso de entrada

Matcher expone una API REST que debe ser accesible para los clientes:

| Puerto | Protocolo  | Propósito                                                                         |
| ------ | ---------- | --------------------------------------------------------------------------------- |
| 4018   | HTTP/HTTPS | Servidor de API (predeterminado `:4018`; sirve HTTPS cuando TLS está configurado) |

### Acceso de salida

Matcher debe poder alcanzar los siguientes servicios:

| Servicio                                    | Propósito                   | Obligatorio                                                                          |
| ------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------ |
| PostgreSQL                                  | Persistencia de datos       | Sí                                                                                   |
| Redis                                       | Cache y coordinación        | Sí                                                                                   |
| RabbitMQ                                    | Mensajería                  | Sí                                                                                   |
| Almacenamiento de objetos compatible con S3 | Exportaciones y archivado   | Cuando el worker de exportación está habilitado (habilitado de forma predeterminada) |
| Servicio de autenticación                   | Validación de tokens        | Si la autenticación está habilitada                                                  |
| JIRA                                        | Enrutamiento de excepciones | Opcional                                                                             |
| Webhooks personalizados                     | Notificaciones de eventos   | Opcional                                                                             |

### Configuración de TLS

Para entornos de producción, configura TLS:

```bash theme={null}
SERVER_TLS_CERT_FILE=/path/to/cert.pem
SERVER_TLS_KEY_FILE=/path/to/key.pem
```

## Lista de verificación del entorno

***

Antes de continuar con la instalación, confirma que:

* **La infraestructura está lista**: PostgreSQL, Redis y RabbitMQ están activos y accesibles. El almacenamiento de objetos compatible con S3 también está listo si habilitas el worker de exportación (la opción predeterminada)
* **La autenticación está lista**: el servicio de autenticación está disponible, o desactivaste la autenticación de forma explícita
* **El acceso de red funciona**: la conectividad de entrada y de salida necesaria está en su lugar
* **Las credenciales están disponibles**: tienes las credenciales de la base de datos y los tokens de API
* **Los datos de prueba están listos**: tienes archivos de transacciones para tu primera prueba (consulta [Inicio rápido](/es/products/matcher/getting-started/matcher-quick-start))

## Próximos pasos

***

<Card title="Instalación" icon="download" href="/es/products/matcher/getting-started/matcher-installation" horizontal>
  Despliega Matcher con Docker o Kubernetes.
</Card>

<Card title="Inicio rápido" icon="rocket" href="/es/products/matcher/getting-started/matcher-quick-start" horizontal>
  Ejecuta tu primera conciliación.
</Card>
