API Validasi Rekening Bank: Cara Cek Format Nomor Rekening di Form Pencairan Dana

Oleh , Tim Engineering APIPedia · Terbit · Diperbarui · 8 menit baca

API validasi rekening APIPedia memeriksa format nomor rekening dan kode bank lewat POST /v1/rekening/validate sebelum data pencairan disimpan.

Sampul APIPedia: judul "Cek format rekening sebelum dana dicairkan" dengan chip POST /v1/rekening/validate dan GET /v1/rekening/banks, serta kartu fakta Validasi Rekening v1.0.0: 101 bank di daftar, bukan cek nama pemilik, hasil valid_format true atau false.

API validasi rekening APIPedia memeriksa apakah sebuah nomor rekening berbentuk benar untuk bank yang dipilih: terdiri dari angka, panjangnya sesuai, dan kode banknya terdaftar. Pemeriksaan dilakukan lewat satu request POST /v1/rekening/validate dan hasilnya ada di field valid_format.

Tutorial ini memakai kasus form pencairan dana: penjual di marketplace, mitra, atau pelanggan yang meminta refund mengetik nomor rekening, lalu backend Anda menyaring salah ketik sebelum data disimpan. Satu hal perlu jelas sejak awal: API ini memeriksa format, bukan nama pemilik dan bukan keberadaan rekening.

Ringkasan cepat: apa yang perlu Anda tahu?

Produk Validasi Rekening punya dua endpoint: satu untuk daftar bank, satu untuk memeriksa nomor. Tabel berikut merangkum intinya.

ItemDetail
Daftar bankGET https://api.apipedia.id/v1/rekening/banks, parameter opsional q
Periksa nomorPOST https://api.apipedia.id/v1/rekening/validate
Bodybank_code (mis. "014") dan account_number
AutentikasiHeader Authorization: Bearer apk_xxx
Yang dicekNomor berupa angka, panjangnya wajar untuk bank itu, kode bank ada di daftar
Yang tidak dicekNama pemilik, keberadaan rekening, status aktif
Jumlah bank101 entri saat artikel ini ditulis
Hasilvalid_format bernilai true atau false

Masalah apa yang diselesaikan API validasi rekening?

API ini menangkap salah ketik nomor rekening saat form dikirim, bukan saat transfer sudah gagal. Nomor yang kurang satu digit, tertukar bank, atau berisi huruf biasanya baru ketahuan ketika tim keuangan mencoba mencairkan dana. Akibatnya pencairan tertunda dan pengguna harus dihubungi ulang.

Dengan pemeriksaan format di backend, kesalahan itu langsung dikembalikan ke pengguna sebagai pesan validasi. Tim keuangan menerima data yang sudah dirapikan dan konsisten.

Diagram vertikal cara kerja validasi rekening: 1) terima bank_code dari dropdown bank dan account_number dari ketikan pengguna; 2) cocokkan kode bank dengan daftar /rekening/banks, kode asing dijawab 404; 3) spasi dan tanda hubung dibuang, huruf membuat hasil false; 4) bandingkan panjang, contoh BCA 10 digit, Mandiri 13, BRI 15; terakhir baca valid_format, true berarti simpan data dan false berarti minta pengguna memperbaiki. Di luar cakupan: nama pemilik rekening, apakah rekening benar-benar ada, dan status aktif atau diblokir. Nomor yang lolos belum tentu ada.

Apa yang perlu disiapkan sebelum mulai?

Anda hanya butuh satu kunci API APIPedia. Daftar atau masuk di console.apipedia.id, buka menu Token API, lalu buat kunci baru. Kunci berawalan apk_ dan dikirim lewat header Authorization: Bearer apk_xxx.

Simpan kunci di variabel lingkungan server, misalnya APIPEDIA_KEY, dan panggil API dari backend. Produk Validasi Rekening tercatat di tier Free pada katalog.

Langkah 1: bagaimana mengambil daftar bank untuk dropdown?

