Bank Accounts
API Reference
Balances

Balances

Who calls these endpoints?External API (s2s)
Base path
/api/v1/bank-connect
Identity
Ed25519 request signature on every request — X-Key-Id, X-Date, X-Nonce, X-Signature. ±5 min clock window, single-use nonce. A Bearer token or a panel session is not accepted here (401 AUTH_HEADERS_MISSING).
Authorization
The key must carry the Bank Connections product (BANK_CONNECT) and the permission for the endpoints on this page: bank-connect:transactions:view. Without the product the call gets 403 PRODUCT_NOT_ENABLED; without the permission 403 API_INSUFFICIENT_SCOPE. See API Introduction › Permissions.
Cross-surface
These endpoints are the s2s surface — call them from your own server with a signed request. The same data has screens in the panel, but panel endpoints cannot be called with an API key, and these endpoints cannot be called with a panel session. Connecting and disconnecting a bank is done only in the panel.

GET /api/v1/bank-connect/balances returns the most recently read balance of each account. Past balances are not returned by this endpoint; for the balance after a transaction see the balanceAfterMinor field in the transaction detail.

The list contains only accounts that are ACTIVE and whose balance has been read at least once.

Request

Query parameterTypeDescription
accountIdstringComma-separated account IDs (UUID), at most 100. If omitted, all active accounts in your key's environment are returned.
currencystringISO 4217 currency, e.g. TRY.
limitintegerRecords per page, 1–100. Default 25.
cursorstringpageInfo.nextCursor from the previous response.
source lunixi-sign.sh
REQ_PATH="/api/v1/bank-connect/balances?currency=TRY"
lunixi_sign GET "$REQ_PATH"
 
curl "https://api-gateway.lunixi.com$REQ_PATH" \
  -H "X-Key-Id: $LUNIXI_KEY_ID" \
  -H "X-Date: $DATE" \
  -H "X-Nonce: $NONCE" \
  -H "X-Signature: $SIGNATURE"

$bankConnect in the PHP example: API Introduction › PHP SDK.

Response

{
  "status": "success",
  "code": "SUCCESS",
  "data": {
    "items": [
      {
        "accountId": "00000000-0000-0000-0000-000000000100",
        "currency": "TRY",
        "balanceMinor": 1250000,
        "availableMinor": 1200000,
        "blockedMinor": 50000,
        "asOf": "2026-01-01T07:05:00.000Z",
        "availableWithoutOverdraftMinor": 1000000,
        "overdraftAvailableMinor": 200000
      }
    ]
  },
  "pageInfo": { "hasMore": false, "nextCursor": null, "totalCount": null },
  "statusCode": 200,
  "requestId": "00000000-0000-0000-0000-000000000000"
}
FieldTypeDescription
accountIdstring (UUID)The account's ID.
currencystringThe balance currency (ISO 4217).
balanceMinorintegerThe balance in minor units (kuruş). May be negative.
availableMinorintegerAvailable balance. Absent if the bank does not report it.
blockedMinorintegerBlocked amount. Absent if the bank does not report it.
asOfstringThe moment the balance applies to. Absent when there is no value.
availableWithoutOverdraftMinorintegerAvailable balance excluding the overdraft line. Absent when the bank does not report it separately.
overdraftAvailableMinorintegerThe unused overdraft line. Absent when the bank does not report it.

availableMinor, blockedMinor, availableWithoutOverdraftMinor and overdraftAvailableMinor are not provided by every bank. If the field is absent, do not treat the value as zero; it means the bank does not report this information.

The balance is the value at the last time the account was read. You can see when that was in the account's freshness object.

Errors

HTTPcodeWhat to do
400VALIDATION_ERRORaccountId is not a UUID or has more than 100 values, currency is invalid, limit is outside 1–100, or you sent an undeclared parameter.
400bank_connect.cursor.invalidSend the cursor unchanged or start from the first page.
403API_INSUFFICIENT_SCOPEAdd bank-connect:transactions:view to your key; bank-connect:view is not enough.