Skip to main content
These are deploy-time variables set by DevOps; changes require a service restart. Runtime and business settings live in Configuration. In the tables below, the Default / Required column shows the default value; a bold qualifier (e.g. Required, Required in production, Required if enabled) marks variables that must be set. means no default.

Infrastructure configuration


This section is for DevOps teams. These variables are set at deployment time and require a service restart to take effect.

Application

TLS

Proxy headers

Used when the service runs behind a load balancer or reverse proxy. Required to extract the real client IP for rate limiting and audit logs.

Authentication

This plugin delegates authorization to plugin-auth. Configure the connection with the variables below.
When PLUGIN_AUTH_ENABLED=true, PLUGIN_AUTH_ADDRESS must use HTTPS in production environments. HTTP addresses are rejected at startup.

Test admin (non-production only)

BTF_TEST_ADMIN_ENABLED must remain false in production. It exposes test-only admin endpoints (e.g. POST /admin/test/circuit-breakers/reset) that are tenant-less and bypass production authentication. Enabled only by docker-compose mock-lane for E2E tests; any deployment with this flag true outside a sealed test network is a misconfiguration.

Idempotency

Multi-tenancy

BYOC single-tenant:
SaaS multi-tenant:

PostgreSQL

PostgreSQL replica

Configure a read replica for query offloading. All fields fall back to primary values when unset.

MongoDB

MongoDB is required for transfer audit event persistence. The service will not start without a valid MongoDB connection.

Redis

Redis is a mandatory dependency. If Redis is unavailable at startup or becomes unreachable at runtime, the service reports as DOWN to the orchestration readiness probe and stops accepting requests. Redis is required for idempotency key caching and duplicate detection.

JD SPB connection

These variables are required for BYOC deployments. In SaaS mode, Lerian manages the JD connection.

JD polling

JD_POLLING_ENABLED defaults to false for safer deployments. In single-tenant mode, set ORGANIZATION_ID before enabling it — background workers inject it into context for downstream CRM/Midaz calls. In multi-tenant mode, the TED IN poller manager starts one poller per active tenant discovered through the multi-tenancy platform service and resolves each tenant’s JD configuration through the multi-tenancy platform service.

External services (Midaz)

External services (CRM)

External services (Fees)

BTF_FEE_ENABLED is the master switch. When false (default), no Fees adapter is constructed and every transfer proceeds with fee=0 with no HTTP call. The other FEES_* variables only take effect when BTF_FEE_ENABLED=true.

RabbitMQ

Transfer lifecycle events can be published to RabbitMQ for downstream consumers.

Streaming outbox

The streaming subsystem publishes transfer events to a Redpanda/Kafka broker via a transactional outbox. It must be enabled for outbound webhook delivery to work (WEBHOOK_ENABLED=true requires STREAMING_ENABLED=true).

Webhook delivery

Outbound webhook delivery requires both RabbitMQ and the streaming outbox to be enabled. The webhook worker consumes events from a RabbitMQ queue and delivers them to subscriber endpoints.

Telemetry (OpenTelemetry)

License

Encryption

Field-level encryption for sensitive data at rest. Each key must be a base64-encoded 32-byte AES-256 key. Leave empty to disable encryption for that field.