DocsBank

API Bank

Direktori lengkap bank Indonesia, e-wallet, dan payment gateway dengan kode SWIFT/BIC untuk integrasi pembayaran.

Ringkasan

Base URL:/api/v1/banks
Total Data:100+ institusi
Sumber Data:Bank Indonesia
Update:Sesuai update BI

Apa 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

TypeDeskripsiContoh
bankBank konvensional dan syariahBCA, Mandiri, BNI, BRI
ewalletDompet digital / e-moneyGoPay, OVO, Dana, ShopeePay
payment_gatewayPenyedia layanan pembayaranMidtrans, 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

GET/api/v1/banks

Mendapatkan daftar bank, e-wallet, dan payment gateway

Query Parameters

ParameterTipeDefaultDeskripsi
pageinteger1Nomor halaman untuk pagination
limitinteger50Jumlah data per halaman (maks: 100)
searchstring-Cari berdasarkan nama, kode, atau SWIFT code
typestring-Filter tipe: bank, ewallet, payment_gateway

Contoh Request

cURL
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

FieldTipeDeskripsi
codestringKode bank BI (3 digit untuk bank)
swiftCodestring | nullKode SWIFT/BIC untuk transfer internasional
namestringNama lengkap institusi
typeenumTipe 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=100

2. Daftar E-Wallet

Menampilkan pilihan e-wallet untuk top-up atau pembayaran

GET /api/v1/banks?type=ewallet

3. Pencarian Bank

Mencari bank berdasarkan nama atau kode

GET /api/v1/banks?search=bca

4. Cari Bank dengan SWIFT Code

Mencari bank untuk transfer internasional

GET /api/v1/banks?search=CENAIDJA

Contoh Kode Lengkap

JavaScript - Bank Dropdown Component
// 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>
  );
}
Python - Validasi Kode Bank
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: CENAIDJA

Bank Populer di Indonesia

KodeNamaSWIFT Code
002Bank Rakyat Indonesia (BRI)BRINIDJA
008Bank MandiriBMRIIDJA
009Bank Negara Indonesia (BNI)BABORIDJ
014Bank Central Asia (BCA)CENAIDJA
022Bank CIMB NiagaBABORIDJ
427Bank 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.

Lihat Juga