Panggil GET /v1/rekening/banks untuk mendapatkan kode dan nama bank, lalu pakai hasilnya sebagai isi dropdown. Dengan dropdown, pengguna tidak mengetik nama bank sendiri dan backend selalu menerima kode yang valid.

curl -s "https://api.apipedia.id/v1/rekening/banks?q=mandiri" \
  -H "Authorization: Bearer apk_xxx"

Respons nyata untuk pencarian q=mandiri:

{
  "is_success": true,
  "message": "Daftar bank berhasil diambil",
  "data": {
    "jumlah": 2,
    "banks": [
      { "kode": "008", "nama": "Bank Mandiri", "panjang": [13] },
      { "kode": "564", "nama": "Bank Mandiri Taspen", "panjang": null }
    ],
    "catatan": "Pemeriksaan format dan daftar bank, bukan verifikasi nama pemilik rekening."
  }
}

Tanpa parameter q, endpoint ini mengembalikan seluruh daftar, yaitu 101 entri saat artikel ini ditulis. Field panjang berisi panjang nomor yang diterima untuk bank itu. Nilainya null bila bank tersebut tidak punya aturan panjang khusus di data ini. Contoh yang terisi: BRI [15], Mandiri [13], BNI [10], dan BCA [10].

Daftar bank jarang berubah. Ambil sekali saat aplikasi mulai, simpan di cache, lalu sajikan ke form dari cache itu.

Langkah 2: bagaimana memeriksa satu nomor rekening dengan curl?

Kirim bank_code dan account_number sebagai JSON ke POST /v1/rekening/validate. Nomor di bawah adalah contoh fiktif.

curl -s -X POST https://api.apipedia.id/v1/rekening/validate \
  -H "Authorization: Bearer apk_xxx" \
  -H "Content-Type: application/json" \
  -d '{"bank_code": "014", "account_number": "1234567890"}'
{
  "is_success": true,
  "message": "Pemeriksaan format rekening selesai",
  "data": {
    "bank": { "kode": "014", "nama": "Bank Central Asia (BCA)", "panjang": [10] },
    "digits": "1234567890",
    "panjang": 10,
    "valid_format": true,
    "catatan": "Pemeriksaan format dan daftar bank, bukan verifikasi nama pemilik rekening."
  }
}
FieldArti
bankBank yang cocok dengan bank_code, lengkap dengan aturan panjang-nya.
digitsNomor yang diperiksa setelah spasi dan tanda hubung dibuang.
panjangJumlah karakter pada digits.
valid_formattrue bila format lolos, false bila tidak.
catatanPengingat bahwa ini bukan verifikasi nama pemilik.

Seperti apa respons untuk input yang salah?

Nomor yang salah tetap dijawab status 200 dengan valid_format: false, sedangkan kode bank yang tidak dikenal dijawab 404. Kami menguji lima input terhadap kode bank 014 dan satu kode bank asing. Hasilnya:

Enam kartu hasil uji POST /v1/rekening/validate dengan bank_code 014 (BCA): account_number 1234567890 dijawab 200 dengan valid_format true; 123-456 7890 dijawab 200 true dengan digits kembali sebagai 1234567890; 12345 dijawab 200 false karena panjang 5 padahal BCA butuh 10; 12345abcde dijawab 200 false karena bukan angka semua; bank_code 999 dijawab 404 dengan pesan yang mengarahkan ke /v1/rekening/banks. Aturan praktis: baca status HTTP untuk kode bank dan valid_format untuk nomornya.

InputStatusvalid_formatCatatan
014 + 1234567890200true10 digit, sesuai aturan
014 + 123-456 7890200truedigits menjadi 1234567890
014 + 12345200falsepanjang 5, aturan bank 10
014 + 12345abcde200falseMengandung huruf
999 + 1234567890404-Kode bank tidak ditemukan

Respons 404 untuk kode bank asing berbentuk seperti ini:

{
  "is_success": false,
  "message": "Kode bank \"999\" tidak ditemukan. Lihat daftarnya di /v1/rekening/banks.",
  "data": null
}

