Config reference
Every setting in ledger/config.py, grouped by concern.
Core
| Env | Default | Notes |
|---|---|---|
LEDGER_ENV | local | free-form label |
ENTITY_ID | VALURA_UAE | VALURA_UAE | VALURA_IND_IFSC |
LEDGER_DB_URL / LEDGER_SERVICE_DB_URL | required | main DB (asyncpg dsn) |
WORKERS_DB_URL | unset | optional separate worker pool |
APP_RO_LEDGER_URL | unset | read-only replica |
LEDGER_MIGRATION_DB_URL | unset | alembic override |
LEDGER_TOKEN | required | read token |
LEDGER_ADMIN_TOKEN | unset | write / job token |
LEDGER_UI_ORIGINS | localhost defaults | CORS origins |
BACKEND_MARKET_DATA_URL | unset | optional market-data backend |
BACKEND_INTERNAL_TOKEN | unset | internal backend token |
UAE — ZAG
| Env | Default |
|---|---|
ZAG_API_URL | Aldar GetAllTransactions.php |
ZAG_BALANCES_URL | Aldar UserBalancesPortfolioAPI3.php |
ZAG_ACCESS_TOKEN | unset |
ZAG_API_KEY | unset |
AED_PER_USD | 3.6725 |
UAE — GTN
| Env | Default |
|---|---|
GTN_BASE_URL | unset |
GTN_THROTTLE_KEY | unset |
GTN_BASIC_AUTH | unset |
GTN_ASSERTION | unset |
India — ViewTrade IFSC
| Env | Default |
|---|---|
VIEWTRADE_UMA_URL | unset |
VTIFSC_DATA_URL | https://api.vtifsc.in |
VIEWTRADE_API_KEY / _API_SECRET | unset |
VIEWTRADE_GATEWAY_URL | unset (legacy) |
VIEWTRADE_BROKERAGE_CHARGE_BPS | 22 |
VIEWTRADE_BROKERAGE_COST_BPS | 4 |
India — Daily Ledger reports
| Env | Default |
|---|---|
VTIFSC_REPORTS_URL | https://vt-ifsc-reports.viewtrade.in |
VTIFSC_REPORTS_API_KEY / _API_SECRET | unset |
VTIFSC_REPORTS_FIRM_CODE | VLAI |
India — GlomoPay
| Env | Default |
|---|---|
GLOMOPAY_BASE_URL | https://api.glomopay.com |
GLOMOPAY_TOKEN | unset |
GLOMOPAY_FX_SPREAD_BPS | 0 |
GLOMOPAY_WEBHOOK_SECRET | unset |
India — LRS / TCS thresholds
| Env | Default | Notes |
|---|---|---|
LRS_ANNUAL_CAP_USD | 250000 | RBI $250k/PAN/FY |
LRS_TCS_THRESHOLD_INR | 700000 | ₹7,00,000 |
LRS_TCS_RATE_BPS | 2000 | 20% |
LRS_CAP_WARN_PCT | 0.8 | warn band |
India — capital gains
| Env | Default | Notes |
|---|---|---|
CAPITAL_GAINS_LTCG_DAYS | 730 | 24 months |
Scheduled loops
| Env | Default | Purpose |
|---|---|---|
SNAPSHOT_REFRESH_ENABLED | true | Portfolio-snapshot outage-fallback |
SNAPSHOT_REFRESH_INTERVAL_SECONDS | 900 | |
SNAPSHOT_REFRESH_INITIAL_DELAY_SECONDS | 30 | |
SNAPSHOT_REFRESH_CONCURRENCY | 4 | |
RECON_SCHEDULE_ENABLED | true (UAE only) | Recon loop |
RECON_INTERVAL_SECONDS | 3600 | A/B/D cadence |
RECON_EXTERNAL_INTERVAL_SECONDS | 86400 | C cadence |
RECON_SCHEDULE_INITIAL_DELAY_SECONDS | 60 | |
WRITE_PATH_POLLER_ENABLED | false | Manual confirm/fail always works |
INDIA_RECON_ENABLED | false | India recon scheduler |
INDIA_RECON_INTERVAL_SECONDS | 3600 | |
INDIA_SYNC_ENABLED | false | India auto-sync |
INDIA_SYNC_INTERVAL_SECONDS | 7200 | |
INDIA_VIEWTRADE_SYNC_INTERVAL_SECONDS | 7200 | |
INDIA_GLOMOPAY_SYNC_INTERVAL_SECONDS | 3600 | |
ALERT_WEBHOOK_URL | unset | optional drift-alert POST |
ALERT_PERSIST_ENABLED | false | optional variance persistence |
api-global (provisioning only)
| Env | Default |
|---|---|
API_GLOBAL_BASE_URL | unset |
API_GLOBAL_TOKEN | unset |
Where to change what
- Local — edit
apps/ledger/.env.uae.localor.env.ind.local, restart the affected backend. - Prod — Coolify per-app env, encrypted at rest.