Available Banks

Get the list of available banks for deposit transactions.

GET/v1/available-banks

Returns a list of banks available for your account with their transaction limits.

Description

Use this endpoint to retrieve the list of banks that are currently available for processing deposit transactions. The response includes bank options with their minimum and maximum limits, plus a single FAST transfer option if available.

Call this endpoint before creating a deposit transaction to show available payment options to your users. Use the bank's _id as the bankCode parameter, or use "FAST" for FAST transfers when creating deposit transactions.

Request Headers

HeaderRequiredDescription
X-API-KeyRequiredYour API Key
X-SignatureRequiredHMAC-SHA256 signature
X-TimestampRequiredUnix timestamp in seconds

Signature Format

For GET requests without a body, the signature is generated as follows:

signature = HMAC-SHA256(timestamp + "GET" + "/v1/available-banks" + "", apiSecret)

Request Example

cURL
curl -X GET "https://<service_name>.api.wiapay.co/v1/available-banks" \
  -H "X-API-Key: pk_live_abc123..." \
  -H "X-Signature: a1b2c3d4e5f6..." \
  -H "X-Timestamp: 1705320000"
JavaScript
const crypto = require('crypto');

const API_KEY = 'your-api-key';
const API_SECRET = 'your-api-secret';
const BASE_URL = 'https://<service_name>.api.wiapay.co';

// Generate signature for GET request (no body)
function generateSignature(timestamp, method, path) {
  const message = timestamp + method + path + '';
  return crypto
    .createHmac('sha256', API_SECRET)
    .update(message)
    .digest('hex');
}

async function getAvailableBanks() {
  const timestamp = Math.floor(Date.now() / 1000).toString();
  const method = 'GET';
  const path = '/v1/available-banks';

  const signature = generateSignature(timestamp, method, path);

  const response = await fetch(BASE_URL + path, {
    method: 'GET',
    headers: {
      'X-API-Key': API_KEY,
      'X-Signature': signature,
      'X-Timestamp': timestamp
    }
  });

  const data = await response.json();
  console.log('Available banks:', data);
  return data;
}

getAvailableBanks();
PHP
<?php

$apiKey = 'your-api-key';
$apiSecret = 'your-api-secret';
$baseUrl = 'https://<service_name>.api.wiapay.co';

function generateSignature($apiSecret, $timestamp, $method, $path) {
    $message = $timestamp . $method . $path . '';
    return hash_hmac('sha256', $message, $apiSecret);
}

$timestamp = (string) time();
$method = 'GET';
$path = '/v1/available-banks';

$signature = generateSignature($apiSecret, $timestamp, $method, $path);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baseUrl . $path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey,
    'X-Signature: ' . $signature,
    'X-Timestamp: ' . $timestamp
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);

Response

Success Response (200 OK)

{
  "success": true,
  "data": {
    "banks": [
      {
        "_id": "FAST",
        "name": "Fast",
        "code": "FAST",
        "minAmount": 10,
        "maxAmount": 100000
      },
      {
        "_id": "5fe25f6e3e73770018d47b15",
        "name": "Garanti BBVA",
        "code": "GARANTI",
        "minAmount": 10,
        "maxAmount": 100000,
        "logo": "https://cdn.wiapay.co/banks/garanti.png"
      },
      {
        "_id": "5fe25f6e3e73770018d47b16",
        "name": "Yapi Kredi",
        "code": "YAPIKREDI",
        "minAmount": 50,
        "maxAmount": 100000,
        "logo": "https://cdn.wiapay.co/banks/yapikredi.png"
      }
    ]
  },
  "timestamp": 1705320000
}

Response Fields

FieldTypeDescription
successbooleanIndicates if the request was successful
data.banksarrayArray of available banks
banks[]._idstringUnique bank identifier
banks[].namestringBank display name
banks[].codestringBank code for API requests
banks[].minAmountnumberMinimum transaction amount
banks[].maxAmountnumberMaximum transaction amount
banks[].logostringURL to bank logo image
timestampnumberUnix timestamp of the response

Integration Flow

1

Get Available Banks

Fetch the list of banks available for transactions

2

Display to User

Show the available banks and their limits to your customer

3

Create Transaction

Use the bank code when creating deposit or withdrawal requests

Fast Integration

Cache the bank list and refresh periodically. Banks and limits may change, so we recommend refreshing every few hours.

Error Responses

401 Unauthorized
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid API key"
  },
  "timestamp": 1705320000
}
401 Unauthorized - Invalid Signature
{
  "success": false,
  "error": {
    "code": "INVALID_SIGNATURE",
    "message": "Signature verification failed"
  },
  "timestamp": 1705320000
}
403 Forbidden
{
  "success": false,
  "error": {
    "code": "IP_NOT_WHITELISTED",
    "message": "Your IP address is not whitelisted"
  },
  "timestamp": 1705320000
}