Langkah 3: bagaimana memasangnya di backend Node.js?

Buat dua fungsi: satu mengambil daftar bank untuk dropdown, satu memeriksa nomor saat form dikirim. Contoh ini berjalan di Node.js 18 ke atas tanpa dependensi tambahan.

const BASE = "https://api.apipedia.id/v1";
const headers = {
  Authorization: `Bearer ${process.env.APIPEDIA_KEY}`, // apk_xxx
  "Content-Type": "application/json",
};

let cacheBank = null;

// Daftar bank untuk dropdown. Cukup diambil sekali, lalu disimpan.
export async function daftarBank() {
  if (cacheBank) return cacheBank;
  const res = await fetch(`${BASE}/rekening/banks`, { headers });
  const body = await res.json();
  if (!body.is_success) throw new Error(body.message);
  cacheBank = body.data.banks.map((b) => ({ kode: b.kode, nama: b.nama }));
  return cacheBank;
}

// Dipanggil saat form pencairan dikirim.
export async function cekRekening(bankCode, accountNumber) {
  const res = await fetch(`${BASE}/rekening/validate`, {
    method: "POST",
    headers,
    body: JSON.stringify({ bank_code: bankCode, account_number: accountNumber }),
  });
  const body = await res.json();

  if (res.status === 404) {
    return { ok: false, pesan: "Bank tidak dikenal. Pilih bank dari daftar." };
  }
  if (!body.is_success) throw new Error(`HTTP ${res.status}: ${body.message}`);

  const { bank, digits, panjang, valid_format } = body.data;
  if (!valid_format) {
    const aturan = bank.panjang ? ` ${bank.nama} memakai ${bank.panjang.join(" atau ")} digit.` : "";
    return { ok: false, pesan: `Nomor rekening tidak sesuai format (${panjang} karakter).${aturan}` };
  }
  // Simpan versi yang sudah dirapikan, bukan ketikan mentah pengguna.
  return { ok: true, bankCode: bank.kode, bankNama: bank.nama, nomor: digits };
}

console.log(await cekRekening("014", "123-456 7890"));
console.log(await cekRekening("014", "12345"));
console.log(await cekRekening("999", "1234567890"));

Fungsi cekRekening memisahkan tiga keadaan: bank tidak dikenal, format salah, dan format lolos. Saat lolos, yang disimpan adalah digits, sehingga nomor di database Anda tidak lagi berisi spasi atau tanda hubung.

Langkah 4: bagaimana contoh yang sama di Python?

Di Python, kirim JSON dengan requests lalu baca status HTTP dan valid_format. Polanya sama dengan versi Node.js.

import os

import requests  # pip install requests

BASE = "https://api.apipedia.id/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['APIPEDIA_KEY']}"}  # apk_xxx


def cek_rekening(bank_code, account_number):
    res = requests.post(
        f"{BASE}/rekening/validate",
        headers=HEADERS,
        json={"bank_code": bank_code, "account_number": account_number},
        timeout=10,
    )
    body = res.json()

    if res.status_code == 404:
        return {"ok": False, "pesan": "Bank tidak dikenal. Pilih bank dari daftar."}
    if not body.get("is_success"):
        raise RuntimeError(f"HTTP {res.status_code}: {body.get('message')}")

    data = body["data"]
    if not data["valid_format"]:
        return {"ok": False, "pesan": f"Format nomor rekening {data['bank']['nama']} tidak sesuai."}
    return {"ok": True, "bank_code": data["bank"]["kode"], "nomor": data["digits"]}


if __name__ == "__main__":
    for bank, nomor in [("014", "1234567890"), ("014", "12345abcde"), ("999", "1234567890")]:
        print(bank, nomor, "->", cek_rekening(bank, nomor))

Apa batas pemeriksaan ini?

Pemeriksaan ini hanya menjawab "apakah nomornya berbentuk benar", bukan "apakah rekeningnya ada dan milik orang ini". Verifikasi nama pemilik butuh akses ke sistem kliring bank, dan gateway ini tidak memilikinya. Nomor yang lolos belum tentu ada.

