Bank Accounts
API Reference
Accounts

Accounts

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: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.

Once a connection is active, the accounts at your bank are discovered automatically. These endpoints return your accounts with masked identifiers and freshness information; no balance is returned. For balances use the Balances endpoint.

List accounts

GET /api/v1/bank-connect/accounts

Query parameterTypeDescription
connectionIdstring (UUID)Only accounts of this connection.
bankIdstring (UUID)Only accounts at this bank.
currencystringISO 4217 currency, e.g. TRY.
statusstringACTIVE or INACTIVE.
limitintegerRecords per page, 1–100. Default 25.
cursorstringpageInfo.nextCursor from the previous response.
source lunixi-sign.sh
REQ_PATH="/api/v1/bank-connect/accounts?status=ACTIVE&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.

{
  "status": "success",
  "code": "SUCCESS",
  "data": {
    "items": [
      {
        "accountId": "00000000-0000-0000-0000-000000000100",
        "connectionId": "00000000-0000-0000-0000-000000000010",
        "bank": { "bankId": "00000000-0000-0000-0000-000000000001", "eftCode": "0000", "name": "ÖRNEK BANKA" },
        "ibanMasked": "TR00 **** **** **** **** **00 00",
        "accountNumberMasked": "****0000",
        "currency": "TRY",
        "productCode": "CARIHSP",
        "status": "ACTIVE",
        "discoveredAt": "2026-01-01T07:00:00.000Z",
        "freshness": {
          "lastSuccessfulSyncAt": "2026-01-01T07:05:00.000Z",
          "nextSyncAvailableAt": "2026-01-01T07:20:00.000Z",
          "minSyncIntervalSeconds": 900
        },
        "displayName": "ANA HESAP",
        "accountType": "VADESIZ"
      }
    ]
  },
  "pageInfo": { "hasMore": false, "nextCursor": null, "totalCount": null },
  "statusCode": 200,
  "requestId": "00000000-0000-0000-0000-000000000000"
}

The minSyncIntervalSeconds value in the example is only an example. Read the real value from each account's freshness object; it may differ per connection.

Single account

GET /api/v1/bank-connect/accounts/{accountId} returns a single account. data is the account object itself; the fields are the same as in the list. An account that is unknown, belongs to another organization or to the other environment returns 404 bank_connect.account.not_found.

The account object

FieldTypeDescription
accountIdstring (UUID)The account's ID; the accountId filter on the balance and transaction endpoints takes this value.
connectionIdstring (UUID)The connection the account belongs to.
bankobjectbankId, eftCode and, when available, name.
ibanMaskedstringMasked IBAN. Absent when there is no value.
accountNumberMaskedstringMasked account number. Absent when there is no value.
currencystringThe account currency (ISO 4217).
branchCodestringBranch code. Absent when there is no value.
branchNamestringBranch name. Absent when there is no value.
productCodestringThe bank's product code for the account, e.g. CARIHSP. Absent when the bank does not report it.
statusstringACTIVE: the account is being read. INACTIVE: the connection was disconnected or the bank no longer returns the account.
discoveredAtstringWhen the account was first discovered.
freshnessobjectFreshness of the data; see below.
displayNamestringThe name the bank gives the account. Absent when the bank does not report it.
accountTypestringThe account type the bank reports (e.g. demand deposit). The text depends on the bank; absent when the bank does not report it.

freshness

FieldTypeDescription
lastSuccessfulSyncAtstringTime of the last successful read from the bank. Absent if there has been no read yet.
nextSyncAvailableAtstringEarliest time of the next read. Absent when there is no value.
minSyncIntervalSecondsintegerShortest time between two reads (seconds).

How freshness works: Concepts › Freshness. To bring a read forward: Sync Now.

Whether transfers or currency exchange can be made from an account depends on its connection; see the connection's capabilities field. → Connections · Money Transfers

Errors

HTTPcodeWhat to do
400VALIDATION_ERRORA filter value 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.
404bank_connect.account.not_foundCheck the ID and your key's environment.