These variables describe a single-tenant deployment. On the managed multi-tenant offering (SaaS), the client-specific values here — JD credentials, the Midaz ledger binding, the CRM connection, the public QR host — are resolved automatically per tenant by the platform, never from a deployment’s environment.
In the tables below, the Default / Required column shows the default value. A bold qualifier (for example Required) marks variables you must set.
— means no default. 🔒 marks a secret. Inject it at deploy time from your secret store, and never commit it. This page lists variable names and behavior only. It prints no secret values.Server and port
The service listens on the address inSERVER_ADDRESS (default :8080). The liveness, readiness, and version probes bind this same port. See Server for the shared server knobs and Default network ports.
JD integration
Credentials and endpoints for JD’s OAuth-secured API and its Pix (JDPI) surface.Dynamic QR code hosting
The rail hosts signed (JWS) dynamic-QR payloads and the JWK set used to verify them, and serves those documents under the host inQRCODE_PUBLIC_BASE_URL. The public route shapes, the scheme-less host form, and BACEN’s 77-character payload-URL budget these paths spend are the contract of the QR codes reference section; the variables below set the pieces this deployment controls.
Midaz ledger binding
Which Midaz organization, ledger, asset, and external account this rail books Pix movements against, plus the ledger service endpoints and machine-to-machine credentials.There is no separate Access Manager address for Midaz. The rail mints its outbound Midaz token against the same Access Manager it validates inbound bearers with,
PLUGIN_AUTH_HOST. See BYOC configuration essentials.Accounting routes
The rail books each Pix flow onto a pair of Midaz operation routes — one credit leg, one debit leg, across ten profiles. Those twenty route identifiers are not environment variables. They live in the systemplane keystenant_policy/routing.<profile>.operation_credit_route and tenant_policy/routing.<profile>.operation_debit_route, with no environment fallback.
The profiles, the exact key names, and how to write them are in Setting up the rail.
Jobs and limits
The daily window transaction limits are accounted in is not an environment variable. It lives in the systemplane keys
tenant_policy/transaction_limits.daily_period_init and tenant_policy/transaction_limits.daily_period_end, in both deployment modes; both take a clock hour from 0 to 23. The retired TRANSACTION_LIMIT_DAILY_PERIOD_INIT and TRANSACTION_LIMIT_DAILY_PERIOD_END variables are ignored.Notifications
Optional end-customer notifications for Pix events. Leave the provider blocks unset to disable that channel.CRM
Indirect participants
Only relevant if this deployment settles Pix on behalf of other institutions.Runtime configuration (systemplane)
This rail mounts the systemplane admin API on its main port, gated bySYSTEMPLANE_ENABLED.
When enabled, the service exposes an authenticated plane for reading and writing runtime configuration. See Systemplane for the API, namespaces, and required permissions.
Several values this rail needs are only reachable through that plane, in both deployment modes, and a deployment that leaves them unset starts healthy and refuses money:
With
SYSTEMPLANE_ENABLED=false the /system route group is not mounted at all, so every configuration write answers 404, and a money path that cannot read its configuration answers the retryable 503 PIX-0051 rather than a provisioning refusal. The write-side permission is systemplane:write; without it the writes answer 403.Health and readiness
The rail exposesGET /health (liveness) and GET /readyz (readiness) on the main port, plus /metrics and /version. See Health and readiness for the response shape and startup/drain behavior.