Karena itu, perlakukan valid_format: true sebagai saringan pertama. Tetap tampilkan ringkasan bank dan nomor ke pengguna untuk dikonfirmasi, dan ikuti prosedur verifikasi yang berlaku di bisnis Anda sebelum dana dikirim.

Kesalahan umum apa yang perlu dihindari?

Kesalahan paling sering adalah menganggap status 200 sebagai tanda lolos. Periksa juga hal-hal berikut.

  • Hanya membaca is_success. Nilainya true walau formatnya salah. Keputusan ada di valid_format.
  • Menganggap lolos berarti rekening ada. API ini tidak mengecek keberadaan rekening maupun nama pemiliknya.
  • Mengirim nama bank, bukan kodenya. bank_code harus berupa kode dari /rekening/banks, misalnya "014".
  • Mengirim kode sebagai angka. Kode seperti 008 kehilangan nol di depan bila dikirim sebagai angka. Kirim sebagai string.
  • Menyimpan ketikan mentah. Simpan digits dari respons agar format di database seragam.
  • Memanggil dari browser. Kunci apk_xxx akan terbaca siapa pun. Panggil dari backend.
  • Mengambil daftar bank di setiap kunjungan. Simpan di cache, karena daftar ini jarang berubah.

Kode status yang perlu ditangani

StatusArtiTindakan
200Pemeriksaan selesaiBaca valid_format
400Parameter atau body tidak validBaca message, yang menyebut field bermasalah
401Token tidak ada, tidak dikenal, atau kedaluwarsaPeriksa header Authorization
403Kunci tidak punya scope untuk endpoint iniUbah scope kunci di halaman Token
404Kode bank tidak ditemukanMinta pengguna memilih bank dari daftar

Pertanyaan yang sering diajukan

Apakah API ini bisa mengecek nama pemilik rekening?

Tidak. API ini memeriksa format nomor dan daftar kode bank saja. Verifikasi nama pemilik membutuhkan akses ke sistem kliring bank yang tidak dimiliki gateway ini.

Apakah nomor yang lolos pasti rekening yang aktif?

Belum tentu. valid_format: true hanya berarti nomornya berupa angka dengan panjang yang sesuai untuk bank tersebut. Rekeningnya bisa saja tidak ada.

Kenapa field panjang bernilai null untuk banyak bank?

Data ini hanya menyimpan aturan panjang khusus untuk sebagian bank, seperti BRI, Mandiri, BNI, dan BCA. Untuk bank lain, API memeriksa bahwa nomornya berupa angka dengan panjang yang wajar.

Apakah nomor dengan spasi atau tanda hubung ditolak?

Tidak. Pada uji kami, 123-456 7890 dirapikan menjadi 1234567890 di field digits dan lolos. Nomor yang mengandung huruf dijawab valid_format: false.

Apakah API validasi rekening ini gratis?

Produk Validasi Rekening tercatat di tier Free pada katalog APIPedia. Buat kunci di menu Token API pada konsol untuk mulai mencoba.

Langkah berikutnya: coba di konsol

Form pencairan yang rapi cukup butuh dropdown bank dari /rekening/banks dan satu pemeriksaan POST /v1/rekening/validate di backend. Buat kunci di console.apipedia.id, jalankan contoh curl di atas, lalu pasang fungsi cekRekening di handler form Anda.

Untuk melengkapi alur verifikasi mitra, baca juga API OCR KTP untuk membaca e-KTP dan memeriksa NIK. Bila asisten AI Anda perlu memeriksa rekening, ikuti panduan menghubungkan APIPedia ke Claude lewat MCP.

Topik:

Tentang penulis

Tim APIPedia — Tim Engineering APIPedia

Tim engineering di balik APIPedia yang membangun dan memelihara API data Indonesia - ongkir, OCR KTP, data wilayah, BMKG, hingga server MCP - dan menulis panduan integrasinya dari pengalaman langsung.