Skip to content

Instantly share code, notes, and snippets.

@hdf
Created May 29, 2020 13:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hdf/58f613b39ecb56cd85d4e631e0e643fd to your computer and use it in GitHub Desktop.
Save hdf/58f613b39ecb56cd85d4e631e0e643fd to your computer and use it in GitHub Desktop.
Little Python script to validate bank account numbers
import sys
n = sys.argv[1] if len(sys.argv) > 1 else '12001008-00238600-00100004'
n = n.split('-')
m = [9, 7, 3, 1] * 2
banks = {
'100': 'Magyar Államkincstár',
'101': 'Budapest Bank',
'103': 'MKB Bank',
'104': 'K&H Bank',
'107': 'CIB Bank',
'109': 'UniCredit Bank',
'114': 'NHB Növekedési és Hitelbank',
'115': 'Takarékbank',
'116': 'Erste Bank',
'117': 'OTP Bank',
'120': 'Raiffeisen Bank',
'121': 'Gránit Bank',
'128': 'Merkantil Bank',
'131': 'BNP-Paribas Magyarországi fióktelepe',
'135': 'KDB Bank',
'137': 'ING Bank',
'141': 'Sberbank',
'142': 'Commerzbank',
'162': 'MagNet Bank',
'163': 'Magyar Cetelem Bank',
'175': 'Bank of China',
'176': 'Sopron Bank',
'182': 'FHB'
}
acc = 0
for i in range(len(n)):
n[i] = n[i].ljust(8, '0')
for i2 in range(8):
acc += int(n[i][i2]) * m[i2]
print('Account number:', n)
print('Bank:', banks[n[0][0:3]] if n[0][0:3] in banks else 'Unknown Bank', end='')
print(' (For more detailed info about the account, visit: https://www.bankkereso.eu/)')
print('Checksum:', acc)
print('Valid:', (acc % 10 == 0))
if (acc % 10 > 0):
c = 10 - ((acc - int(n[-1][-1])) % 10)
c = c if c < 10 else 0
print('Correct checksum would be:', c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment