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

# Variáveis de ambiente

> Consulte as variáveis de ambiente que configuram o Lender, agrupadas por assunto: servidor, licença, tenancy, bancos de dados, Midaz, streaming de eventos, outbox e jobs agendados.

Esta referência lista as variáveis de ambiente que o Lender lê, com o padrão de cada uma. O Lender é entregue como uma imagem de contêiner, e a mesma imagem traz o binário `/migrate` que aplica as migrações. Você define essas variáveis no deploy. Para os blocos de configuração que todo produto Lerian compartilha, consulte a [referência de configuração BYOC](https://docs.lerian.studio/pt/reference/byoc-configuration.md). A página [Configuração e deploy](https://docs.lerian.studio/pt/products/lender/configuration-and-deploy.md) explica como as peças se encaixam.

O Lender serve `GET /health`, `GET /readyz` e `GET /version` na porta principal, definida por `SERVER_ADDRESS`, e não tem porta de saúde separada. Quando você habilita o listener de webhook de cobrança ou do Streaming Hub, cada um serve o próprio `/readyz`. O `/readyz` também reporta uma licença revogada.

O Lender não inicia sem uma `LICENSE_KEY` válida, sem `STREAMING_ENABLED=true` e ao menos um broker em `STREAMING_BROKERS`, nem com um `DEFAULT_TENANT_ID` inválido. A originação precisa do Midaz.

## Aplicação e servidor

| Variável | Descrição | Padrão |
| - | - | - |
| `ENV_NAME` | Nome do ambiente. Com `production`, o Lender aplica as verificações de produção na inicialização. | `development` |
| `LOG_LEVEL` | Verbosidade do log. Uma chave de configuração em tempo de execução pode alterá-la sem reiniciar. | `info` |
| `DEPLOYMENT_MODE` | Modo de deploy. Os valores aceitos incluem `local` e `production`. | `local` |
| `SERVER_ADDRESS` | Endereço de escuta da API e das sondas `/health`, `/readyz` e `/version`. | `:8080` |
| `HTTP_BODY_LIMIT_BYTES` | Maior corpo de requisição, em bytes. | `104857600` |
| `SWAGGER_ENABLED` | Serve o documento OpenAPI. Sempre desligado quando `ENV_NAME=production`. | `false` |
| `BUSINESS_DATE_ENABLED` | Permite que um tenant viva em uma data de negócio que ele avança pela API. O Lender inicia com `true` apenas quando `ENV_NAME` é `staging`, `development`, `local` ou `test` e `DEPLOYMENT_MODE` não é `production`. Use em sandbox ou em homologação, nunca em produção. | `false` |

## Licença

| Variável | Descrição | Padrão |
| - | - | - |
| `LICENSE_KEY` | Chave de licença Lerian. A chave vale para o deploy todo. O Lender a valida na inicialização em todo `DEPLOYMENT_MODE` e não inicia sem uma chave válida. Sensível. | — |

## TLS e proxies

| Variável | Descrição | Padrão |
| - | - | - |
| `SERVER_TLS_CERT_FILE` | Caminho do certificado TLS que a API serve. | — |
| `SERVER_TLS_KEY_FILE` | Caminho da chave privada TLS que a API serve. | — |
| `TLS_TERMINATED_UPSTREAM` | Defina `true` quando um proxy termina o TLS antes do Lender. | `false` |
| `TRUST_PROXY_ENABLED` | Confia nos cabeçalhos de encaminhamento dos proxies de `TRUSTED_PROXIES`. | `false` |
| `TRUSTED_PROXIES` | Endereços de proxies confiáveis, separados por vírgula. | — |

## CORS

| Variável | Descrição | Padrão |
| - | - | - |
| `CORS_ALLOWED_ORIGINS` | Origens CORS permitidas, separadas por vírgula. Defina origens explícitas em produção. | `http://localhost:3000` |
| `ACCESS_CONTROL_ALLOW_ORIGIN` | Lida quando `CORS_ALLOWED_ORIGINS` não está definida. | `http://localhost:3000` |
| `CORS_ALLOWED_METHODS` | Métodos CORS permitidos. | `GET,POST,PUT,PATCH,DELETE,OPTIONS` |
| `ACCESS_CONTROL_ALLOW_METHODS` | Lida quando `CORS_ALLOWED_METHODS` não está definida. | `GET,POST,PUT,PATCH,DELETE,OPTIONS` |
| `CORS_ALLOWED_HEADERS` | Cabeçalhos de requisição CORS permitidos. A lista padrão inclui `X-Idempotency`. | — |
| `ACCESS_CONTROL_ALLOW_HEADERS` | Lida quando `CORS_ALLOWED_HEADERS` não está definida. A lista padrão inclui `X-Idempotency`. | — |
| `CORS_EXPOSE_HEADERS` | Cabeçalhos de resposta que um navegador pode ler. | `X-Idempotency-Replayed,X-Idempotency-Fenced` |
| `ACCESS_CONTROL_EXPOSE_HEADERS` | Lida quando `CORS_EXPOSE_HEADERS` não está definida. | `X-Idempotency-Replayed,X-Idempotency-Fenced` |
| `CORS_ALLOW_CREDENTIALS` | Permite credenciais em requisições cross-origin. | `false` |
| `ACCESS_CONTROL_ALLOW_CREDENTIALS` | Lida quando `CORS_ALLOW_CREDENTIALS` não está definida. | `false` |

## Tenancy

| Variável | Descrição | Padrão |
| - | - | - |
| `DEFAULT_TENANT_ID` | Tenant que o deploy atende quando o modo multi-tenant está desligado. Um UUID válido. | `11111111-1111-1111-1111-111111111111` |
| `MULTI_TENANT_ENABLED` | Executa o Lender em modo multi-tenant, com o tenant tirado do token. | `false` |
| `MULTI_TENANT_URL` | Endereço do serviço que resolve os tenants. | — |
| `MULTI_TENANT_REDIS_HOST` | Host do Valkey do cache multi-tenant. | — |
| `MULTI_TENANT_REDIS_PORT` | Porta do Valkey do cache multi-tenant. | `6379` |
| `MULTI_TENANT_REDIS_PASSWORD` | Senha do Valkey do cache multi-tenant. Sensível. | — |
| `MULTI_TENANT_REDIS_TLS` | Conecta a esse Valkey por TLS. | `false` |
| `MULTI_TENANT_MAX_TENANT_POOLS` | Maior número de pools de conexão de tenants mantidos ao mesmo tempo. | `100` |
| `MULTI_TENANT_IDLE_TIMEOUT_SEC` | Segundos em que um pool de tenant fica ocioso antes de o Lender fechá-lo. | `300` |
| `MULTI_TENANT_TIMEOUT` | Segundos que o Lender espera pelo serviço de resolução de tenants. | `30` |
| `MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLD` | Falhas que abrem o circuito para o serviço de resolução de tenants. | `5` |
| `MULTI_TENANT_CIRCUIT_BREAKER_TIMEOUT_SEC` | Segundos em que o circuito fica aberto. | `30` |
| `MULTI_TENANT_SERVICE_API_KEY` | Chave de API que o Lender envia ao serviço de resolução de tenants. Sensível. | — |
| `MULTI_TENANT_CACHE_TTL_SEC` | Segundos em que a configuração de um tenant fica em cache. | `120` |
| `MULTI_TENANT_CONNECTIONS_CHECK_INTERVAL_SEC` | Segundos entre as verificações das conexões de tenants. | `30` |

## PostgreSQL

| Variável | Descrição | Padrão |
| - | - | - |
| `DATABASE_URL` | URL de conexão PostgreSQL obrigatória para `/migrate`. Sensível. | — |
| `POSTGRES_HOST` | Host do banco primário. | `localhost` |
| `POSTGRES_PORT` | Porta do banco primário. | `5432` |
| `POSTGRES_USER` | Usuário do banco primário. | `lender` |
| `POSTGRES_PASSWORD` | Senha do banco primário. Sensível. | — |
| `POSTGRES_NAME` | Nome do banco primário. | `lender` |
| `POSTGRES_SSLMODE` | Modo SSL da conexão primária. | `disable` |
| `POSTGRES_REPLICA_HOST` | Host do banco réplica. Defina as variáveis da réplica para ler de uma réplica. | — |
| `POSTGRES_REPLICA_PORT` | Porta do banco réplica. | — |
| `POSTGRES_REPLICA_USER` | Usuário do banco réplica. | — |
| `POSTGRES_REPLICA_PASSWORD` | Senha do banco réplica. Sensível. | — |
| `POSTGRES_REPLICA_NAME` | Nome do banco réplica. | — |
| `POSTGRES_REPLICA_SSLMODE` | Modo SSL da conexão da réplica. | — |
| `POSTGRES_MAX_OPEN_CONNS` | Maior número de conexões abertas. | `25` |
| `POSTGRES_MAX_IDLE_CONNS` | Maior número de conexões ociosas mantidas. | `5` |
| `POSTGRES_CONN_MAX_LIFETIME_MINS` | Minutos de vida de uma conexão antes de o Lender substituí-la. | `30` |
| `POSTGRES_CONN_MAX_IDLE_TIME_MINS` | Minutos em que uma conexão pode ficar ociosa. | `5` |
| `POSTGRES_CONNECT_TIMEOUT_SEC` | Segundos de espera por uma nova conexão. | `10` |

## Valkey

| Variável | Descrição | Padrão |
| - | - | - |
| `REDIS_HOST` | Endereço do Valkey, `host:port`. | `localhost:6379` |
| `REDIS_MASTER_NAME` | Nome do master quando o Valkey roda atrás do Sentinel. | — |
| `REDIS_PASSWORD` | Senha do Valkey. Sensível. | — |
| `REDIS_DB` | Número do banco do Valkey. | `0` |
| `REDIS_PROTOCOL` | Versão do protocolo do Valkey. | `3` |
| `REDIS_TLS` | Conecta ao Valkey por TLS. | `false` |
| `REDIS_CA_CERT` | Certificado de CA da conexão TLS com o Valkey. | — |
| `REDIS_POOL_SIZE` | Tamanho do pool de conexões do Valkey. | `10` |
| `REDIS_MIN_IDLE_CONNS` | Menor número de conexões ociosas do Valkey mantidas. | `2` |
| `REDIS_READ_TIMEOUT` | Timeout de leitura do Valkey, em segundos. | `3` |
| `REDIS_WRITE_TIMEOUT` | Timeout de escrita do Valkey, em segundos. | `3` |
| `REDIS_DIAL_TIMEOUT` | Timeout de conexão do Valkey, em segundos. | `5` |
| `REDIS_POOL_TIMEOUT` | Segundos de espera por uma conexão livre do Valkey. | `2` |
| `REDIS_MAX_RETRIES` | Novas tentativas de um comando do Valkey que falhou. | `3` |
| `REDIS_MIN_RETRY_BACKOFF` | Menor espera entre novas tentativas no Valkey. | `8` |
| `REDIS_MAX_RETRY_BACKOFF` | Maior espera entre novas tentativas no Valkey. | `1` |

## Autenticação e credenciais de máquina

| Variável | Descrição | Padrão |
| - | - | - |
| `PLUGIN_AUTH_ENABLED` | Liga a autorização de rotas. A produção a exige. | `true` |
| `PLUGIN_AUTH_HOST` | Endereço do provedor de identidade por trás do Access Manager. | — |
| `AUTH_M2M_INVERSION_ENABLED` | Liga o gate de inversão machine-to-machine que os deploys BYOC exigem. | `false` |
| `M2M_TARGET_SERVICE` | Nome da aplicação do serviço cuja credencial de máquina o Lender solicita. | — |
| `M2M_ADDITIONAL_TARGET_SERVICES` | Outros nomes de aplicação cujas credenciais de máquina o Lender solicita, separados por vírgula. | — |
| `M2M_CREDENTIAL_CACHE_TTL_SEC` | Segundos em que o Lender guarda uma credencial de máquina em cache. | `300` |
| `M2M_SECRETS_BACKEND` | Onde o Lender guarda as credenciais de máquina do ledger no seu próprio deploy. | — |
| `M2M_VAULT_MOUNT` | Mount key-value do vault que guarda as credenciais. | — |
| `AWS_REGION` | Região do backend de segredos. | `us-east-1` |

## Midaz

| Variável | Descrição | Padrão |
| - | - | - |
| `MIDAZ_LEDGER_BASE_URL` | Endereço do ledger do Midaz. | — |
| `MIDAZ_LEDGER_ORGANIZATION_ID` | Organização padrão do Midaz para os lançamentos. | — |
| `MIDAZ_LEDGER_ID` | ledger padrão do Midaz para os lançamentos. | — |
| `MIDAZ_OAUTH_TOKEN_URL` | Onde o Lender obtém as credenciais do Midaz. | — |
| `MIDAZ_LEDGER_ACCOUNT_PROVISIONING_ENABLED` | Antes de um lançamento, o Lender adota ou cria o ativo do ledger, os tipos de conta e as contas que o perfil contábil nomeia. Desligue apenas quando você provisiona o ledger antes. | `true` |
| `MIDAZ_LEDGER_IDEMPOTENCY_TTL_SEC` | Segundos em que o Midaz mantém o slot de idempotência de um lançamento. Defina um valor apenas para aumentar: um valor positivo abaixo do horizonte de novas tentativas impede o início. | `0` |

## Matcher e Reporter

| Variável | Descrição | Padrão |
| - | - | - |
| `MATCHER_ENABLED` | Liga a conexão com o Matcher. | `false` |
| `MATCHER_BASE_URL` | Endereço do Matcher. | — |
| `MATCHER_OAUTH_TOKEN_URL` | Onde o Lender obtém as credenciais do Matcher. | — |
| `MATCHER_M2M_TARGET` | Nome da aplicação do Matcher no Access Manager. | `matcher` |
| `REPORTER_BASE_URL` | Endereço do Reporter. A geração do arquivo de oferta das cessões o usa. | — |
| `REPORTER_OFFER_DATASOURCE` | Nome da fonte de dados do Reporter que guarda os dados da oferta. | — |
| `REPORTER_M2M_TARGET` | Nome da aplicação do Reporter no Access Manager. | `reporter` |
| `REPORTER_TIMEOUT_SEC` | Segundos que o Lender espera pelo Reporter. | `120` |

## Streaming de eventos

| Variável | Descrição | Padrão |
| - | - | - |
| `STREAMING_ENABLED` | Liga o backbone de eventos. A inicialização exige `true`. | `false` |
| `STREAMING_BROKERS` | Endereços dos brokers compatíveis com Kafka, separados por vírgula. A inicialização exige ao menos um. | — |
| `STREAMING_CLOUDEVENTS_SOURCE` | Source CloudEvents de todo evento que o Lender publica. Defina `lender`. | — |
| `STREAMING_TLS_ENABLED` | Conecta aos brokers por TLS. | `false` |
| `STREAMING_TLS_SERVER_NAME` | Nome de servidor que o certificado do broker deve ter. | — |
| `STREAMING_TLS_CA_CERT` | Certificado de CA PEM em base64 para confiança em brokers privados. Base64 inválido ou conteúdo que não seja PEM impede o início. | — |
| `STREAMING_SASL_MECHANISM` | Mecanismo SASL dos brokers. | — |
| `STREAMING_SASL_USERNAME` | Nome de usuário SASL. | — |
| `STREAMING_SASL_PASSWORD` | Senha SASL. Sensível. | — |

## Outbox

| Variável | Descrição | Padrão |
| - | - | - |
| `OUTBOX_TABLE_NAME` | Nome da tabela do outbox. | `outbox_events` |
| `OUTBOX_DISPATCH_INTERVAL_SEC` | Segundos entre as execuções do despachante do outbox transacional. | `2` |
| `OUTBOX_BATCH_SIZE` | Itens tomados em uma execução. | `50` |
| `OUTBOX_PUBLISH_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `3` |
| `OUTBOX_PUBLISH_BACKOFF_MS` | Milissegundos entre as tentativas de publicar um evento. | `200` |
| `OUTBOX_RETRY_WINDOW_SEC` | Segundos da janela de nova tentativa do outbox. | `300` |
| `OUTBOX_MAX_DISPATCH_ATTEMPTS` | Maior número de tentativas de despacho de um evento. | `10` |
| `OUTBOX_PROCESSING_TIMEOUT_SEC` | Segundos que um evento pode ficar em processamento. | `600` |
| `OUTBOX_MAX_FAILED_PER_BATCH` | Limite de eventos com falha por lote. | `25` |
| `OUTBOX_INCLUDE_TENANT_METRICS` | Inclui o tenant nas métricas do outbox. | `false` |
| `OUTBOX_ALLOW_EMPTY_TENANT` | Permite que o outbox despache eventos sem tenant. | `true` |

## RabbitMQ

| Variável | Descrição | Padrão |
| - | - | - |
| `RABBITMQ_ENABLED` | Liga o caminho separado do RabbitMQ. Ele não é o transporte do catálogo de eventos. | `false` |
| `RABBITMQ_URL` | URL de conexão do RabbitMQ. Sensível. | — |
| `RABBITMQ_HOST` | Host do RabbitMQ. | `localhost` |
| `RABBITMQ_PORT_AMQP` | Porta AMQP do RabbitMQ. | `5672` |
| `RABBITMQ_PORT_HOST` | Porta de gerenciamento do RabbitMQ. | `15672` |
| `RABBITMQ_DEFAULT_USER` | Usuário do RabbitMQ. | `guest` |
| `RABBITMQ_DEFAULT_PASS` | Senha do RabbitMQ. Sensível. | `guest` |
| `RABBITMQ_VHOST` | Virtual host do RabbitMQ. | `/` |
| `RABBITMQ_QUEUE` | Nome da fila do RabbitMQ. | — |
| `RABBITMQ_EXCHANGE` | Nome do exchange do RabbitMQ. | `events` |
| `RABBITMQ_HEALTH_CHECK_URL` | URL de verificação de saúde do RabbitMQ. | — |
| `RABBITMQ_HEALTH_CHECK_ALLOWED_HOSTS` | Hosts que a verificação de saúde pode chamar, separados por vírgula. | — |
| `RABBITMQ_REQUIRE_HEALTH_ALLOWED_HOSTS` | Exige que `RABBITMQ_HEALTH_CHECK_ALLOWED_HOSTS` esteja definida. | `false` |
| `RABBITMQ_ALLOW_INSECURE_HEALTH_CHECK` | Permite a verificação de saúde por HTTP simples. | `false` |
| `RABBITMQ_ALLOW_INSECURE_TLS` | Ignora a verificação de certificado TLS do RabbitMQ. | `false` |
| `RABBITMQ_PUBLISHER_CONFIRM_TIMEOUT_MS` | Milissegundos de espera pela confirmação de uma publicação. | `5000` |
| `RABBITMQ_PUBLISHER_RECOVERY_INITIAL_MS` | Milissegundos antes da primeira tentativa de recuperação do publicador. | `1000` |
| `RABBITMQ_PUBLISHER_RECOVERY_MAX_MS` | Maior espera, em milissegundos, entre tentativas de recuperação. | `30000` |
| `RABBITMQ_PUBLISHER_MAX_RECOVERIES` | Maior número de tentativas de recuperação. | `10` |

## Idempotência, limites e paginação

| Variável | Descrição | Padrão |
| - | - | - |
| `IDEMPOTENCY_RETRY_WINDOW_SEC` | Segundos em que uma resposta de idempotência guardada continua reproduzível. | `86400` |
| `IDEMPOTENCY_PROCESSING_LEASE_SEC` | Segundos em que uma chave de idempotência em andamento continua retida. | `900` |
| `RATE_LIMIT_ENABLED` | Limite de taxa de requisições. Sempre ligado quando `ENV_NAME=production`. | `true` |
| `RATE_LIMIT_MAX` | Requisições permitidas por janela no limite padrão. | `500` |
| `RATE_LIMIT_WINDOW_SEC` | Janela do limite padrão, em segundos. | `60` |
| `AGGRESSIVE_RATE_LIMIT_MAX` | Requisições permitidas por janela no limite estrito. | `100` |
| `AGGRESSIVE_RATE_LIMIT_WINDOW_SEC` | Janela do limite estrito, em segundos. | `60` |
| `RELAXED_RATE_LIMIT_MAX` | Requisições permitidas por janela no limite relaxado. | `1000` |
| `RELAXED_RATE_LIMIT_WINDOW_SEC` | Janela do limite relaxado, em segundos. | `60` |
| `INFRA_CONNECT_TIMEOUT_SEC` | Segundos de espera por uma conexão de infraestrutura na inicialização. | `30` |
| `CIRCUIT_BREAKER_ENABLED` | Liga o circuit breaker de saída. | `false` |
| `MAX_PAGINATION_LIMIT` | Maior `limit` que uma operação de listagem aceita. | `100` |
| `MAX_PAGINATION_MONTH_DATE_RANGE` | Maior intervalo de datas, em meses, que uma operação de listagem aceita. | `3` |

## Telemetria

| Variável | Descrição | Padrão |
| - | - | - |
| `ENABLE_TELEMETRY` | Liga a telemetria. | `false` |
| `OTEL_RESOURCE_SERVICE_NAME` | Nome do serviço em traces e métricas. | `lender` |
| `OTEL_LIBRARY_NAME` | Nome da biblioteca de instrumentação na telemetria. | — |
| `OTEL_RESOURCE_DEPLOYMENT_ENVIRONMENT` | Rótulo de ambiente na telemetria. | `development` |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint do coletor OTLP. | `localhost:4317` |
| `DB_METRICS_INTERVAL_SEC` | Segundos entre as amostras de métricas do banco. | `15` |

## Cobrança e listeners de webhook

| Variável | Descrição | Padrão |
| - | - | - |
| `COLLECTION_ENABLED` | Liga o canal de cobrança. | `false` |
| `COLLECTION_PROVIDER` | Provedor de cobrança. | — |
| `COLLECTION_PROVIDER_ACCOUNT_ID` | Identificador da conta no provedor. | — |
| `COLLECTION_WEBHOOK_ENABLED` | Liga o listener de webhook de cobrança. Ele serve o próprio `/readyz`. | `false` |
| `COLLECTION_WEBHOOK_ADDRESS` | Endereço de escuta do listener de webhook de cobrança. | `:9081` |
| `COLLECTION_WEBHOOK_BODY_LIMIT_BYTES` | Maior corpo de webhook, em bytes. | `1048576` |
| `COLLECTION_WEBHOOK_MAX_SKEW_SEC` | Maior diferença de relógio, em segundos, que um webhook assinado pode ter. | `300` |
| `COLLECTION_WEBHOOK_TLS_CERT_FILE` | Caminho do certificado TLS do listener. | — |
| `COLLECTION_WEBHOOK_TLS_KEY_FILE` | Caminho da chave privada TLS do listener. | — |
| `COLLECTION_WEBHOOK_UPSTREAM_TLS_TERMINATION_VALIDATED` | Confirma que um proxy na frente do listener termina o TLS. | `false` |
| `HUB_WEBHOOK_ENABLED` | Liga o listener de webhook do Streaming Hub. Ele serve o próprio `/readyz`. | `false` |
| `HUB_WEBHOOK_ADDRESS` | Endereço de escuta do listener de webhook do Streaming Hub. | `:9082` |
| `HUB_WEBHOOK_BODY_LIMIT_BYTES` | Maior corpo de webhook, em bytes. | `1048576` |
| `HUB_WEBHOOK_MAX_SKEW_SEC` | Maior diferença de relógio, em segundos, que um webhook assinado pode ter. | `300` |
| `HUB_WEBHOOK_SECRET_ENV_PREFIX` | Prefixo das variáveis de segredo de webhook por tenant. | `HUB_WEBHOOK_SECRET__` |
| `HUB_WEBHOOK_TLS_CERT_FILE` | Caminho do certificado TLS do listener. | — |
| `HUB_WEBHOOK_TLS_KEY_FILE` | Caminho da chave privada TLS do listener. | — |
| `HUB_WEBHOOK_UPSTREAM_TLS_TERMINATION_VALIDATED` | Confirma que um proxy na frente do listener termina o TLS. | `false` |

## Consignado: gateway, armazenamento e consumidores

| Variável | Descrição | Padrão |
| - | - | - |
| `CONSIGNADO_ENABLED` | Controla o tratamento de entrada de `consignado.averbacao.rejected`. Ao desligar, mantenha `CONSUMER_CONSIGNADO_AVERBACAO_REJECTED_ENABLED` desligada também: a inicialização rejeita essa contradição. | `true` |
| `CONSIGNADO_GATEWAY_BASE_URL` | Endereço do gateway de Consignado. | — |
| `CONSIGNADO_GATEWAY_OAUTH_TOKEN_URL` | Onde o Lender obtém as credenciais do gateway. | — |
| `CONSIGNADO_GATEWAY_M2M_TARGET` | Nome do gateway no catálogo do Access Manager. | — |
| `CONSIGNADO_GATEWAY_TIMEOUT_SEC` | Segundos que o Lender espera pelo gateway. | `15` |
| `CONSIGNADO_PAYOFF_QUOTE_VALIDITY_HOURS` | Horas em que uma cotação de quitação continua válida. Uma versão de produto pode definir o próprio valor. Um valor não positivo volta para 24. | `24` |
| `ADJUSTMENT_EVIDENCE_S3_BUCKET` | Bucket de armazenamento de objetos das evidências de ajuste compensatório. | — |
| `ADJUSTMENT_EVIDENCE_S3_ENDPOINT` | Endpoint desse armazenamento de objetos. | — |
| `ADJUSTMENT_EVIDENCE_S3_FORCE_PATH_STYLE` | Usa endereçamento em estilo de caminho. | `false` |
| `ADJUSTMENT_EVIDENCE_S3_REGION` | Região desse armazenamento de objetos. | `us-east-1` |
| `ISSUANCE_CUSTODY_S3_BUCKET` | Bucket de armazenamento de objetos da custódia de instrumentos de crédito. | — |
| `ISSUANCE_CUSTODY_S3_ENDPOINT` | Endpoint desse armazenamento de objetos. | — |
| `ISSUANCE_CUSTODY_S3_FORCE_PATH_STYLE` | Usa endereçamento em estilo de caminho. | `false` |
| `ISSUANCE_CUSTODY_S3_REGION` | Região desse armazenamento de objetos. | `us-east-1` |
| `CONSUMER_CONSIGNADO_AVERBACAO_REJECTED_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_EMPLOYMENT_STATUS_REPORTED_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_CONTRACT_REGISTERED_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_DISBURSEMENT_CONFIRMED_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_CONTRACT_CORRECTION_AVAILABLE_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_DISBURSEMENT_CORRECTION_AVAILABLE_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_RECONCILIATION_RECEIVED_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_MATCH_RUN_COMPLETED_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_PORTABILITY_OUTCOME_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_REFINANCE_OUTCOME_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_RENEGOCIACAO_OUTCOME_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |
| `CONSUMER_CONSIGNADO_MIGRACAO_OUTCOME_ENABLED` | Liga o consumidor de entrada. Desligado por padrão. | `false` |

## Consignado: drenadores e relays

| Variável | Descrição | Padrão |
| - | - | - |
| `CONSIGNADO_EXCLUSION_LOCAL_BATCH_SIZE` | Itens tomados em uma execução. | `50` |
| `CONSIGNADO_EXCLUSION_LOCAL_TENANT_CONCURRENCY` | Tenants trabalhados ao mesmo tempo. | `4` |
| `CONSIGNADO_EXCLUSION_LOCAL_LEASE_SECONDS` | Segundos que um worker mantém um item reivindicado. | `30` |
| `CONSIGNADO_EXCLUSION_LOCAL_BACKOFF_BASE_SECONDS` | Base do backoff de nova tentativa, em segundos. | `1` |
| `CONSIGNADO_EXCLUSION_LOCAL_BACKOFF_MAX_SECONDS` | Maior backoff de nova tentativa, em segundos. | `300` |
| `CONSIGNADO_EXCLUSION_LOCAL_POLL_INTERVAL_MS` | Milissegundos entre as consultas. | `1000` |
| `CONSIGNADO_CONTRACT_REGISTRATION_DRAINER_ENABLED` | Liga ou desliga o drenador. | `false` |
| `CONSIGNADO_CONTRACT_REGISTRATION_BATCH_SIZE` | Itens tomados em uma execução. | `1` |
| `CONSIGNADO_CONTRACT_REGISTRATION_LEASE_SECONDS` | Segundos que um worker mantém um item reivindicado. | `180` |
| `CONSIGNADO_CONTRACT_REGISTRATION_RETRY_DELAY_SECONDS` | Segundos antes da primeira nova tentativa de um item. | `30` |
| `CONSIGNADO_CONTRACT_REGISTRATION_RETRY_CEILING_SECONDS` | Maior espera, em segundos, entre duas tentativas. | `900` |
| `CONSIGNADO_CONTRACT_REGISTRATION_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `8` |
| `CONSIGNADO_CONTRACT_REGISTRATION_STUCK_AFTER_SECONDS` | Segundos após os quais um item ainda em andamento conta como preso. | `900` |
| `CONSIGNADO_CONTRACT_REGISTRATION_DRAIN_SCHEDULE` | Agenda cron do job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_DRAINER_ENABLED` | Liga ou desliga o drenador. | `false` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_DRAIN_SCHEDULE` | Agenda cron do job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_BATCH_SIZE` | Itens tomados em uma execução. | `1` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_LEASE_SECONDS` | Segundos que um worker mantém um item reivindicado. | `60` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_RETRY_DELAY_SECONDS` | Segundos antes da primeira nova tentativa de um item. | `30` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_RETRY_CEILING_SECONDS` | Maior espera, em segundos, entre duas tentativas. | `900` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `8` |
| `CONSIGNADO_DISBURSEMENT_CONFIRMATION_STUCK_AFTER_SECONDS` | Segundos após os quais um item ainda em andamento conta como preso. | `900` |
| `CONSIGNADO_CONTRACT_CORRECTION_DRAINER_ENABLED` | Liga ou desliga o drenador. | `false` |
| `CONSIGNADO_CONTRACT_CORRECTION_BATCH_SIZE` | Itens tomados em uma execução. | `1` |
| `CONSIGNADO_CONTRACT_CORRECTION_LEASE_SECONDS` | Segundos que um worker mantém um item reivindicado. | `60` |
| `CONSIGNADO_CONTRACT_CORRECTION_RETRY_DELAY_SECONDS` | Segundos antes da primeira nova tentativa de um item. | `30` |
| `CONSIGNADO_CONTRACT_CORRECTION_RETRY_CEILING_SECONDS` | Maior espera, em segundos, entre duas tentativas. | `900` |
| `CONSIGNADO_CONTRACT_CORRECTION_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `8` |
| `CONSIGNADO_CONTRACT_CORRECTION_STUCK_AFTER_SECONDS` | Segundos após os quais um item ainda em andamento conta como preso. | `900` |
| `CONSIGNADO_CONTRACT_CORRECTION_DRAIN_SCHEDULE` | Agenda cron do job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RELAY_ENABLED` | Liga ou desliga o relay. | `false` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RELAY_SCHEDULE` | Agenda cron do job. | `*/1 * * * *` |
| `CONSIGNADO_DISBURSEMENT_POSTING_BATCH_SIZE` | Itens tomados em uma execução. | `1` |
| `CONSIGNADO_DISBURSEMENT_POSTING_LEASE_SECONDS` | Segundos que um worker mantém um item reivindicado. | `60` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RETRY_DELAY_SECONDS` | Segundos antes da primeira nova tentativa de um item. | `30` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RETRY_CEILING_SECONDS` | Maior espera, em segundos, entre duas tentativas. | `900` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECONCILIATION_ENABLED` | Liga ou desliga a execução de conciliação. | `false` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECONCILIATION_SCHEDULE` | Agenda cron do job. | `*/2 * * * *` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECHECK_DELAY_SECONDS` | Segundos antes da primeira nova verificação de um item. | `60` |
| `CONSIGNADO_DISBURSEMENT_POSTING_RECHECK_CEILING_SECONDS` | Maior espera, em segundos, entre duas novas verificações. | `3600` |

## Jobs agendados

| Variável | Descrição | Padrão |
| - | - | - |
| `JOBS_PORTFOLIO_SNAPSHOT_ENABLED` | Grava o snapshot da carteira que os painéis leem. | `false` |
| `JOBS_PORTFOLIO_SNAPSHOT_SCHEDULE` | Agenda cron do job. | `0 4 * * *` |
| `JOBS_PDD_PROMOTION_ENABLED` | Liga ou desliga a promoção diária de estágio de perda de crédito. | `true` |
| `JOBS_PDD_PROMOTION_SCHEDULE` | Agenda cron do job. | `0 5 * * *` |
| `JOBS_ACCRUAL_HEARTBEAT_ENABLED` | Liga ou desliga o heartbeat de apropriação. | `true` |
| `JOBS_ACCRUAL_HEARTBEAT_SCHEDULE` | Agenda cron do job. | `0 6 * * *` |
| `JOBS_PROVISION_MEASUREMENT_ENABLED` | Liga ou desliga a medição diária de provisão. | `true` |
| `JOBS_PROVISION_MEASUREMENT_SCHEDULE` | Agenda cron do job. | `0 7 * * *` |
| `JOBS_COLLECTION_RECONCILIATION_ENABLED` | Liga ou desliga o job agendado. | `false` |
| `JOBS_COLLECTION_RECONCILIATION_SCHEDULE` | Agenda cron do job. | `*/5 * * * *` |
| `JOBS_COLLECTION_RECONCILIATION_BATCH_SIZE` | Itens tomados em uma execução. | `100` |
| `JOBS_COLLECTION_RECONCILIATION_LEASE_SEC` | Segundos que um worker mantém um item reivindicado. | `60` |
| `JOBS_COLLECTION_RECONCILIATION_BACKOFF_BASE_SEC` | Base do backoff de nova tentativa, em segundos. | `30` |
| `JOBS_COLLECTION_RECONCILIATION_BACKOFF_MAX_SEC` | Maior backoff de nova tentativa, em segundos. | `3600` |
| `JOBS_COLLECTION_AGENT_CHANNEL_SWEEP_ENABLED` | Liga ou desliga o job agendado. | `true` |
| `JOBS_COLLECTION_AGENT_CHANNEL_SWEEP_SCHEDULE` | Agenda cron do job. | `*/10 * * * *` |
| `JOBS_COLLECTION_AGENT_CHANNEL_SWEEP_LIMIT` | Tenants lidos por execução. | `200` |
| `JOBS_COLLECTION_SETTLEMENT_BATCH_SIZE` | Itens de liquidação tomados em uma execução. | `50` |
| `JOBS_COLLECTION_SETTLEMENT_LEASE_SEC` | Segundos que um worker mantém um item reivindicado. | `120` |
| `JOBS_COLLECTION_SETTLEMENT_RETRY_DELAY_SEC` | Segundos antes da primeira nova tentativa de um item. | `60` |
| `JOBS_COLLECTION_SETTLEMENT_RETRY_CEILING_SEC` | Maior espera, em segundos, entre duas tentativas. | `3600` |
| `JOBS_COLLECTION_SETTLEMENT_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `5` |
| `JOBS_REGISTRATION_INVENTORY_ENABLED` | Liga ou desliga o job agendado. | `false` |
| `JOBS_REGISTRATION_INVENTORY_SCHEDULE` | Agenda cron do job. | `*/15 * * * *` |
| `JOBS_REGISTRATION_INVENTORY_PAGE_SIZE` | Linhas lidas por página. | `100` |
| `JOBS_REGISTRATION_INVENTORY_GRACE_SEC` | Segundos que um item pode esperar antes de o inventário reportá-lo. | `7200` |
| `JOBS_INSTRUMENT_CUSTODY_SWEEP_ENABLED` | Liga ou desliga o job agendado. | `false` |
| `JOBS_INSTRUMENT_CUSTODY_SWEEP_SCHEDULE` | Agenda cron do job. | `*/15 * * * *` |
| `JOBS_ASSIGNMENT_LIFECYCLE_SWEEP_ENABLED` | Liga ou desliga o job agendado. | `true` |
| `JOBS_ASSIGNMENT_LIFECYCLE_SWEEP_SCHEDULE` | Agenda cron do job. | `*/10 * * * *` |
| `JOBS_ASSIGNMENT_LIFECYCLE_SWEEP_LIMIT` | Itens lidos por execução. | `500` |
| `JOBS_PORTABILITY_DRAIN_ENABLED` | Liga ou desliga o job agendado. | `true` |
| `JOBS_PORTABILITY_DRAIN_SCHEDULE` | Agenda cron do job. | `*/10 * * * *` |
| `JOBS_PORTABILITY_DRAIN_BATCH_SIZE` | Itens tomados em uma execução. | `50` |
| `JOBS_PORTABILITY_DRAIN_LEASE_SEC` | Segundos que um worker mantém um item reivindicado. | `120` |
| `JOBS_PORTABILITY_DRAIN_RETRY_DELAY_SEC` | Segundos antes da primeira nova tentativa de um item. | `60` |
| `JOBS_PORTABILITY_DRAIN_RETRY_CEILING_SEC` | Maior espera, em segundos, entre duas tentativas. | `3600` |
| `JOBS_PORTABILITY_DRAIN_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `5` |
| `JOBS_PORTABILITY_DIVERGENCE_GRACE_HOURS` | Horas que uma portabilidade pode esperar antes de a varredura reportar divergência. | `48` |
| `JOBS_PORTABILITY_DIVERGENCE_PAGE_SIZE` | Linhas lidas por página. | `100` |
| `JOBS_PORTABILITY_REFUND_ENABLED` | Liga ou desliga o job agendado. | `false` |
| `JOBS_PORTABILITY_REFUND_PAGE_SIZE` | Linhas lidas por página. | `100` |
| `JOBS_REFINANCE_DRAIN_ENABLED` | Liga ou desliga o job agendado. | `true` |
| `JOBS_REFINANCE_DRAIN_SCHEDULE` | Agenda cron do job. | `*/10 * * * *` |
| `JOBS_REFINANCE_DRAIN_BATCH_SIZE` | Itens tomados em uma execução. | `25` |
| `JOBS_REFINANCE_DRAIN_LEASE_SEC` | Segundos que um worker mantém um item reivindicado. | `300` |
| `JOBS_REFINANCE_DRAIN_RETRY_DELAY_SEC` | Segundos antes da primeira nova tentativa de um item. | `120` |
| `JOBS_REFINANCE_DRAIN_RETRY_CEILING_SEC` | Maior espera, em segundos, entre duas tentativas. | `7200` |
| `JOBS_REFINANCE_DRAIN_MAX_ATTEMPTS` | Maior número de tentativas para um item. | `10` |
| `JOBS_REFINANCE_DRAIN_WAIT_MAX_AGE_HOURS` | Horas que um item pode esperar pelo fato correspondente. | `336` |
| `JOBS_REFINANCE_REVERSAL_WINDOW_BUSINESS_DAYS` | Dias úteis em que um refinanciamento ainda pode ser revertido. | `7` |
| `JOBS_REFINANCE_DIVERGENCE_GRACE_HOURS` | Horas que um refinanciamento pode esperar antes de a varredura reportar divergência. | `48` |
| `JOBS_REFINANCE_DIVERGENCE_PAGE_SIZE` | Linhas lidas por página. | `100` |
| `JOBS_DAILY_INDEX_SYNC_ENABLED` | Liga ou desliga o job agendado. | `true` |
| `JOBS_DAILY_INDEX_SYNC_SCHEDULE` | Agenda cron do job. | `0 12,23 * * *` |
| `JOBS_DAILY_INDEX_SYNC_HISTORY_START` | Primeira data que a sincronização carrega, `YYYY-MM-DD`. | `2026-01-01` |
| `JOBS_UNAPPLIED_CASH_SETTLEMENT_ENABLED` | Quita parcelas vencidas com o dinheiro retido não aplicado. Desligado, uma parcela que o dinheiro retido cobre entra em atraso. | `true` |
| `JOBS_UNAPPLIED_CASH_SETTLEMENT_SCHEDULE` | Agenda cron do job. | `30 3 * * *` |
| `JOBS_WRITE_OFF_CONTROL_EXIT_ENABLED` | Liga ou desliga a saída noturna de contratos baixados do controle. | `true` |
| `JOBS_WRITE_OFF_CONTROL_EXIT_SCHEDULE` | Agenda cron do job. | `45 3 * * *` |
| `BCB_SGS_BASE_URL` | Endereço do serviço de séries do Banco Central de onde o Lender lê as taxas diárias de índice. O Lender precisa de acesso de saída a ele. | `https://api.bcb.gov.br` |


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