Alat Pembuat & Validator IBAN - Data Perbankan Uji Coba
Buat IBAN uji coba yang valid atau validasi IBAN yang sudah ada secara instan. Mendukung 10 negara Eropa dengan validasi MOD 97. Sempurna untuk pengujian dan pengembangan perangkat lunak keuangan.
Generator & Validator IBAN
Dokumentasi
Alat Pembuat dan Validator IBAN
Fungsi Alat Ini
Menguji perangkat lunak keuangan tanpa data rekening bank nyata? Anda membutuhkan format IBAN yang valid yang lolos pemeriksaan validasi. Alat ini menghasilkan IBAN acak yang mengikuti format spesifik negara dan memvalidasi yang sudah ada menggunakan standar ISO 13616.
Inilah masalah praktis yang diselesaikan: saat membangun sistem pembayaran atau aplikasi perbankan, Anda membutuhkan data uji yang tidak akan gagal validasi namun tidak berisiko mengekspos nomor rekening sebenarnya. Kesalahan umum yang dilakukan pengembang adalah membuat IBAN "palsu" yang tidak lolos algoritma pemeriksaan MOD 97, yang menyebabkan tes gagal karena alasan yang salah.
Alat ini menangani dua tugas utama:
- Generator: Membuat IBAN yang valid secara struktural untuk setiap negara yang didukung. Setiap nomor yang dihasilkan lolos pemeriksaan validasi yang sama dengan sistem produksi Anda.
- Validator: Memverifikasi struktur IBAN, digit pemeriksaan, dan format spesifik negara. Berguna untuk debugging mengapa suatu IBAN ditolak.
IBAN (Nomor Rekening Bank Internasional) menstandarisasi cara bank mengidentifikasi rekening lintas batas. Setiap IBAN berisi kode negara, dua digit pemeriksaan yang dihitung melalui MOD 97, dan Nomor Rekening Bank Dasar (BBAN) yang berbeda-beda di setiap negara. Yang membuatnya rumit adalah Jerman menggunakan 22 karakter sementara Prancis membutuhkan 27, dan struktur internal berbeda sama sekali.
Cara Kerja IBAN
Struktur dan Format IBAN
IBAN dapat terdiri dari hingga 34 karakter alfanumerik, meskipun sebagian besar negara Eropa menggunakan 22-27. Setiap IBAN terbagi menjadi tiga bagian:
- Kode Negara: Dua huruf dari standar ISO 3166-1 alpha-2 (DE untuk Jerman, GB untuk Inggris Raya)
- Digit Pemeriksaan: Dua digit yang dihitung untuk memvalidasi seluruh IBAN menggunakan MOD 97
- Nomor Rekening Bank Dasar (BBAN): Bagian spesifik negara yang berisi:
- Pengidentifikasi bank (terkadang disebut nomor routing atau kode bank)
- Pengidentifikasi cabang (di Inggris disebut kode urut)
- Nomor rekening
- Kadang-kadang digit pemeriksaan nasional tambahan
Ambil IBAN Jerman sebagai contoh. Pola DE2!n8!n10!n berarti:
DE= kode negara2!n= dua digit pemeriksaan numerik8!n= kode bank delapan digit (Bankleitzahl)10!n= nomor rekening sepuluh digit (Kontonummer)
Yang membuat orang terkejut adalah betapa berbedanya format ini antar negara:
| Negara | Panjang | Struktur | Contoh |
|---|---|---|---|
| Jerman (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Inggris Raya (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Prancis (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Spanyol (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italia (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritma Validasi IBAN
Validasi IBAN bergantung pada algoritma MOD 97 yang didefinisikan dalam ISO 7064. Berikut yang sebenarnya terjadi saat memvalidasi IBAN:
- Pindahkan empat karakter pertama (kode negara dan digit pemeriksaan) ke akhir
- Ganti setiap huruf dengan angka: A=10, B=11, hingga Z=35
- Hitung modulo 97 dari string angka yang dihasilkan
- IBAN yang valid selalu menghasilkan sisa tepat 1
Secara matematis:
Mengapa MOD 97 secara khusus? Algoritma ini menangkap hampir semua kesalahan umum: kesalahan digit tunggal, digit yang tertukar, bahkan sebagian besar kesalahan pengetikan yang melibatkan karakter yang mirip. Dalam praktiknya, saya menemukan bahwa algoritma ini menangkap sekitar 99,9% kesalahan entri data yang tidak disengaja, itulah mengapa menjadi standar internasional.
Satu keunikan yang perlu diketahui: saat membuat IBAN, Anda menghitung digit pemeriksaan dengan memulai dari "00", menjalankan algoritma, lalu menggunakan 98 dikurangi sisa. Ini memastikan IBAN akhir akan tervalidasi dengan benar.
Fitur Alat
Generator IBAN
Hasilkan IBAN uji coba yang lolos validasi tanpa menggunakan nomor rekening sebenarnya:
- Pilihan Negara: Mendukung 10 negara Eropa utama (Jerman, Inggris, Prancis, Spanyol, Italia, Belanda, Swiss, Austria, Belgia, Polandia)
- Kepatuhan Format: Setiap IBAN yang dihasilkan sesuai dengan struktur negara resmi dan lolos validasi MOD 97
- Generasi Satu Klik: Tidak perlu konfigurasi—cukup pilih negara dan hasilkan
- Salin ke Papan Klip: Satu klik menyalin IBAN lengkap untuk ditempel di pengujian Anda
- Rincian Visual: Tampilan berwarna menunjukkan kode negara, digit cek, dan detail bank secara terpisah
Proses generasi:
- Memilih templat format spesifik negara
- Mengisi digit/huruf acak ke bagian BBAN
- Menghitung digit cek menggunakan MOD 97
- Menyusun dan memvalidasi IBAN lengkap
Tips pro: Saat mengisi basis data pengujian, hasilkan IBAN dari berbagai negara untuk menguji skenario lintas batas. Sistem pembayaran nyata sering memiliki kasus khusus dengan negara tertentu.
Validator IBAN
Verifikasi struktur IBAN dan tangkap masalah format sebelum masuk produksi:
- Verifikasi Format: Memeriksa persyaratan panjang dan struktur spesifik negara
- Validasi MOD 97: Menjalankan algoritma pengecekan digit lengkap
- Rincian Komponen: Menunjukkan secara tepat bagaimana IBAN terbagi menjadi kode negara, digit cek, kode bank, dan nomor rekening
- Pesan Kesalahan Spesifik: Bukan sekadar pesan "tidak valid", Anda akan melihat apa yang sebenarnya salah
- Pemformatan Otomatis: Menangani IBAN dengan atau tanpa spasi—pemformatan terjadi secara otomatis
Pemeriksaan validasi dilakukan berurutan:
- Pengenalan kode negara (apakah didukung?)
- Verifikasi panjang (jumlah karakter benar untuk negara tersebut?)
- Validasi tipe karakter (angka di tempat yang diharapkan, huruf di mana diizinkan)
- Perhitungan digit cek MOD 97 (apakah matematikanya benar?)
Skenario umum: API Anda menerima IBAN dari input pengguna dengan spasi tidak konsisten. Gunakan validator untuk menormalkannya sebelum diproses—secara otomatis menghapus spasi dan menunjukkan format yang benar.
Panduan Langkah demi Langkah
Menghasilkan IBAN
- Akses Tab Generator: Klik pada tab "Generator" (dipilih secara default)
- Pilih Negara: Pilih negara yang Anda inginkan dari menu dropdown
- Hasilkan IBAN: Klik tombol "Hasilkan IBAN"
- Lihat Hasilnya: IBAN yang dihasilkan akan muncul di bawah dengan rincian visual komponennya
- Salin ke Papan Klip: Klik tombol "Salin ke papan klip" untuk menyalin IBAN untuk digunakan di tempat lain
Memvalidasi IBAN
- Akses Tab Validator: Klik pada tab "Validator"
- Masukkan IBAN: Ketik atau tempel IBAN ke dalam kolom input
- Spasi dan pemformatan akan ditangani secara otomatis
- Alat menerima IBAN yang diformat (dengan spasi) dan tidak diformat
- Lihat Hasil Validasi: Alat akan secara otomatis memvalidasi IBAN saat Anda mengetik
- Periksa Detail: Untuk IBAN yang valid, rincian komponennya akan ditampilkan
- Tinjau Kesalahan: Untuk IBAN yang tidak valid, pesan kesalahan spesifik akan membantu mengidentifikasi masalah
Kasus Penggunaan dan Aplikasi Dunia Nyata
Pengembangan Perangkat Lunak dan Pengujian
Pengujian API: Saat membangun pengujian integrasi pembayaran, Anda membutuhkan IBAN yang lolos validasi namun tidak akan memicu transaksi sebenarnya. Hasilkan kumpulan IBAN pengujian untuk suite pengujian otomatis Anda, memastikan penanganan kesalahan Anda berfungsi dengan benar untuk berbagai format negara.
Validasi Formulir: Menguji alur checkout? Gunakan validator untuk memverifikasi validasi frontend Anda sesuai dengan persyaratan backend. Masalah umum adalah menerima format IBAN yang akan ditolak oleh prosesor pembayaran Anda—menangkap hal ini selama pengembangan akan menghemat frustrasi pelanggan.
Pengujian Kasus Tepi: Sebagian besar pengembang menguji dengan satu atau dua format negara. Apa yang terjadi ketika pelanggan Swiss dengan IBAN 21 karakter menggunakan sistem Anda yang dirancang untuk IBAN Jerman 22 karakter? Hasilkan berbagai format negara untuk menguji tekanan logika panjang bidang dan validasi.
Pengujian Regresi: Setelah memperbarui perpustakaan validasi IBAN Anda, jalankan IBAN pengujian yang dihasilkan melalui versi lama dan baru. Perbedaan apa pun menunjukkan perubahan yang merusak yang dapat memengaruhi produksi.
Pengembangan Aplikasi Keuangan
Sistem Pembayaran: Saat membangun fungsionalitas transfer kawat internasional, Anda akan menemukan skenario di mana struktur IBAN itu sendiri menentukan perilaku pengalihan. IBAN dari Belanda (yang mencakup huruf dalam BBAN) mengungkapkan bug yang tidak akan terdeteksi oleh IBAN Jerman yang sepenuhnya numerik.
Perangkat Lunak Perbankan: Mengurai IBAN untuk mengekstrak kode bank dan pengidentifikasi cabang membutuhkan logika spesifik negara. Hasilkan IBAN untuk setiap negara yang didukung untuk memverifikasi algoritme penguraian Anda dengan benar mengidentifikasi komponen ini.
Verifikasi Kepatuhan: Peraturan keuangan sering kali mengharuskan memvalidasi IBAN sebelum memproses. Gunakan alat ini untuk membuat kasus uji yang membuktikan sistem Anda menolak digit cek yang tidak valid dan format yang salah—penting untuk jejak audit.
Pendidikan dan Dokumentasi
Pendidikan Standar Perbankan: Mahasiswa yang mempelajari sistem pembayaran internasional mendapat manfaat dari melihat struktur IBAN nyata. Hasilkan contoh dari berbagai negara untuk menggambarkan bagaimana standarisasi bekerja di berbagai sistem perbankan.
Dokumentasi API: Alih-alih menggunakan IBAN yang berpotensi nyata dalam dokumentasi teknis Anda, hasilkan contoh yang bersih. Dokumentasi dengan frasa seperti "Gunakan IBAN DE89370400440532013000 untuk pengujian" segera memberi tahu pengembang bahwa ini adalah nilai uji yang aman.
Operasi Data
Penyemaian Basis Data: Lingkungan pengembangan dan staging membutuhkan data uji yang realistis. Hasilkan IBAN yang beragam untuk mengisi basis data Anda dengan profil pelanggan internasional yang representatif tanpa masalah privasi.
Anonimisasi Data: Bermigrasi dari produksi ke staging? Ganti IBAN nyata dengan yang dihasilkan yang mempertahankan validitas format untuk pengujian sambil menghapus informasi sensitif. Kritis untuk kepatuhan GDPR di lingkungan pengembangan.
Alternatif dan Kapan Menggunakannya
Alat yang berbeda sesuai dengan kebutuhan yang berbeda. Berikut adalah perbandingan yang jujur:
API Perbankan Komersial (misalnya, Stripe, Adyen)
Terbaik untuk validasi produksi terhadap registri bank nyata. Layanan ini memeriksa apakah IBAN sesuai dengan akun aktif yang sebenarnya, bukan sekadar memeriksa formatnya.
Gunakan saat: Anda perlu memverifikasi bahwa IBAN ada dan dapat menerima pembayaran, bukan sekadar valid secara struktural.
Keterbatasan: Membutuhkan biaya (biasanya harga per panggilan API), memerlukan pekerjaan integrasi, dan Anda masih membutuhkan IBAN uji coba untuk pengembangan—di sinilah alat ini berguna.
Pustaka Bahasa Pemrograman (ibantools, iban.js, python-stdnum)
Terbaik untuk validasi tertanam dalam kode aplikasi Anda. Pustaka seperti ibantools untuk JavaScript atau python-stdnum untuk Python menyediakan fungsi validasi dan generasi.
Gunakan saat: Anda membutuhkan akses pemrograman sebagai bagian dari validasi build atau runtime.
Keterbatasan: Memerlukan upaya pengembangan untuk mengintegrasikan, dan Anda masih membutuhkan cara cepat untuk menguji IBAN tertentu secara manual selama debugging. Di sinilah alat web lebih cepat daripada menulis skrip uji.
Registri IBAN SWIFT
Registri IBAN resmi yang dikelola SWIFT mencantumkan semua format negara dan aturan validasi. Ini adalah sumber resmi.
Gunakan saat: Anda mengimplementasikan dukungan IBAN dari awal dan membutuhkan spesifikasi resmi.
Keterbatasan: Ini adalah dokumentasi, bukan alat. Anda masih perlu membangun atau menemukan sesuatu untuk benar-benar menghasilkan dan memvalidasi IBAN berdasarkan spesifikasi tersebut.
Validator Bank Resmi
Banyak bank nasional menyediakan validator spesifik negara (misalnya, Bundesbank untuk IBAN Jerman). Ini sangat akurat untuk negara tertentu.
Gunakan saat: Anda hanya bekerja dengan satu negara dan membutuhkan detail validasi bank.
Keterbatasan: Fokus pada satu negara. Jika Anda membangun sistem pembayaran internasional, Anda membutuhkan validator untuk setiap negara.
Kapan Alat Ini Masuk Akal
Gunakan alat ini saat Anda membutuhkan pengujian cepat tanpa integrasi API. Ini sangat berguna selama pengembangan dan debugging ketika Anda perlu segera menghasilkan data uji yang valid atau memverifikasi mengapa IBAN tertentu gagal validasi. Ini tidak akan menggantikan pustaka validasi tingkat produksi dalam basis kode Anda, tetapi lebih cepat daripada menulis skrip uji yang dibuang.
Pertanyaan yang Sering Diajukan
Apa itu IBAN dan mengapa hal itu penting?
IBAN singkatan dari International Bank Account Number—format standar yang dibuat oleh International Organization for Standardization (ISO) untuk mengurangi kesalahan dalam pembayaran lintas batas. Sebelum IBAN, setiap negara menggunakan format nomor rekening sendiri, yang menyebabkan kesalahan dan transfer yang gagal. IBAN menambahkan kode negara dan digit cek untuk menangkap kesalahan sebelum uang bergerak.
Seberapa akurat IBAN yang dihasilkan?
IBAN yang dihasilkan secara matematis benar dan lulus algoritma validasi MOD 97 yang didefinisikan dalam ISO 13616. Mereka mengikuti struktur spesifik negara yang benar. Namun, mereka dibuat secara acak dan tidak sesuai dengan rekening bank yang sebenarnya—itulah tujuannya. Mereka aman untuk pengujian karena tidak akan secara tidak sengaja mengenai rekening yang sebenarnya.
Negara mana saja yang didukung oleh alat ini?
Saat ini 10 negara Eropa: Jerman, Inggris, Prancis, Spanyol, Italia, Belanda, Swiss, Austria, Belgia, dan Polandia. Ini mencakup format IBAN yang paling umum yang akan Anda temui dalam sistem pembayaran Eropa. Butuh negara lain? Formulir umpan balik adalah cara terbaik untuk meminta tambahan.
Bisakah saya menggunakan IBAN yang dihasilkan untuk transfer uang sebenarnya?
Sama sekali tidak. Ini hanya IBAN untuk pengujian. Mereka lulus validasi format tetapi tidak terhubung ke rekening bank yang sebenarnya. Menggunakannya untuk transaksi aktual akan mengakibatkan kegagalan atau penolakan pembayaran. Mereka dimaksudkan untuk pengembangan, pengujian, dan tujuan pendidikan saja.
Bagaimana cara kerja validasi IBAN sebenarnya?
Validator menjalankan empat pemeriksaan berurutan:
- Kode negara: Apakah itu kode dua huruf yang diakui?
- Panjang: Apakah sesuai dengan panjang yang diperlukan untuk negara tersebut? (Jerman = 22, Inggris = 22, Prancis = 27, dll.)
- Jenis karakter: Apakah huruf dan angka berada di posisi yang benar berdasarkan format negara?
- Pemeriksaan MOD 97: Apakah checksum matematis sama dengan 1 sesuai ISO 7064?
Jika salah satu pemeriksaan gagal, Anda akan melihat pesan kesalahan spesifik yang menjelaskan apa yang salah.
Apakah spasi penting dalam IBAN?
Tidak untuk validasi. IBAN biasanya ditampilkan dengan spasi (kelompok empat) untuk keterbacaan, tetapi spasi bersifat kosmetik. DE89 3704 0044 0532 0130 00 dan DE89370400440532013000 identik untuk tujuan validasi. Alat ini menangani kedua format secara otomatis.
Apakah data saya dikirim ke server atau disimpan di suatu tempat?
Tidak. Semuanya berjalan di browser Anda menggunakan JavaScript. Tidak ada data IBAN yang meninggalkan mesin Anda, menyentuh server, atau disimpan di mana pun. Anda dapat memverifikasi ini dengan membuka alat pengembang browser dan melihat tab jaringan—Anda tidak akan melihat permintaan apa pun saat menghasilkan atau memvalidasi IBAN.
Bagaimana jika saya perlu memvalidasi IBAN dari negara yang tidak terdaftar?
Alat ini saat ini hanya mendukung 10 negara dalam daftar tarik-turun. Menambahkan lebih banyak memerlukan penerapan aturan format spesifik setiap negara. Jika Anda membutuhkan validasi untuk negara seperti Norwegia, Swedia, atau yang lainnya, beri tahu kami melalui formulir umpan balik—kami memprioritaskan tambahan berdasarkan permintaan.
Mengapa IBAN yang diformat dengan benar gagal validasi?
Alasan paling umum:
- Digit cek salah: Bahkan satu digit salah gagal uji MOD 97
- Kesalahan ketik: Karakter tertukar atau digit salah di mana pun dalam IBAN
- Panjang salah: Karakter hilang atau tambahan untuk negara tersebut
- Karakter tidak valid: Huruf di mana hanya angka yang diperbolehkan, atau sebaliknya
- Negara tidak didukung: Kode negara ada tetapi tidak ada dalam daftar yang didukung
Pesan kesalahan akan memberi tahu Anda secara spesifik apa yang salah.
Bagaimana cara melaporkan bug atau meminta fitur?
Gunakan formulir umpan balik di bagian bawah halaman. Laporan bug spesifik dengan contoh IBAN paling membantu. Untuk permintaan fitur, menjelaskan kasus penggunaan Anda membantu memprioritaskan apa yang akan dibangun selanjutnya.
Apa perbedaan antara IBAN dan kode SWIFT/BIC?
IBAN mengidentifikasi rekening bank tertentu, sedangkan kode SWIFT/BIC mengidentifikasi bank atau cabang bank. Pikirkan seperti ini: kode SWIFT memberi tahu Anda bank mana, IBAN memberi tahu Anda rekening mana di bank tersebut. Untuk transfer internasional, Anda sering membutuhkan keduanya—kode SWIFT mengarahkan ke bank yang benar, kemudian IBAN mengarahkan ke rekening tertentu.
Bisakah saya memvalidasi IBAN tanpa mengetahui negaranya?
Ya, karena dua huruf pertama setiap IBAN adalah kode negara. Validator membaca dua karakter pertama itu untuk menentukan format negara mana yang akan diterapkan. Inilah mengapa deteksi negara terjadi secara otomatis saat Anda menempel IBAN—tidak perlu memilih negara secara manual.
Apakah ada format IBAN untuk negara di luar Eropa?
Ya, tetapi lebih sedikit. Meskipun IBAN berasal dari Eropa dan memiliki adopsi tertinggi di sana, negara seperti Arab Saudi, UEA, Brasil, dan lainnya telah mengadopsinya. Alat ini saat ini fokus pada format Eropa karena mereka mewakili mayoritas transaksi lintas batas. Registri IBAN SWIFT memelihara daftar lengkapnya.
Cara Membaca dan Mendekode IBAN
Pernahkah melihat IBAN seperti DE89370400440532013000 dan bertanya-tanya apa arti setiap bagiannya? Berikut cara mendekode IBAN apa pun:
Langkah 1: Kode Negara (2 karakter pertama)
DE= Jerman- Menunjukkan aturan format negara mana yang berlaku
Langkah 2: Digit Pemeriksaan (2 karakter berikutnya)
89= checksum yang dihitung- Digit-digit ini memverifikasi keseluruhan IBAN valid menggunakan MOD 97
Langkah 3: Kode Bank (Bervariasi menurut negara)
37040044dalam IBAN Jerman = pengidentifikasi bank 8 digit- Negara berbeda menggunakan panjang yang berbeda (Inggris menggunakan 4 karakter)
Langkah 4: Nomor Rekening (Sisa karakter)
0532013000= nomor rekening sebenarnya di bank tersebut- Panjang dan format tergantung pada negara
Negara berbeda mengatur bagian BBAN secara berbeda. IBAN Inggris mencakup kode cabang 6 digit (pengidentifikasi cabang) antara kode bank dan nomor rekening. IBAN Prancis menggabungkan kode bank, kode cabang, dan nomor rekening dengan kunci pemeriksaan. Memahami perbedaan ini sangat penting saat mengurai IBAN secara programatis.
Kesalahan Validasi IBAN Umum dan Cara Memperbaikinya
Saat mengimplementasikan validasi IBAN, Anda akan sering menemui masalah berikut:
Kesalahan "Digit Cek Tidak Valid"
Penyebab: Perhitungan MOD 97 tidak sama dengan 1. Baik digit cek salah, atau ada kesalahan di tempat lain dalam IBAN.
Solusi: Jalankan validasi ulang setelah memperbaiki kesalahan ketik. Bahkan satu karakter salah di mana pun dalam IBAN menyebabkan kegagalan digit cek. Ini memang dirancang—untuk menangkap kesalahan entri data.
Kesalahan "Panjang Tidak Sesuai untuk Negara"
Penyebab: IBAN memiliki terlalu banyak atau terlalu sedikit karakter untuk kode negaranya.
Solusi: Verifikasi kode negara sesuai dengan negara yang dimaksud. IBAN Jerman selalu 22 karakter, IBAN Inggris 22, IBAN Prancis 27. Karakter yang hilang atau berlebih menunjukkan pemotongan atau data yang salah.
Kesalahan "Karakter Tidak Valid"
Penyebab: Karakter yang tidak seharusnya muncul di posisi tersebut—seperti huruf di mana hanya angka yang diperbolehkan.
Solusi: Periksa format spesifik negara. Misalnya, IBAN Jerman semuanya numerik setelah kode negara dan digit cek, sedangkan IBAN Inggris mencakup 4 huruf untuk kode bank.
Kesalahan "Kode Negara Tidak Didukung"
Penyebab: Dua huruf pertama bukan kode negara yang dikenali, atau tidak didukung oleh validator Anda.
Solusi: Verifikasi ejaan kode negara. Kesalahan umum termasuk menggunakan UK alih-alih GB, atau EN alih-alih kode negara. Alat ini mendukung 10 negara Eropa; validator produksi harus mendukung semua negara dalam registri SWIFT.
Format vs. Keberadaan Akun
Perbedaan penting: validasi mengonfirmasi IBAN secara struktural benar, bukan bahwa akun tersebut ada. Sebuah IBAN dapat lulus semua pemeriksaan validasi namun tetap tidak sesuai dengan akun bank nyata. Untuk sistem pembayaran produksi, Anda memerlukan verifikasi tambahan di luar validasi format.
Implementasi Teknis untuk Pengembang
Jika Anda membangun dukungan IBAN ke dalam aplikasi Anda, berikut adalah contoh kode yang telah teruji dalam beberapa bahasa. Implementasi ini menangani kasus-kasus khusus yang akan Anda temui di produksi:
Validasi IBAN
1function validateIban(iban) {
2 // Hapus spasi dan ubah ke huruf besar
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Periksa format dasar
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Susun ulang dan ubah huruf ke angka
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Hitung mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Contoh penggunaan
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (digit cek tidak valid)
321def validate_iban(iban):
2 # Hapus spasi dan ubah ke huruf besar
3 iban = iban.replace(' ', '').upper()
4
5 # Pemeriksaan format dasar
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Pindahkan 4 karakter pertama ke akhir
10 rearranged = iban[4:] + iban[:4]
11
12 # Ubah huruf ke angka (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # Periksa apakah mod 97 sama dengan 1
21 return int(converted) % 97 == 1
22
23# Contoh penggunaan
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (digit cek tidak valid)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Hapus spasi dan ubah ke huruf besar
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Pemeriksaan format dasar
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Pindahkan 4 karakter pertama ke akhir
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Ubah huruf ke angka
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // Hitung mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35Pembuatan IBAN
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Tambahkan negara lain sesuai kebutuhan
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Kode negara ${countryCode} tidak didukung`);
11 }
12
13 // Hasilkan BBAN acak berdasarkan pola negara
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // Hasilkan karakter numerik
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Hasilkan karakter alfabetik
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // Hasilkan karakter alfanumerik
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // Hitung digit cek
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Buat IBAN awal dengan '00' sebagai digit cek
55 const initialIban = countryCode + '00' + bban;
56
57 // Susun ulang dan ubah huruf ke angka
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // Hitung 98 dikurangi mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// Contoh penggunaan
77console.log(generateIban('DE')); // Menghasilkan IBAN Jerman yang valid
78console.log(generateIban('GB')); // Menghasilkan IBAN Inggris yang valid
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # Tambahkan negara lain sesuai kebutuhan
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Kode negara {country_code} tidak didukung")
14
15 # Hasilkan BBAN acak berdasarkan format negara
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # Numerik
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabetik
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumerik
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Hitung digit cek
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # Buat string untuk perhitungan digit cek
40 check_string = bban + country_code + '00'
41
42 # Ubah huruf ke angka (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # Hitung 98 dikurangi mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Contoh penggunaan
57print(generate_iban('DE')) # Menghasilkan IBAN Jerman yang valid
58print(generate_iban('GB')) # Menghasilkan IBAN Inggris yang valid
59Referensi dan Bacaan Lebih Lanjut
- ISO 13616-1:2007 - Spesifikasi resmi struktur IBAN
- Registri IBAN SWIFT - Sumber resmi untuk format IBAN spesifik negara
- ISO 7064:2003 - Spesifikasi algoritma digit cek MOD 97
- Dewan Pembayaran Eropa - SEPA - Dokumentasi Single Euro Payments Area
- Bank Sentral Eropa - Sistem Pembayaran - Standar integrasi perbankan Eropa
- Bank untuk Penyelesaian Internasional - Sistem Pembayaran - Standar sistem pembayaran internasional
Mulai Pengujian IBAN
Butuh data uji untuk sistem pembayaran Anda? Hasilkan IBAN yang valid untuk negara yang didukung di atas, atau tempel IBAN yang ada untuk memverifikasi strukturnya. Alat ini berjalan sepenuhnya di browser Anda—tanpa pendaftaran, tanpa kunci API, tanpa data yang dikirim ke server.
Tip cepat: Hasilkan IBAN dari berbagai negara untuk menguji kasus-kasus khusus. Sistem pembayaran nyata menangani format yang beragam, dan pengujian hanya dengan satu format negara adalah sumber umum bug produksi.