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

# Variables de entorno

> Consulta las variables de entorno que configuran Lender, agrupadas por tema: servidor, licencia, tenancy, bases de datos, Midaz, streaming de eventos, outbox y jobs programados.

Esta referencia lista las variables de entorno que Lender lee, con el valor por defecto de cada una. Lender se entrega como una imagen de contenedor, y la misma imagen trae el binario `/migrate` que aplica las migraciones. Defines estas variables al desplegar. Para los bloques de configuración que todo producto Lerian comparte, consulta la [referencia de configuración BYOC](https://docs.lerian.studio/es/reference/byoc-configuration.md). La página [Configuración y despliegue](https://docs.lerian.studio/es/products/lender/configuration-and-deploy.md) explica cómo encajan las piezas.

Lender sirve `GET /health`, `GET /readyz` y `GET /version` en el puerto principal, definido por `SERVER_ADDRESS`, y no tiene un puerto de salud separado. Cuando habilitas el listener de webhook de cobranza o de Streaming Hub, cada uno sirve su propio `/readyz`. El `/readyz` también reporta una licencia revocada.

Lender no inicia sin una `LICENSE_KEY` válida, sin `STREAMING_ENABLED=true` y al menos un broker en `STREAMING_BROKERS`, ni con un `DEFAULT_TENANT_ID` inválido. La originación necesita Midaz.

## Aplicación y servidor

| Variable | Descripción | Predeterminado |
| - | - | - |
| `ENV_NAME` | Nombre del entorno. Con `production`, Lender aplica sus comprobaciones de producción al iniciar. | `development` |
| `LOG_LEVEL` | Verbosidad del log. Una clave de configuración en tiempo de ejecución puede cambiarla sin reiniciar. | `info` |
| `DEPLOYMENT_MODE` | Modo de despliegue. Los valores aceptados incluyen `local` y `production`. | `local` |
| `SERVER_ADDRESS` | Dirección de escucha de la API y de las sondas `/health`, `/readyz` y `/version`. | `:8080` |
| `HTTP_BODY_LIMIT_BYTES` | Mayor cuerpo de solicitud, en bytes. | `104857600` |
| `SWAGGER_ENABLED` | Sirve el documento OpenAPI. Siempre desactivado cuando `ENV_NAME=production`. | `false` |
| `BUSINESS_DATE_ENABLED` | Permite que un tenant viva en una fecha de negocio que avanza por la API. Lender inicia con `true` solo cuando `ENV_NAME` es `staging`, `development`, `local` o `test` y `DEPLOYMENT_MODE` no es `production`. Úsalo en sandbox o en homologación, nunca en producción. | `false` |

## Licencia

| Variable | Descripción | Predeterminado |
| - | - | - |
| `LICENSE_KEY` | Clave de licencia de Lerian. La clave es válida para todo el despliegue. Lender la valida al iniciar en todo `DEPLOYMENT_MODE` y no inicia sin una clave válida. Sensible. | — |

## TLS y proxies

| Variable | Descripción | Predeterminado |
| - | - | - |
| `SERVER_TLS_CERT_FILE` | Ruta del certificado TLS que sirve la API. | — |
| `SERVER_TLS_KEY_FILE` | Ruta de la clave privada TLS que sirve la API. | — |
| `TLS_TERMINATED_UPSTREAM` | Define `true` cuando un proxy termina el TLS antes de Lender. | `false` |
| `TRUST_PROXY_ENABLED` | Confía en los encabezados de reenvío de los proxies de `TRUSTED_PROXIES`. | `false` |
| `TRUSTED_PROXIES` | Direcciones de proxies de confianza, separadas por coma. | — |

## CORS

| Variable | Descripción | Predeterminado |
| - | - | - |
| `CORS_ALLOWED_ORIGINS` | Orígenes CORS permitidos, separados por coma. Define orígenes explícitos en producción. | `http://localhost:3000` |
| `ACCESS_CONTROL_ALLOW_ORIGIN` | Se lee cuando `CORS_ALLOWED_ORIGINS` no está definida. | `http://localhost:3000` |
| `CORS_ALLOWED_METHODS` | Métodos CORS permitidos. | `GET,POST,PUT,PATCH,DELETE,OPTIONS` |
| `ACCESS_CONTROL_ALLOW_METHODS` | Se lee cuando `CORS_ALLOWED_METHODS` no está definida. | `GET,POST,PUT,PATCH,DELETE,OPTIONS` |
| `CORS_ALLOWED_HEADERS` | Encabezados de solicitud CORS permitidos. La lista por defecto incluye `X-Idempotency`. | — |
| `ACCESS_CONTROL_ALLOW_HEADERS` | Se lee cuando `CORS_ALLOWED_HEADERS` no está definida. La lista por defecto incluye `X-Idempotency`. | — |
| `CORS_EXPOSE_HEADERS` | Encabezados de respuesta que un navegador puede leer. | `X-Idempotency-Replayed,X-Idempotency-Fenced` |
| `ACCESS_CONTROL_EXPOSE_HEADERS` | Se lee cuando `CORS_EXPOSE_HEADERS` no está definida. | `X-Idempotency-Replayed,X-Idempotency-Fenced` |
| `CORS_ALLOW_CREDENTIALS` | Permite credenciales en solicitudes cross-origin. | `false` |
| `ACCESS_CONTROL_ALLOW_CREDENTIALS` | Se lee cuando `CORS_ALLOW_CREDENTIALS` no está definida. | `false` |

## Tenancy

| Variable | Descripción | Predeterminado |
| - | - | - |
| `DEFAULT_TENANT_ID` | Tenant que atiende el despliegue cuando el modo multi-tenant está desactivado. Un UUID válido. | `11111111-1111-1111-1111-111111111111` |
| `MULTI_TENANT_ENABLED` | Ejecuta Lender en modo multi-tenant, con el tenant tomado del token. | `false` |
| `MULTI_TENANT_URL` | Dirección del servicio que resuelve los tenants. | — |
| `MULTI_TENANT_REDIS_HOST` | Host de Valkey de la caché multi-tenant. | — |
| `MULTI_TENANT_REDIS_PORT` | Puerto de Valkey de la caché multi-tenant. | `6379` |
| `MULTI_TENANT_REDIS_PASSWORD` | Contraseña de Valkey de la caché multi-tenant. Sensible. | — |
| `MULTI_TENANT_REDIS_TLS` | Se conecta a ese Valkey por TLS. | `false` |
| `MULTI_TENANT_MAX_TENANT_POOLS` | Mayor número de pools de conexión de tenants mantenidos a la vez. | `100` |
| `MULTI_TENANT_IDLE_TIMEOUT_SEC` | Segundos que un pool de tenant queda inactivo antes de que Lender lo cierre. | `300` |
| `MULTI_TENANT_TIMEOUT` | Segundos que Lender espera al servicio de resolución de tenants. | `30` |
| `MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLD` | Fallos que abren el circuito hacia el servicio de resolución de tenants. | `5` |
| `MULTI_TENANT_CIRCUIT_BREAKER_TIMEOUT_SEC` | Segundos que el circuito permanece abierto. | `30` |
| `MULTI_TENANT_SERVICE_API_KEY` | Clave de API que Lender envía al servicio de resolución de tenants. Sensible. | — |
| `MULTI_TENANT_CACHE_TTL_SEC` | Segundos que la configuración de un tenant permanece en caché. | `120` |
| `MULTI_TENANT_CONNECTIONS_CHECK_INTERVAL_SEC` | Segundos entre las comprobaciones de las conexiones de tenants. | `30` |

## PostgreSQL

| Variable | Descripción | Predeterminado |
| - | - | - |
| `DATABASE_URL` | URL de conexión PostgreSQL obligatoria para `/migrate`. Sensible. | — |
| `POSTGRES_HOST` | Host de la base de datos primaria. | `localhost` |
| `POSTGRES_PORT` | Puerto de la base de datos primaria. | `5432` |
| `POSTGRES_USER` | Usuario de la base de datos primaria. | `lender` |
| `POSTGRES_PASSWORD` | Contraseña de la base de datos primaria. Sensible. | — |
| `POSTGRES_NAME` | Nombre de la base de datos primaria. | `lender` |
| `POSTGRES_SSLMODE` | Modo SSL de la conexión primaria. | `disable` |
| `POSTGRES_REPLICA_HOST` | Host de la base de datos réplica. Define las variables de la réplica para leer de una réplica. | — |
| `POSTGRES_REPLICA_PORT` | Puerto de la base de datos réplica. | — |
| `POSTGRES_REPLICA_USER` | Usuario de la base de datos réplica. | — |
| `POSTGRES_REPLICA_PASSWORD` | Contraseña de la base de datos réplica. Sensible. | — |
| `POSTGRES_REPLICA_NAME` | Nombre de la base de datos réplica. | — |
| `POSTGRES_REPLICA_SSLMODE` | Modo SSL de la conexión de la réplica. | — |
| `POSTGRES_MAX_OPEN_CONNS` | Mayor número de conexiones abiertas. | `25` |
| `POSTGRES_MAX_IDLE_CONNS` | Mayor número de conexiones inactivas mantenidas. | `5` |
| `POSTGRES_CONN_MAX_LIFETIME_MINS` | Minutos de vida de una conexión antes de que Lender la reemplace. | `30` |
| `POSTGRES_CONN_MAX_IDLE_TIME_MINS` | Minutos que una conexión puede quedar inactiva. | `5` |
| `POSTGRES_CONNECT_TIMEOUT_SEC` | Segundos de espera por una nueva conexión. | `10` |

## Valkey

| Variable | Descripción | Predeterminado |
| - | - | - |
| `REDIS_HOST` | Dirección de Valkey, `host:port`. | `localhost:6379` |
| `REDIS_MASTER_NAME` | Nombre del master cuando Valkey corre detrás de Sentinel. | — |
| `REDIS_PASSWORD` | Contraseña de Valkey. Sensible. | — |
| `REDIS_DB` | Número de la base de datos de Valkey. | `0` |
| `REDIS_PROTOCOL` | Versión del protocolo de Valkey. | `3` |
| `REDIS_TLS` | Se conecta a Valkey por TLS. | `false` |
| `REDIS_CA_CERT` | Certificado de CA de la conexión TLS con Valkey. | — |
| `REDIS_POOL_SIZE` | Tamaño del pool de conexiones de Valkey. | `10` |
| `REDIS_MIN_IDLE_CONNS` | Menor número de conexiones inactivas de Valkey mantenidas. | `2` |
| `REDIS_READ_TIMEOUT` | Timeout de lectura de Valkey, en segundos. | `3` |
| `REDIS_WRITE_TIMEOUT` | Timeout de escritura de Valkey, en segundos. | `3` |
| `REDIS_DIAL_TIMEOUT` | Timeout de conexión de Valkey, en segundos. | `5` |
| `REDIS_POOL_TIMEOUT` | Segundos de espera por una conexión libre de Valkey. | `2` |
| `REDIS_MAX_RETRIES` | Reintentos de un comando de Valkey que falló. | `3` |
| `REDIS_MIN_RETRY_BACKOFF` | Menor espera entre reintentos en Valkey. | `8` |
| `REDIS_MAX_RETRY_BACKOFF` | Mayor espera entre reintentos en Valkey. | `1` |

## Autenticación y credenciales de máquina

| Variable | Descripción | Predeterminado |
| - | - | - |
| `PLUGIN_AUTH_ENABLED` | Activa la autorización de rutas. La producción la exige. | `true` |
| `PLUGIN_AUTH_HOST` | Dirección del proveedor de identidad detrás de Access Manager. | — |
| `AUTH_M2M_INVERSION_ENABLED` | Activa el gate de inversión machine-to-machine que exigen los despliegues BYOC. | `false` |
| `M2M_TARGET_SERVICE` | Nombre de la aplicación del servicio cuya credencial de máquina solicita Lender. | — |
| `M2M_ADDITIONAL_TARGET_SERVICES` | Otros nombres de aplicación cuyas credenciales de máquina solicita Lender, separados por coma. | — |
| `M2M_CREDENTIAL_CACHE_TTL_SEC` | Segundos que Lender guarda una credencial de máquina en caché. | `300` |
| `M2M_SECRETS_BACKEND` | Dónde guarda Lender las credenciales de máquina del ledger en tu propio despliegue. | — |
| `M2M_VAULT_MOUNT` | Mount key-value del vault que guarda las credenciales. | — |
| `AWS_REGION` | Región del backend de secretos. | `us-east-1` |

## Midaz

| Variable | Descripción | Predeterminado |
| - | - | - |
| `MIDAZ_LEDGER_BASE_URL` | Dirección del ledger de Midaz. | — |
| `MIDAZ_LEDGER_ORGANIZATION_ID` | Organización predeterminada de Midaz para los asientos. | — |
| `MIDAZ_LEDGER_ID` | Ledger predeterminado de Midaz para los asientos. | — |
| `MIDAZ_OAUTH_TOKEN_URL` | De dónde obtiene Lender las credenciales de Midaz. | — |
| `MIDAZ_LEDGER_ACCOUNT_PROVISIONING_ENABLED` | Antes de un asiento, Lender adopta o crea el activo del ledger, los tipos de cuenta y las cuentas que nombra el perfil contable. Desactívalo solo cuando aprovisionas el ledger antes. | `true` |
| `MIDAZ_LEDGER_IDEMPOTENCY_TTL_SEC` | Segundos que Midaz mantiene el slot de idempotencia de un asiento. Define un valor solo para aumentarlo: un valor positivo por debajo del horizonte de reintentos impide el inicio. | `0` |

## Matcher y Reporter

| Variable | Descripción | Predeterminado |
| - | - | - |
| `MATCHER_ENABLED` | Activa la conexión con Matcher. | `false` |
| `MATCHER_BASE_URL` | Dirección de Matcher. | — |
| `MATCHER_OAUTH_TOKEN_URL` | De dónde obtiene Lender las credenciales de Matcher. | — |
| `MATCHER_M2M_TARGET` | Nombre de la aplicación de Matcher en Access Manager. | `matcher` |
| `REPORTER_BASE_URL` | Dirección de Reporter. La generación del archivo de oferta de las cesiones lo usa. | — |
| `REPORTER_OFFER_DATASOURCE` | Nombre de la fuente de datos de Reporter que guarda los datos de la oferta. | — |
| `REPORTER_M2M_TARGET` | Nombre de la aplicación de Reporter en Access Manager. | `reporter` |
| `REPORTER_TIMEOUT_SEC` | Segundos que Lender espera a Reporter. | `120` |

## Streaming de eventos

| Variable | Descripción | Predeterminado |
| - | - | - |
| `STREAMING_ENABLED` | Activa el backbone de eventos. El inicio exige `true`. | `false` |
| `STREAMING_BROKERS` | Direcciones de los brokers compatibles con Kafka, separadas por coma. El inicio exige al menos una. | — |
| `STREAMING_CLOUDEVENTS_SOURCE` | Source CloudEvents de todo evento que Lender publica. Define `lender`. | — |
| `STREAMING_TLS_ENABLED` | Se conecta a los brokers por TLS. | `false` |
| `STREAMING_TLS_SERVER_NAME` | Nombre de servidor que debe tener el certificado del broker. | — |
| `STREAMING_TLS_CA_CERT` | Certificado de CA PEM en base64 para confianza en brokers privados. Un base64 inválido o un contenido que no sea PEM impide el inicio. | — |
| `STREAMING_SASL_MECHANISM` | Mecanismo SASL de los brokers. | — |
| `STREAMING_SASL_USERNAME` | Nombre de usuario SASL. | — |
| `STREAMING_SASL_PASSWORD` | Contraseña SASL. Sensible. | — |

## Outbox

| Variable | Descripción | Predeterminado |
| - | - | - |
| `OUTBOX_TABLE_NAME` | Nombre de la tabla del outbox. | `outbox_events` |
| `OUTBOX_DISPATCH_INTERVAL_SEC` | Segundos entre las ejecuciones del despachador del outbox transaccional. | `2` |
| `OUTBOX_BATCH_SIZE` | Elementos tomados en una ejecución. | `50` |
| `OUTBOX_PUBLISH_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `3` |
| `OUTBOX_PUBLISH_BACKOFF_MS` | Milisegundos entre los intentos de publicar un evento. | `200` |
| `OUTBOX_RETRY_WINDOW_SEC` | Segundos de la ventana de reintento del outbox. | `300` |
| `OUTBOX_MAX_DISPATCH_ATTEMPTS` | Mayor número de intentos de despacho de un evento. | `10` |
| `OUTBOX_PROCESSING_TIMEOUT_SEC` | Segundos que un evento puede quedar en procesamiento. | `600` |
| `OUTBOX_MAX_FAILED_PER_BATCH` | Límite de eventos fallidos por lote. | `25` |
| `OUTBOX_INCLUDE_TENANT_METRICS` | Incluye el tenant en las métricas del outbox. | `false` |
| `OUTBOX_ALLOW_EMPTY_TENANT` | Permite que el outbox despache eventos sin tenant. | `true` |

## RabbitMQ

| Variable | Descripción | Predeterminado |
| - | - | - |
| `RABBITMQ_ENABLED` | Activa la ruta separada de RabbitMQ. No es el transporte del catálogo de eventos. | `false` |
| `RABBITMQ_URL` | URL de conexión de RabbitMQ. Sensible. | — |
| `RABBITMQ_HOST` | Host de RabbitMQ. | `localhost` |
| `RABBITMQ_PORT_AMQP` | Puerto AMQP de RabbitMQ. | `5672` |
| `RABBITMQ_PORT_HOST` | Puerto de administración de RabbitMQ. | `15672` |
| `RABBITMQ_DEFAULT_USER` | Usuario de RabbitMQ. | `guest` |
| `RABBITMQ_DEFAULT_PASS` | Contraseña de RabbitMQ. Sensible. | `guest` |
| `RABBITMQ_VHOST` | Virtual host de RabbitMQ. | `/` |
| `RABBITMQ_QUEUE` | Nombre de la cola de RabbitMQ. | — |
| `RABBITMQ_EXCHANGE` | Nombre del exchange de RabbitMQ. | `events` |
| `RABBITMQ_HEALTH_CHECK_URL` | URL de comprobación de salud de RabbitMQ. | — |
| `RABBITMQ_HEALTH_CHECK_ALLOWED_HOSTS` | Hosts que la comprobación de salud puede llamar, separados por coma. | — |
| `RABBITMQ_REQUIRE_HEALTH_ALLOWED_HOSTS` | Exige que `RABBITMQ_HEALTH_CHECK_ALLOWED_HOSTS` esté definida. | `false` |
| `RABBITMQ_ALLOW_INSECURE_HEALTH_CHECK` | Permite la comprobación de salud por HTTP simple. | `false` |
| `RABBITMQ_ALLOW_INSECURE_TLS` | Omite la verificación del certificado TLS de RabbitMQ. | `false` |
| `RABBITMQ_PUBLISHER_CONFIRM_TIMEOUT_MS` | Milisegundos de espera por la confirmación de una publicación. | `5000` |
| `RABBITMQ_PUBLISHER_RECOVERY_INITIAL_MS` | Milisegundos antes del primer intento de recuperación del publicador. | `1000` |
| `RABBITMQ_PUBLISHER_RECOVERY_MAX_MS` | Mayor espera, en milisegundos, entre intentos de recuperación. | `30000` |
| `RABBITMQ_PUBLISHER_MAX_RECOVERIES` | Mayor número de intentos de recuperación. | `10` |

## Idempotencia, límites y paginación

| Variable | Descripción | Predeterminado |
| - | - | - |
| `IDEMPOTENCY_RETRY_WINDOW_SEC` | Segundos en que una respuesta de idempotencia guardada sigue siendo reproducible. | `86400` |
| `IDEMPOTENCY_PROCESSING_LEASE_SEC` | Segundos en que una clave de idempotencia en curso sigue retenida. | `900` |
| `RATE_LIMIT_ENABLED` | Límite de tasa de solicitudes. Siempre activado cuando `ENV_NAME=production`. | `true` |
| `RATE_LIMIT_MAX` | Solicitudes permitidas por ventana en el límite por defecto. | `500` |
| `RATE_LIMIT_WINDOW_SEC` | Ventana del límite por defecto, en segundos. | `60` |
| `AGGRESSIVE_RATE_LIMIT_MAX` | Solicitudes permitidas por ventana en el límite estricto. | `100` |
| `AGGRESSIVE_RATE_LIMIT_WINDOW_SEC` | Ventana del límite estricto, en segundos. | `60` |
| `RELAXED_RATE_LIMIT_MAX` | Solicitudes permitidas por ventana en el límite relajado. | `1000` |
| `RELAXED_RATE_LIMIT_WINDOW_SEC` | Ventana del límite relajado, en segundos. | `60` |
| `INFRA_CONNECT_TIMEOUT_SEC` | Segundos de espera por una conexión de infraestructura al iniciar. | `30` |
| `CIRCUIT_BREAKER_ENABLED` | Activa el circuit breaker de salida. | `false` |
| `MAX_PAGINATION_LIMIT` | Mayor `limit` que acepta una operación de listado. | `100` |
| `MAX_PAGINATION_MONTH_DATE_RANGE` | Mayor rango de fechas, en meses, que acepta una operación de listado. | `3` |

## Telemetría

| Variable | Descripción | Predeterminado |
| - | - | - |
| `ENABLE_TELEMETRY` | Activa la telemetría. | `false` |
| `OTEL_RESOURCE_SERVICE_NAME` | Nombre del servicio en trazas y métricas. | `lender` |
| `OTEL_LIBRARY_NAME` | Nombre de la biblioteca de instrumentación en la telemetría. | — |
| `OTEL_RESOURCE_DEPLOYMENT_ENVIRONMENT` | Etiqueta de entorno en la telemetría. | `development` |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint del recolector OTLP. | `localhost:4317` |
| `DB_METRICS_INTERVAL_SEC` | Segundos entre las muestras de métricas de la base de datos. | `15` |

## Cobranza y listeners de webhook

| Variable | Descripción | Predeterminado |
| - | - | - |
| `COLLECTION_ENABLED` | Activa el canal de cobranza. | `false` |
| `COLLECTION_PROVIDER` | Proveedor de cobranza. | — |
| `COLLECTION_PROVIDER_ACCOUNT_ID` | Identificador de la cuenta en el proveedor. | — |
| `COLLECTION_WEBHOOK_ENABLED` | Activa el listener de webhook de cobranza. Sirve su propio `/readyz`. | `false` |
| `COLLECTION_WEBHOOK_ADDRESS` | Dirección de escucha del listener de webhook de cobranza. | `:9081` |
| `COLLECTION_WEBHOOK_BODY_LIMIT_BYTES` | Mayor cuerpo de webhook, en bytes. | `1048576` |
| `COLLECTION_WEBHOOK_MAX_SKEW_SEC` | Mayor diferencia de reloj, en segundos, que puede tener un webhook firmado. | `300` |
| `COLLECTION_WEBHOOK_TLS_CERT_FILE` | Ruta del certificado TLS del listener. | — |
| `COLLECTION_WEBHOOK_TLS_KEY_FILE` | Ruta de la clave privada TLS del listener. | — |
| `COLLECTION_WEBHOOK_UPSTREAM_TLS_TERMINATION_VALIDATED` | Confirma que un proxy delante del listener termina el TLS. | `false` |
| `HUB_WEBHOOK_ENABLED` | Activa el listener de webhook de Streaming Hub. Sirve su propio `/readyz`. | `false` |
| `HUB_WEBHOOK_ADDRESS` | Dirección de escucha del listener de webhook de Streaming Hub. | `:9082` |
| `HUB_WEBHOOK_BODY_LIMIT_BYTES` | Mayor cuerpo de webhook, en bytes. | `1048576` |
| `HUB_WEBHOOK_MAX_SKEW_SEC` | Mayor diferencia de reloj, en segundos, que puede tener un webhook firmado. | `300` |
| `HUB_WEBHOOK_SECRET_ENV_PREFIX` | Prefijo de las variables de secreto de webhook por tenant. | `HUB_WEBHOOK_SECRET__` |
| `HUB_WEBHOOK_TLS_CERT_FILE` | Ruta del certificado TLS del listener. | — |
| `HUB_WEBHOOK_TLS_KEY_FILE` | Ruta de la clave privada TLS del listener. | — |
| `HUB_WEBHOOK_UPSTREAM_TLS_TERMINATION_VALIDATED` | Confirma que un proxy delante del listener termina el TLS. | `false` |

## Consignado: gateway, almacenamiento y consumidores

| Variable | Descripción | Predeterminado |
| - | - | - |
| `CONSIGNADO_ENABLED` | Controla el tratamiento de entrada de `consignado.averbacao.rejected`. Al desactivarlo, mantén `CONSUMER_CONSIGNADO_AVERBACAO_REJECTED_ENABLED` desactivada también: el inicio rechaza esa contradicción. | `true` |
| `CONSIGNADO_GATEWAY_BASE_URL` | Dirección del gateway de Consignado. | — |
| `CONSIGNADO_GATEWAY_OAUTH_TOKEN_URL` | De dónde obtiene Lender las credenciales del gateway. | — |
| `CONSIGNADO_GATEWAY_M2M_TARGET` | Nombre del gateway en el catálogo de Access Manager. | — |
| `CONSIGNADO_GATEWAY_TIMEOUT_SEC` | Segundos que Lender espera al gateway. | `15` |
| `CONSIGNADO_PAYOFF_QUOTE_VALIDITY_HOURS` | Horas en que una cotización de liquidación sigue vigente. Una versión de producto puede definir su propio valor. Un valor no positivo vuelve a 24. | `24` |
| `ADJUSTMENT_EVIDENCE_S3_BUCKET` | Bucket de almacenamiento de objetos de las evidencias de ajuste compensatorio. | — |
| `ADJUSTMENT_EVIDENCE_S3_ENDPOINT` | Endpoint de ese almacenamiento de objetos. | — |
| `ADJUSTMENT_EVIDENCE_S3_FORCE_PATH_STYLE` | Usa direccionamiento de estilo de ruta. | `false` |
| `ADJUSTMENT_EVIDENCE_S3_REGION` | Región de ese almacenamiento de objetos. | `us-east-1` |
| `ISSUANCE_CUSTODY_S3_BUCKET` | Bucket de almacenamiento de objetos de la custodia de instrumentos de crédito. | — |
| `ISSUANCE_CUSTODY_S3_ENDPOINT` | Endpoint de ese almacenamiento de objetos. | — |
| `ISSUANCE_CUSTODY_S3_FORCE_PATH_STYLE` | Usa direccionamiento de estilo de ruta. | `false` |
| `ISSUANCE_CUSTODY_S3_REGION` | Región de ese almacenamiento de objetos. | `us-east-1` |
| `CONSUMER_CONSIGNADO_AVERBACAO_REJECTED_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_EMPLOYMENT_STATUS_REPORTED_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_CONTRACT_REGISTERED_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_DISBURSEMENT_CONFIRMED_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_CONTRACT_CORRECTION_AVAILABLE_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_DISBURSEMENT_CORRECTION_AVAILABLE_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_RECONCILIATION_RECEIVED_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_MATCH_RUN_COMPLETED_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_PORTABILITY_OUTCOME_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_REFINANCE_OUTCOME_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_RENEGOCIACAO_OUTCOME_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |
| `CONSUMER_CONSIGNADO_MIGRACAO_OUTCOME_ENABLED` | Activa el consumidor de entrada. Desactivado por defecto. | `false` |

## Consignado: drenadores y relays

| Variable | Descripción | Predeterminado |
| - | - | - |
| `CONSIGNADO_EXCLUSION_LOCAL_BATCH_SIZE` | Elementos tomados en una ejecución. | `50` |
| `CONSIGNADO_EXCLUSION_LOCAL_TENANT_CONCURRENCY` | Tenants trabajados a la vez. | `4` |
| `CONSIGNADO_EXCLUSION_LOCAL_LEASE_SECONDS` | Segundos que un worker mantiene un elemento reclamado. | `30` |
| `CONSIGNADO_EXCLUSION_LOCAL_BACKOFF_BASE_SECONDS` | Base del backoff de reintento, en segundos. | `1` |
| `CONSIGNADO_EXCLUSION_LOCAL_BACKOFF_MAX_SECONDS` | Mayor backoff de reintento, en segundos. | `300` |
| `CONSIGNADO_EXCLUSION_LOCAL_POLL_INTERVAL_MS` | Milisegundos entre consultas. | `1000` |
| `CONSIGNADO_CONTRACT_REGISTRATION_DRAINER_ENABLED` | Activa o desactiva el drenador. | `false` |
| `CONSIGNADO_CONTRACT_REGISTRATION_BATCH_SIZE` | Elementos tomados en una ejecución. | `1` |
| `CONSIGNADO_CONTRACT_REGISTRATION_LEASE_SECONDS` | Segundos que un worker mantiene un elemento reclamado. | `180` |
| `CONSIGNADO_CONTRACT_REGISTRATION_RETRY_DELAY_SECONDS` | Segundos antes del primer reintento de un elemento. | `30` |
| `CONSIGNADO_CONTRACT_REGISTRATION_RETRY_CEILING_SECONDS` | Mayor espera, en segundos, entre dos reintentos. | `900` |
| `CONSIGNADO_CONTRACT_REGISTRATION_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `8` |
| `CONSIGNADO_CONTRACT_REGISTRATION_STUCK_AFTER_SECONDS` | Segundos tras los cuales un elemento aún en curso cuenta como atascado. | `900` |
| `CONSIGNADO_CONTRACT_REGISTRATION_DRAIN_SCHEDULE` | Programación cron del job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_DRAINER_ENABLED` | Activa o desactiva el drenador. | `false` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_DRAIN_SCHEDULE` | Programación cron del job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_BATCH_SIZE` | Elementos tomados en una ejecución. | `1` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_LEASE_SECONDS` | Segundos que un worker mantiene un elemento reclamado. | `60` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_RETRY_DELAY_SECONDS` | Segundos antes del primer reintento de un elemento. | `30` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_RETRY_CEILING_SECONDS` | Mayor espera, en segundos, entre dos reintentos. | `900` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `8` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_STUCK_AFTER_SECONDS` | Segundos tras los cuales un elemento aún en curso cuenta como atascado. | `900` |
| `CONSIGNADO_CONTRACT_CORRECTION_DRAINER_ENABLED` | Activa o desactiva el drenador. | `false` |
| `CONSIGNADO_CONTRACT_CORRECTION_BATCH_SIZE` | Elementos tomados en una ejecución. | `1` |
| `CONSIGNADO_CONTRACT_CORRECTION_LEASE_SECONDS` | Segundos que un worker mantiene un elemento reclamado. | `60` |
| `CONSIGNADO_CONTRACT_CORRECTION_RETRY_DELAY_SECONDS` | Segundos antes del primer reintento de un elemento. | `30` |
| `CONSIGNADO_CONTRACT_CORRECTION_RETRY_CEILING_SECONDS` | Mayor espera, en segundos, entre dos reintentos. | `900` |
| `CONSIGNADO_CONTRACT_CORRECTION_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `8` |
| `CONSIGNADO_CONTRACT_CORRECTION_STUCK_AFTER_SECONDS` | Segundos tras los cuales un elemento aún en curso cuenta como atascado. | `900` |
| `CONSIGNADO_CONTRACT_CORRECTION_DRAIN_SCHEDULE` | Programación cron del job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RELAY_ENABLED` | Activa o desactiva el relay. | `false` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RELAY_SCHEDULE` | Programación cron del job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_POSTING_BATCH_SIZE` | Elementos tomados en una ejecución. | `1` |
| `CONSIGNADO_DISBURSEMENT_POSTING_LEASE_SECONDS` | Segundos que un worker mantiene un elemento reclamado. | `60` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RETRY_DELAY_SECONDS` | Segundos antes del primer reintento de un elemento. | `30` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RETRY_CEILING_SECONDS` | Mayor espera, en segundos, entre dos reintentos. | `900` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECONCILIATION_ENABLED` | Activa o desactiva la ejecución de conciliación. | `false` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECONCILIATION_SCHEDULE` | Programación cron del job. | `*/2 * * * *` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECHECK_DELAY_SECONDS` | Segundos antes de la primera nueva comprobación de un elemento. | `60` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECHECK_CEILING_SECONDS` | Mayor espera, en segundos, entre dos nuevas comprobaciones. | `3600` |

## Jobs programados

| Variable | Descripción | Predeterminado |
| - | - | - |
| `JOBS_PORTFOLIO_SNAPSHOT_ENABLED` | Escribe el snapshot de la cartera que leen los paneles. | `false` |
| `JOBS_PORTFOLIO_SNAPSHOT_SCHEDULE` | Programación cron del job. | `0 4 * * *` |
| `JOBS_PDD_PROMOTION_ENABLED` | Activa o desactiva la promoción diaria de etapa de pérdida de crédito. | `true` |
| `JOBS_PDD_PROMOTION_SCHEDULE` | Programación cron del job. | `0 5 * * *` |
| `JOBS_ACCRUAL_HEARTBEAT_ENABLED` | Activa o desactiva el heartbeat de devengo. | `true` |
| `JOBS_ACCRUAL_HEARTBEAT_SCHEDULE` | Programación cron del job. | `0 6 * * *` |
| `JOBS_PROVISION_MEASUREMENT_ENABLED` | Activa o desactiva la medición diaria de provisión. | `true` |
| `JOBS_PROVISION_MEASUREMENT_SCHEDULE` | Programación cron del job. | `0 7 * * *` |
| `JOBS_COLLECTION_RECONCILIATION_ENABLED` | Activa o desactiva el job programado. | `false` |
| `JOBS_COLLECTION_RECONCILIATION_SCHEDULE` | Programación cron del job. | `*/5 * * * *` |
| `JOBS_COLLECTION_RECONCILIATION_BATCH_SIZE` | Elementos tomados en una ejecución. | `100` |
| `JOBS_COLLECTION_RECONCILIATION_LEASE_SEC` | Segundos que un worker mantiene un elemento reclamado. | `60` |
| `JOBS_COLLECTION_RECONCILIATION_BACKOFF_BASE_SEC` | Base del backoff de reintento, en segundos. | `30` |
| `JOBS_COLLECTION_RECONCILIATION_BACKOFF_MAX_SEC` | Mayor backoff de reintento, en segundos. | `3600` |
| `JOBS_COLLECTION_AGENT_CHANNEL_SWEEP_ENABLED` | Activa o desactiva el job programado. | `true` |
| `JOBS_COLLECTION_AGENT_CHANNEL_SWEEP_SCHEDULE` | Programación cron del job. | `*/10 * * * *` |
| `JOBS_COLLECTION_AGENT_CHANNEL_SWEEP_LIMIT` | Tenants leídos por ejecución. | `200` |
| `JOBS_COLLECTION_SETTLEMENT_BATCH_SIZE` | Elementos de liquidación tomados en una ejecución. | `50` |
| `JOBS_COLLECTION_SETTLEMENT_LEASE_SEC` | Segundos que un worker mantiene un elemento reclamado. | `120` |
| `JOBS_COLLECTION_SETTLEMENT_RETRY_DELAY_SEC` | Segundos antes del primer reintento de un elemento. | `60` |
| `JOBS_COLLECTION_SETTLEMENT_RETRY_CEILING_SEC` | Mayor espera, en segundos, entre dos reintentos. | `3600` |
| `JOBS_COLLECTION_SETTLEMENT_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `5` |
| `JOBS_REGISTRATION_INVENTORY_ENABLED` | Activa o desactiva el job programado. | `false` |
| `JOBS_REGISTRATION_INVENTORY_SCHEDULE` | Programación cron del job. | `*/15 * * * *` |
| `JOBS_REGISTRATION_INVENTORY_PAGE_SIZE` | Filas leídas por página. | `100` |
| `JOBS_REGISTRATION_INVENTORY_GRACE_SEC` | Segundos que un elemento puede esperar antes de que el inventario lo reporte. | `7200` |
| `JOBS_INSTRUMENT_CUSTODY_SWEEP_ENABLED` | Activa o desactiva el job programado. | `false` |
| `JOBS_INSTRUMENT_CUSTODY_SWEEP_SCHEDULE` | Programación cron del job. | `*/15 * * * *` |
| `JOBS_ASSIGNMENT_LIFECYCLE_SWEEP_ENABLED` | Activa o desactiva el job programado. | `true` |
| `JOBS_ASSIGNMENT_LIFECYCLE_SWEEP_SCHEDULE` | Programación cron del job. | `*/10 * * * *` |
| `JOBS_ASSIGNMENT_LIFECYCLE_SWEEP_LIMIT` | Elementos leídos por ejecución. | `500` |
| `JOBS_PORTABILITY_DRAIN_ENABLED` | Activa o desactiva el job programado. | `true` |
| `JOBS_PORTABILITY_DRAIN_SCHEDULE` | Programación cron del job. | `*/10 * * * *` |
| `JOBS_PORTABILITY_DRAIN_BATCH_SIZE` | Elementos tomados en una ejecución. | `50` |
| `JOBS_PORTABILITY_DRAIN_LEASE_SEC` | Segundos que un worker mantiene un elemento reclamado. | `120` |
| `JOBS_PORTABILITY_DRAIN_RETRY_DELAY_SEC` | Segundos antes del primer reintento de un elemento. | `60` |
| `JOBS_PORTABILITY_DRAIN_RETRY_CEILING_SEC` | Mayor espera, en segundos, entre dos reintentos. | `3600` |
| `JOBS_PORTABILITY_DRAIN_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `5` |
| `JOBS_PORTABILITY_DIVERGENCE_GRACE_HOURS` | Horas que una portabilidad puede esperar antes de que el barrido reporte una divergencia. | `48` |
| `JOBS_PORTABILITY_DIVERGENCE_PAGE_SIZE` | Filas leídas por página. | `100` |
| `JOBS_PORTABILITY_REFUND_ENABLED` | Activa o desactiva el job programado. | `false` |
| `JOBS_PORTABILITY_REFUND_PAGE_SIZE` | Filas leídas por página. | `100` |
| `JOBS_REFINANCE_DRAIN_ENABLED` | Activa o desactiva el job programado. | `true` |
| `JOBS_REFINANCE_DRAIN_SCHEDULE` | Programación cron del job. | `*/10 * * * *` |
| `JOBS_REFINANCE_DRAIN_BATCH_SIZE` | Elementos tomados en una ejecución. | `25` |
| `JOBS_REFINANCE_DRAIN_LEASE_SEC` | Segundos que un worker mantiene un elemento reclamado. | `300` |
| `JOBS_REFINANCE_DRAIN_RETRY_DELAY_SEC` | Segundos antes del primer reintento de un elemento. | `120` |
| `JOBS_REFINANCE_DRAIN_RETRY_CEILING_SEC` | Mayor espera, en segundos, entre dos reintentos. | `7200` |
| `JOBS_REFINANCE_DRAIN_MAX_ATTEMPTS` | Mayor número de intentos para un elemento. | `10` |
| `JOBS_REFINANCE_DRAIN_WAIT_MAX_AGE_HOURS` | Horas que un elemento puede esperar su hecho correspondiente. | `336` |
| `JOBS_REFINANCE_REVERSAL_WINDOW_BUSINESS_DAYS` | Días hábiles en que un refinanciamiento aún puede revertirse. | `7` |
| `JOBS_REFINANCE_DIVERGENCE_GRACE_HOURS` | Horas que un refinanciamiento puede esperar antes de que el barrido reporte una divergencia. | `48` |
| `JOBS_REFINANCE_DIVERGENCE_PAGE_SIZE` | Filas leídas por página. | `100` |
| `JOBS_DAILY_INDEX_SYNC_ENABLED` | Activa o desactiva el job programado. | `true` |
| `JOBS_DAILY_INDEX_SYNC_SCHEDULE` | Programación cron del job. | `0 12,23 * * *` |
| `JOBS_DAILY_INDEX_SYNC_HISTORY_START` | Primera fecha que carga la sincronización, `YYYY-MM-DD`. | `2026-01-01` |
| `JOBS_UNAPPLIED_CASH_SETTLEMENT_ENABLED` | Salda cuotas vencidas con el dinero retenido no aplicado. Desactivado, una cuota que el dinero retenido cubre entra en mora. | `true` |
| `JOBS_UNAPPLIED_CASH_SETTLEMENT_SCHEDULE` | Programación cron del job. | `30 3 * * *` |
| `JOBS_WRITE_OFF_CONTROL_EXIT_ENABLED` | Activa o desactiva la salida nocturna de contratos dados de baja del control. | `true` |
| `JOBS_WRITE_OFF_CONTROL_EXIT_SCHEDULE` | Programación cron del job. | `45 3 * * *` |
| `BCB_SGS_BASE_URL` | Dirección del servicio de series del Banco Central de donde Lender lee las tasas diarias de índice. Lender necesita acceso de salida a él. | `https://api.bcb.gov.br` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.