API Bank
Direktori lengkap bank Indonesia, e-wallet, dan payment gateway dengan kode SWIFT/BIC untuk integrasi pembayaran.
Ringkasan
/api/v1/banksApa itu Data Bank?
API Bank menyediakan data institusi keuangan Indonesia yang dapat digunakan untuk:
- Form pilihan bank untuk transfer dana
- Validasi kode bank untuk integrasi payment gateway
- Menampilkan daftar e-wallet yang tersedia
- Referensi kode SWIFT untuk transfer internasional
Tipe Institusi
| Type | Deskripsi | Contoh |
|---|---|---|
bank | Bank konvensional dan syariah | BCA, Mandiri, BNI, BRI |
ewallet | Dompet digital / e-money | GoPay, OVO, Dana, ShopeePay |
payment_gateway | Penyedia layanan pembayaran | Midtrans, Xendit, DOKU |
Tentang Kode SWIFT/BIC
SWIFT code (Society for Worldwide Interbank Financial Telecommunication) adalah kode unik 8-11 karakter yang mengidentifikasi bank untuk transfer internasional. Tidak semua institusi memiliki kode SWIFT.
Endpoints
/api/v1/banksMendapatkan daftar bank, e-wallet, dan payment gateway
Query Parameters
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
page | integer | 1 | Nomor halaman untuk pagination |
limit | integer | 50 | Jumlah data per halaman (maks: 100) |
search | string | - | Cari berdasarkan nama, kode, atau SWIFT code |
type | string | - | Filter tipe: bank, ewallet, payment_gateway |
Contoh Request
curl -X GET "https://api.portaldata.id/api/v1/banks?type=bank&limit=10" \
-H "X-API-Key: YOUR_API_KEY"Contoh Response
{
"data": [
{
"code": "002",
"swiftCode": "BRINIDJA",
"name": "Bank Rakyat Indonesia",
"type": "bank"
},
{
"code": "008",
"swiftCode": "MABORIDJ",
"name": "Bank Mandiri",
"type": "bank"
},
{
"code": "009",
"swiftCode": "BABORIDJ",
"name": "Bank Negara Indonesia",
"type": "bank"
},
{
"code": "014",
"swiftCode": "CENAIDJA",
"name": "Bank Central Asia",
"type": "bank"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 120,
"totalPages": 12
},
"meta": {
"source": "Bank Indonesia",
"apiVersion": "1.0.0",
"riskLevel": "low"
},
"disclaimer": "Reference data only. Not legal or tax advice."
}Penjelasan Field Response
| Field | Tipe | Deskripsi |
|---|---|---|
code | string | Kode bank BI (3 digit untuk bank) |
swiftCode | string | null | Kode SWIFT/BIC untuk transfer internasional |
name | string | Nama lengkap institusi |
type | enum | Tipe institusi: bank, ewallet, payment_gateway |
Contoh Penggunaan
1. Dropdown Pilihan Bank untuk Transfer
Menampilkan daftar bank untuk form transfer dana
GET /api/v1/banks?type=bank&limit=1002. Daftar E-Wallet
Menampilkan pilihan e-wallet untuk top-up atau pembayaran
GET /api/v1/banks?type=ewallet3. Pencarian Bank
Mencari bank berdasarkan nama atau kode
GET /api/v1/banks?search=bca4. Cari Bank dengan SWIFT Code
Mencari bank untuk transfer internasional
GET /api/v1/banks?search=CENAIDJAContoh Kode Lengkap
// React component untuk dropdown bank
import { useState, useEffect } from 'react';
function BankDropdown({ onSelect, type = 'bank' }) {
const [banks, setBanks] = useState([]);
const [loading, setLoading] = useState(true);
const [search, setSearch] = useState('');
useEffect(() => {
async function fetchBanks() {
const response = await fetch(
`https://api.portaldata.id/api/v1/banks?type=${type}&limit=100`,
{ headers: { 'X-API-Key': 'YOUR_API_KEY' } }
);
const { data } = await response.json();
setBanks(data);
setLoading(false);
}
fetchBanks();
}, [type]);
const filteredBanks = banks.filter(bank =>
bank.name.toLowerCase().includes(search.toLowerCase()) ||
bank.code.includes(search)
);
if (loading) return <div>Loading...</div>;
return (
<div>
<input
type="text"
placeholder="Cari bank..."
value={search}
onChange={(e) => setSearch(e.target.value)}
className="w-full p-2 border rounded mb-2"
/>
<select
onChange={(e) => onSelect(banks.find(b => b.code === e.target.value))}
className="w-full p-2 border rounded"
>
<option value="">Pilih bank</option>
{filteredBanks.map(bank => (
<option key={bank.code} value={bank.code}>
{bank.name} ({bank.code})
</option>
))}
</select>
</div>
);
}import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.portaldata.id/api/v1'
class BankValidator:
def __init__(self):
self.banks_cache = None
def _fetch_banks(self):
"""Fetch dan cache daftar bank"""
if self.banks_cache is None:
all_banks = []
page = 1
while True:
response = requests.get(
f'{BASE_URL}/banks',
params={'page': page, 'limit': 100},
headers={'X-API-Key': API_KEY}
)
data = response.json()
all_banks.extend(data['data'])
if page >= data['pagination']['totalPages']:
break
page += 1
self.banks_cache = {bank['code']: bank for bank in all_banks}
return self.banks_cache
def validate_bank_code(self, code):
"""Validasi kode bank"""
banks = self._fetch_banks()
if code in banks:
return {'valid': True, 'bank': banks[code]}
return {'valid': False, 'error': 'Kode bank tidak ditemukan'}
def get_swift_code(self, bank_code):
"""Mendapatkan SWIFT code dari kode bank"""
banks = self._fetch_banks()
if bank_code in banks:
return banks[bank_code].get('swiftCode')
return None
# Contoh penggunaan
validator = BankValidator()
# Validasi kode bank
result = validator.validate_bank_code('014')
print(result)
# Output: {'valid': True, 'bank': {'code': '014', 'swiftCode': 'CENAIDJA', 'name': 'Bank Central Asia', 'type': 'bank'}}
# Dapatkan SWIFT code
swift = validator.get_swift_code('014')
print(f"SWIFT Code BCA: {swift}")
# Output: SWIFT Code BCA: CENAIDJABank Populer di Indonesia
| Kode | Nama | SWIFT Code |
|---|---|---|
002 | Bank Rakyat Indonesia (BRI) | BRINIDJA |
008 | Bank Mandiri | BMRIIDJA |
009 | Bank Negara Indonesia (BNI) | BABORIDJ |
014 | Bank Central Asia (BCA) | CENAIDJA |
022 | Bank CIMB Niaga | BABORIDJ |
427 | Bank Syariah Indonesia (BSI) | BSMAIDJA |
Best Practices
Cache Daftar Bank
Daftar bank jarang berubah. Cache hasil API selama 24 jam untuk mengurangi request dan meningkatkan performa.
Gunakan Type Filter
Selalu gunakan parameter type untuk memfilter hanya institusi yang relevan dengan use case Anda.
Tampilkan Nama Lengkap
Selalu tampilkan nama lengkap bank kepada user, bukan hanya kode, untuk menghindari kesalahan pemilihan.