IBAN List API
Description: Retrieve the list of IBANs under the current API account
Production API URL: #/api/iban/list
Sandbox API URL: https://ibantest.yabandpay.com/api/iban/list
Method: POST
Header:
Authorization: Bearer {api_account_token}
Content-Type: application/json
0. API Signature Instructions (HMAC-SHA256)
The signature rule for IBAN APIs is consistent with the rest of the platform. All IBAN endpoints use HMAC-SHA256. Clients should compute sign as follows:
- Remove the
signfield from the raw request body. If arolefield exists, it must also be excluded from signing. - Flatten all fields inside the
dataobject to the top level, and merge them together withuid / timestamp / nonce. - Sort the flattened key/value pairs by key in ascending dictionary order (same as PHP
ksort()). - Concatenate them into a query string using the form
k1=v1&k2=v2&k3=v3. - Compute the signature using the account
secret_keyas the secret withHMAC-SHA256, lowercase the result, and use that value assignin the request.
Signature formula:
sign = hash_hmac('sha256', implode('&', ksort(merge(data, {uid, timestamp, nonce})) ), secret_key)
Signature example (PHP):
$secretKey = 'your_account_secret_key';
$body = [
'uid' => '900001',
'timestamp' => 1750000000,
'nonce' => 'Qe3CkH2xP8',
'data' => [
'request_id' => 'req_202411180049',
'page' => 1,
'limit' => 20,
'keyword' => 'YABN',
'customer_type' => 'legal_entity',
'access' => 2,
'status' => 1,
],
];
$sign = getSignByYabandPayV3($body, $secretKey);
$body['sign'] = $sign;
Following the steps above, the resulting sign should match the one in the request example below: A1AC665F9B40F7C51212BCE080F5B987.
Notes:
timestampshould be a UTC Unix timestamp in seconds. A large clock drift from the IBAN server may cause the request to be rejected.nonceshould be a random string of 10 to 32 characters and unique per request to prevent replay attacks.Authorization Bearer Tokenandsignare two independent validation layers. Both must pass.- Key ordering and casing are strictly sensitive. A different field order or accidental whitespace usually results in -1001 signature error.
1. Request Parameters (Top Level)
| Field | Type | Description | Required |
|---|---|---|---|
| uid | string | API account UID (matches iban_api_account.uid) |
Required |
| timestamp | integer | Request timestamp in seconds, must be within the signature validity window | Required |
| nonce | string | Random string to prevent replay (10~32 characters recommended) | Required |
| sign | string | Signature (see signature algorithm above) | Required |
| data | object | Query filter set | Required |
2. data Object (fields may be sent either at top level or inside data)
| Parameter | Type | Description | Required |
|---|---|---|---|
| request_id | string | Client-generated request identifier, echoed back in response for idempotency and tracing | Optional |
| page | integer | Page number, starts from 1 | Required |
| limit | integer | Rows per page (alias page_size, use either one). Max 500. |
Required |
| start_time | integer/string | Created-from time. Accepts a timestamp or a date string such as 1784851200 or 2026-08-01 00:00:00. |
Optional |
| end_time | integer/string | Created-to time. Accepts a timestamp or a date string. | Optional |
| keyword | string | Fuzzy search keyword over customer_id, iban, holder_name, alternative_name |
Optional |
| customer_id | string | Exact match on customer ID | Optional |
| iban | string | Exact match on IBAN | Optional |
| customer_type | string | Customer type: legal_entity, individual |
Optional |
| access | integer | Access permission: 0 none, 1 full, 2 inbound, 3 outbound |
Optional |
| status | integer | Account status: 0 inactive, 1 active |
Optional |
Permission isolation: the result set only contains IBANs bound to the API account represented by the
Authorization Bearer Token(i.e.api_account_id = current account id). Cross-account queries are not allowed.
3. Request Example
{
"uid": "900001",
"timestamp": 1750000000,
"nonce": "Qe3CkH2xP8",
"sign": "A1AC665F9B40F7C51212BCE080F5B987",
"data": {
"request_id": "req_202411180049",
"page": 1,
"limit": 20,
"keyword": "YABN",
"customer_type": "legal_entity",
"access": 2,
"status": 1
}
}
4. Response Example
Success
{
"status": true,
"code": 200,
"message": "",
"data": {
"list": [
{
"id": 1,
"customer_type": "legal_entity",
"customer_id": "2012345678",
"holder_name": "Company name",
"alternative_name": "First_name Last_name",
"creditor_identifier": "NL00ZZZ123456780000",
"bic": "YABNNL22",
"iban": "NL09YABN0192150222",
"currency": "EUR",
"balance": "1000.00",
"access": 2,
"access_label": "inbound",
"status": 1,
"status_label": "active",
"remark": "Test remark",
"api_account_id": 1,
"created_at": 1784851200,
"updated_at": 1784851800
}
],
"total": 1,
"page": 1,
"limit": 20,
"page_size": 20,
"total_page": 1,
"request_id": "req_202411180049"
}
}
Failure: Missing required parameters
{
"status": false,
"code": -3002,
"message": "The given data was invalid.",
"data": {}
}
Failure: Invalid Authorization / Disabled account
{
"status": false,
"code": -1010,
"message": "api account error",
"data": {}
}