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

> Variables de entorno de despliegue para el rail de boleto y pago de cuentas, vía BTG: integración con BTG, cifrado de credenciales y rotación de claves, vínculo con el ledger Midaz, reconciliación y despacho de webhooks.

El rail de boleto y pago de cuentas emite boletos y liquida pagos de cuentas e impuestos (DARF) a través de BTG. Su comportamiento se configura mediante variables de entorno que DevOps define en el momento del despliegue; cambiar una requiere reiniciar el servicio. Esta página cubre las variables **distintivas de este rail**; para los ajustes de almacén de datos, multi-tenancy, telemetría y autenticación compartidos por todos los servicios Go de Lerian, consulta la [referencia de configuración BYOC](/es/reference/byoc-configuration).

<Note>
  En las tablas siguientes, la columna **Valor por defecto / Requerida** muestra el valor por defecto; un calificador en negrita (por ejemplo **Requerida**) marca las variables que debes definir. `—` significa que no hay valor por defecto. `🔒` marca un **secreto**: inyéctalo en el momento del despliegue desde tu almacén de secretos y nunca lo guardes en el repositorio. Esta página solo enumera los nombres de las variables y su comportamiento; no imprime ningún valor secreto.
</Note>

<Note>
  Este rail **no** monta la API de administración de systemplane. Usa la forma de almacén de datos compartida `POSTGRES_*`; consulta [Almacenes de datos](/es/reference/byoc-configuration#almacenes-de-datos).
</Note>

## Servidor y puerto

El servicio escucha en la dirección de `SERVER_ADDRESS` (por defecto `:8080`). Las sondas de liveness, readiness y versión se enlazan a este mismo puerto. La multi-tenancy se activa con `MULTI_TENANCY_ENABLED` (fíjate en la grafía `MULTI_TENANCY_`; la conexión al Tenant Manager usa las variables compartidas `MULTI_TENANT_*`). Consulta [Multi-tenancy](/es/reference/byoc-configuration#multi-tenancy) y [Puertos de red predeterminados](/es/reference/default-network-ports).

## Integración con BTG

Endpoints y credenciales para la conexión con BTG, más los intervalos de refresco en segundo plano del token de acceso de BTG y de las credenciales sincronizadas.

| Variable                       | Valor por defecto / Requerida | Descripción                                                              |
| ------------------------------ | ----------------------------- | ------------------------------------------------------------------------ |
| `BTG_API_BASE_URL`             | **Requerida**                 | URL base de la API de BTG.                                               |
| `BTG_AUTH_URL`                 | **Requerida**                 | Endpoint del token OAuth de BTG.                                         |
| `BTG_CLIENT_ID`                | **Requerida**                 | Client ID de OAuth para la API de BTG.                                   |
| `BTG_CLIENT_SECRET`            | 🔒 **Requerida**              | Client secret de OAuth para la API de BTG.                               |
| `BTG_WEBHOOK_SECRET`           | 🔒 **Requerida**              | Secreto usado para validar las firmas de los webhooks entrantes de BTG.  |
| `BTG_HTTP_TIMEOUT`             | `30s`                         | Tiempo de espera para las llamadas a la API de BTG.                      |
| `BTG_TOKEN_REFRESH_INTERVAL`   | `1h`                          | Con qué frecuencia se refresca el token de acceso de BTG.                |
| `BTG_CREDENTIAL_SYNC_INTERVAL` | `20h`                         | Con qué frecuencia se resincronizan las credenciales de BTG almacenadas. |

## Cifrado de credenciales y claves de API internas

El rail cifra las credenciales almacenadas en reposo y autentica las llamadas internas (worker a API) con una clave de API. Ambas admiten un slot `_PREVIOUS` para que puedas rotar el valor activo sin downtime.

| Variable                             | Valor por defecto / Requerida | Descripción                                                       |
| ------------------------------------ | ----------------------------- | ----------------------------------------------------------------- |
| `CREDENTIAL_ENCRYPTION_KEY`          | 🔒 **Requerida**              | Clave usada para cifrar las credenciales almacenadas en reposo.   |
| `CREDENTIAL_ENCRYPTION_KEY_PREVIOUS` | 🔒 —                          | Clave de cifrado anterior, mantenida legible durante la rotación. |
| `INTERNAL_API_KEY`                   | 🔒 **Requerida**              | Clave de API que autentica las llamadas internas worker a API.    |
| `INTERNAL_API_KEY_PREVIOUS`          | 🔒 —                          | Clave de API interna anterior, aceptada durante la rotación.      |
| `INTERNAL_WORKER_URL`                | **Requerida**                 | URL que la API usa para alcanzar el worker interno.               |

## Vínculo con el ledger Midaz

| Variable                    | Valor por defecto / Requerida | Descripción                                                                         |
| --------------------------- | ----------------------------- | ----------------------------------------------------------------------------------- |
| `MIDAZ_LEDGER_URL`          | **Requerida**                 | URL del servicio del ledger Midaz.                                                  |
| `MIDAZ_DEFAULT_ORG_ID`      | **Requerida**                 | UUID de organización Midaz por defecto para las contabilizaciones.                  |
| `MIDAZ_DEFAULT_LEDGER_ID`   | **Requerida**                 | UUID del ledger Midaz por defecto para las contabilizaciones.                       |
| `MIDAZ_ALLOW_INSECURE_HTTP` | `false`                       | Permite una URL de Midaz `http://` en texto claro. Déjala en `false` en producción. |

## Reconciliación

| Variable                               | Valor por defecto / Requerida | Descripción                                               |
| -------------------------------------- | ----------------------------- | --------------------------------------------------------- |
| `RECONCILIATION_INTERVAL`              | `5m`                          | Con qué frecuencia se ejecuta el ciclo de reconciliación. |
| `RECONCILIATION_LOOKBACK_HOURS`        | `24`                          | Cuánto retrocede cada ciclo de reconciliación.            |
| `RECONCILIATION_MAX_BOLETOS_PER_CYCLE` | —                             | Máximo de boletos reconciliados por ciclo.                |
| `RECONCILIATION_DELAY_MS`              | —                             | Retardo en milisegundos entre pasos de reconciliación.    |

## Despacho de webhooks e idempotencia

| Variable                        | Valor por defecto / Requerida | Descripción                                                                      |
| ------------------------------- | ----------------------------- | -------------------------------------------------------------------------------- |
| `WEBHOOK_DISPATCHER_BATCH_SIZE` | —                             | Número de eventos de webhook despachados por lote.                               |
| `WEBHOOK_DISPATCHER_INTERVAL`   | —                             | Intervalo entre ciclos de despacho de webhooks.                                  |
| `WEBHOOK_SKIP_URL_VALIDATION`   | `false`                       | Omite la validación de la URL del suscriptor. Mantenla en `false` en producción. |
| `IDEMPOTENCY_RECORD_TTL_HOURS`  | `48`                          | Cuánto tiempo se conservan los registros de idempotencia, en horas.              |
| `ACCOUNT_VALIDATION_DISABLED`   | `false`                       | Desactiva la validación de cuentas. Mantenla en `false` en producción.           |

## Migraciones

| Variable                    | Valor por defecto / Requerida | Descripción                                                                    |
| --------------------------- | ----------------------------- | ------------------------------------------------------------------------------ |
| `MIGRATION_TIMEOUT_SEC`     | —                             | Tiempo de espera en segundos para una ejecución de migración de base de datos. |
| `MIGRATION_LOCK_TIMEOUT_MS` | —                             | Tiempo de espera en milisegundos para adquirir el lock de migración.           |

## Salud y readiness

El rail expone `GET /health` (liveness) y `GET /readyz` (readiness) en el puerto principal. Cuando la multi-tenancy está habilitada, añade una sonda por tenant protegida por autenticación en `GET /readyz/tenant/{id}`. Consulta [Salud y readiness](/es/reference/health-and-readiness) para la forma de la respuesta y el comportamiento de arranque/drenaje.
