Menu

Struktur IBAN dan pemeriksaan mod-97

Struktur IBAN terbagi menjadi kode negara, dua digit pemeriksa ISO, dan BBAN. Pahami peran mod-97 serta batas tegas dari hasil pemeriksaannya.

Diterbitkan

  • data uji
  • IBAN
  • digit pemeriksa

Struktur IBAN dibangun dari tiga bagian yang punya peran berbeda, dan justru karena itu pemeriksaannya tidak bisa disederhanakan menjadi satu aturan tunggal. Dua bagian pertama mengikuti kesepakatan internasional, sedangkan bagian ketiga mengikuti kebiasaan masing-masing negara. Halaman ini memaparkan pembagian tersebut, menjelaskan gagasan di balik perhitungan mod-97, dan menegaskan apa yang sebenarnya bisa disimpulkan dari sebuah hasil pemeriksaan.

IBAN terdiri dari bagian apa saja?

Secara garis besar, sebuah IBAN tersusun dari kode negara di bagian depan, dua digit pemeriksa yang mengikuti standar internasional, lalu deretan karakter sisanya yang disebut BBAN. Bagian ketiga inilah yang paling beragam, karena panjang dan susunan internalnya ditentukan oleh masing-masing negara, bukan oleh standar internasional.

Akibat pembagian itu, tidak ada satu pola panjang yang dapat dipakai untuk semua negara. Sebuah pemeriksaan yang menuntut jumlah karakter tertentu akan menerima nomor dari satu negara dan menolak nomor dari negara lain yang sama-sama benar. Kesalahan semacam ini sering tidak terlihat pada data uji yang semuanya berasal dari satu negara, lalu muncul begitu sistem dipakai lintas batas.

Tabel berikut merangkum ketiga bagian tersebut beserta siapa yang menentukan isinya.

Bagian Isi Yang menentukan
Kode negara Penanda negara atau wilayah Kesepakatan internasional
Digit pemeriksa ISO Dua digit hasil perhitungan Standar internasional yang sama untuk semua
BBAN Identitas rekening tingkat nasional Setiap negara menurut aturannya sendiri

Kode negara dan dua digit pemeriksa ISO

Dua lambang pertama memberi tahu dari negara mana nomor itu berasal. Karena daftar kode negara sudah baku dan tidak berubah-ubah, bagian ini dapat dipakai untuk memilah aturan mana yang perlu diterapkan selanjutnya. Tanpa pemilahan itu, sistem harus menebak, dan tebakan seperti itu hampir selalu berakhir dengan penolakan yang salah.

Dua digit berikutnya adalah hasil perhitungan yang mengikat seluruh sisa nomor. Keduanya tidak membawa makna lain di luar itu. Kehadirannya memungkinkan pemeriksaan dilakukan tanpa menghubungi bank mana pun, karena kecocokan antara kedua digit tersebut dan sisa nomor dapat dihitung ulang oleh siapa saja.

Perlu dicatat bahwa kedua digit itu bukan pengenal negara dan bukan pengenal bank. Mereka hanya angka hasil perhitungan, sehingga dua nomor dari negara yang berbeda bisa saja memuat digit pemeriksa yang sama. Membaca makna dari nilai keduanya adalah kekeliruan yang cukup sering terjadi.

Mengapa BBAN kadang menyimpan digit pemeriksa nasional

Sejumlah negara menambahkan pemeriksaan internal di dalam BBAN. Artinya, sebuah IBAN dapat tunduk pada dua aturan sekaligus: aturan internasional yang mengikat seluruh nomor, dan aturan nasional yang hanya mengikat bagian dalamnya. Ketika keduanya diperiksa, hasilnya bisa berbeda, dan perbedaan itu justru informasi yang berguna.

Bila pemeriksaan internasional lolos tetapi pemeriksaan nasional gagal, kesimpulannya bukan sekadar salah. Kesimpulan yang tepat adalah bagian dalamnya tidak konsisten, dan itulah yang perlu disampaikan kepada pengguna. Sebaliknya, bila pemeriksaan internasional gagal, memeriksa bagian nasional biasanya tidak lagi berguna karena kesalahannya berada di lapis yang lebih luar.

Karena itu, alat yang baik menyebutkan aturan mana yang gagal, bukan hanya menyatakan nomor tidak sah. Keterangan tentang lapis yang gagal mengubah pesan galat dari tuduhan menjadi petunjuk perbaikan.

Mengganti huruf menjadi angka: gagasan di balik mod-97

Gagasan di balik mod-97 dapat dijelaskan tanpa menyalin langkah-langkah baku. Karena nomor ini memuat huruf, seluruh hurufnya perlu diubah lebih dahulu menjadi deretan angka menurut aturan tetap. Setelah itu, urutan bagian nomor diatur ulang, lalu keseluruhan deretan diperlakukan sebagai satu bilangan besar yang diambil sisanya terhadap sembilan puluh tujuh.

Sisa bagi terhadap sembilan puluh tujuh dipilih karena memberi daya beda yang lebih besar daripada modulus kecil. Semakin banyak nilai sisa yang mungkin, semakin banyak pola salah ketik yang dapat dipisahkan. Untuk nomor panjang yang memuat banyak karakter, kemampuan membedakan itu jauh lebih berharga daripada kecepatan perhitungan.

