Read one tenant's rail funding balance (scheduler only)
The TENANT-ADDRESSED balance read used by the scheduler's recon liquidity snapshot job, which reads every tenant with the disburse module through one service account. The tenant comes from the PATH, not the token. It is the only route in its group and it is read-only. The caller must be on DISBURSEMENT_BALANCE_READER_SUBS (an allowlist separate from the recon-service one, so this caller reaches no /v1 route) AND hold disbursement.rails.balance.read. The tenant must be active and have the disburse module. A rail the tenant has not configured answers 404 rail_not_configured. Otherwise the response is the /v1 balance handler's, unchanged. Every call that passes the caller and permission gates writes one audit_log row (disbursement.rails.balance.read), which records the caller, the target tenant, the rail and the HTTP status. It never records a balance.
Authorization
bearerAuth In: header
Path Parameters
The target tenant's id (a UUID). The token's own tenant is ignored.
uuidThe rail identifier.
"fake" | "flip" | "mandiri" | "bca" | "uob" | "danarapay"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://sandbox.505pay.link/internal/tenants/497f6eca-6276-4993-bfeb-53cbbbba6f08/rails/fake/balance"{
"available": "125000000.00",
"total": "130000000.00",
"pending": "5000000.00",
"currency": "IDR",
"mode": "live"
}{
"error": "invalid_tenant",
"message": "tenant must be a tenant id"
}{
"error": "unauthenticated",
"message": "missing or invalid credentials",
"request_id": "01916b2a-f3c0-7000-0000-0000000000ff"
}{
"error": "insufficient_scope",
"message": "caller lacks disbursement.rails.balance.read"
}{
"error": "rail_not_configured",
"message": "rail is not configured for this tenant"
}{
"error": "validation_failed",
"message": "amount must be a decimal string"
}{
"error": "validation_failed",
"message": "amount must be a decimal string"
}{
"error": "validation_failed",
"message": "amount must be a decimal string"
}Was this page helpful?