Yang tidak perlu dilakukan pembaca adalah menghafal urutan langkahnya. Yang penting dipahami adalah sifatnya: perhitungan ini bersifat terbuka dan tidak memakai kunci rahasia. Karena itu ia berguna untuk memeriksa kewajaran, tetapi tidak dirancang untuk menahan pihak yang sengaja menyusun nomor.

Seluruh contoh yang dipakai untuk menerangkan gagasan ini adalah deretan rekaan yang dibuat khusus untuk keperluan penjelasan. Tidak satu pun menunjuk rekening yang benar-benar ada di bank mana pun, dan kecocokan hasil hitungnya tidak boleh dianggap sebagai bukti bahwa sebuah rekening dapat dipakai.

Kalau lolos pemeriksaan, apakah rekeningnya pasti ada?

Tidak. Lolosnya pemeriksaan hanya berarti deretan karakter itu konsisten dengan digit pemeriksanya sendiri. Pertanyaan tentang apakah rekening benar-benar dibuka, siapa pemiliknya, apakah statusnya masih aktif, dan apakah ia dapat menerima kiriman dana berada di luar jangkauan perhitungan ini sepenuhnya.

Jawaban atas pertanyaan-pertanyaan itu hanya dapat diperoleh melalui pencarian ke daftar resmi, dan pencarian semacam itu bergantung pada pihak lain yang bisa saja tidak tersedia saat dibutuhkan. Karena sifatnya berbeda, dua jenis pemeriksaan ini sebaiknya tidak digabung dalam satu pesan yang sama.

Bagi tim pengujian, pembedaan ini sangat berguna. Nomor dengan bentuk yang benar dapat dipakai untuk mencoba jalur sukses, sedangkan nomor yang digit pemeriksanya sengaja dirusak dipakai untuk mencoba pesan galat. Keduanya bisa dibuat secara lokal tanpa menyentuh data siapa pun.

Untuk pengembang: panjang yang berbeda dan pemilahan per negara

Jangan menuliskan aturan panjang sebagai satu angka tetap. Susunlah tabel yang memetakan kode negara ke aturan masing-masing, lalu pilih aturan itu setelah dua lambang pertama dibaca. Dengan cara ini, penambahan negara baru hanya berarti menambah baris data, bukan mengubah alur pemeriksaan.

Pisahkan pula hasil menjadi beberapa keadaan yang jelas. Keadaan pertama adalah kedua lapis pemeriksaan terpenuhi. Keadaan kedua adalah pemeriksaan internasional gagal. Keadaan ketiga adalah pemeriksaan internasional lolos tetapi aturan nasional tidak terpenuhi. Keadaan keempat adalah kode negaranya tidak punya aturan yang dikenal, sehingga hanya bentuk umum yang bisa dipastikan.

Keadaan keempat sering diperlakukan keliru sebagai penolakan. Padahal nomor dari negara yang belum tercakup bukan berarti salah; ia hanya belum bisa diperiksa lebih jauh. Alat validasi nomor memisahkan keadaan-keadaan itu agar pengguna tidak menerima kesimpulan yang terlalu keras. Bila Anda ingin melihat bagaimana panjang yang berbeda diurus pada skema lain, bandingkan dengan pembahasan aturan nomor identitas tiap negara.

Untuk masukan, sediakan langkah normalisasi yang membuang spasi dan merapikan bentuk huruf sebelum apa pun dihitung. Tanpa langkah itu, nomor yang ditulis dengan spasi akan diperlakukan sebagai nilai yang berbeda dari nomor yang sama tanpa spasi.

Periksa panjang sebelum menjalankan perhitungan. Karena pemeriksaan mod-97 bekerja atas seluruh deretan karakter sekaligus, satu lambang yang hilang atau berlebih akan muncul sebagai kegagalan perhitungan, padahal sebab sebenarnya adalah panjang yang tidak sesuai. Melaporkan panjang lebih dahulu membuat pesan kepada pengguna menunjuk pada perbaikan yang benar.

Simpan aturan panjang per negara sebagai data yang dapat diperbarui, bukan sebagai deretan kondisi di dalam kode. Berkas data seperti itu dapat ditinjau oleh orang yang tidak membaca program, dan penambahannya tidak menuntut penerbitan ulang perangkat lunak.

Langkah lanjutan

Mulailah dengan menyusun tabel negara beserta aturan panjang masing-masing, lalu uji dengan satu contoh benar dan satu contoh yang sengaja dirusak untuk tiap baris. Setelah itu, bandingkan dengan pembahasan keluarga algoritma digit pemeriksa untuk memahami mengapa modulus besar dipilih pada nomor panjang. Untuk skema yang tidak menerbitkan algoritma apa pun, lanjutkan ke penjelasan tentang nomor tanpa digit pemeriksa. Ketika menyusun berkas ujinya, catatan konsistensi bidang membantu menjaga keselarasan antar bidang.

Lanjut membaca

Artikel tentang Validator NIK