Skip to content

Instantly share code, notes, and snippets.

@mperlet
Created April 5, 2017 08:28
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mperlet/f912b1e57d058bd1b07d78ed13de1f23 to your computer and use it in GitHub Desktop.
Save mperlet/f912b1e57d058bd1b07d78ed13de1f23 to your computer and use it in GitHub Desktop.
Python IBAN Checker
# Based on http://codereview.stackexchange.com/questions/135366/python-iban-validation
import string
def is_iban(unchecked_iban):
LETTERS = {ord(d): str(i) for i, d in enumerate(string.digits + string.ascii_uppercase)}
def _number_iban(iban):
return (iban[4:] + iban[:4]).translate(LETTERS)
def generate_iban_check_digits(iban):
number_iban = _number_iban(iban[:2] + '00' + iban[4:])
return '{:0>2}'.format(98 - (int(number_iban) % 97))
def valid_iban(iban):
return int(_number_iban(iban)) % 97 == 1
return generate_iban_check_digits(unchecked_iban) == unchecked_iban[2:4] and valid_iban(unchecked_iban)
@mperlet
Copy link
Author

mperlet commented Apr 5, 2017

Generate a valid german IBAN

  german_blz = ['13061088', '37040044', '12030900', '50110300', '26580070', '10220600', '51010800', '51040038', '60069315', '87050000', '66050101', '52360059', '60480008', '76220073', '10050020', '35080070', '36070024', '65461878', '65341204', '60069927', '45451060', '22140028', '42860003', '46080010', '46650005', '63020086', '50210144', '55190064', '69051725', '54070024', '37062124', '28030300', '52065220', '67230000', '47840065', '74062786', '70169474', '70220200', '28062740', '47250101', '72150000', '78020070', '73369871', '59320087', '86040060', '60069462', '77140061', '27070042', '53250000', '28321816', '47261603', '20730033', '23052750', '46010111', '50080087', '61340079', '70169530', '77069868', '10031000', '26560625', '40363433', '18055000', '20730018', '62050000', '50210181', '27092555', '50040048', '20730040', '36040060', '70120100', '75061168', '21751230', '70169558', '72170024', '70040070', '26280020', '50040038', '59291200', '47460028', '37069627', '58540035', '65090100', '49461323', '28562297', '25070024', '45060009', '50690000', '61161696', '63080015', '32051996', '72051210', '15050500', '42451220', '60035810', '35080089', '50210184', '71050000', '33040310', '39570061', '55020100', '50210163', '50110400', '70010500', '70220000', '20069786', '41041000', '41460116', '70169331', '28250110', '37069331', '38011007', '70031000', '51410800', '66069103', '67220286', '28040046', '16010300', '36240045', '50040075', '82054052', '50320900', '20069641', '50092200', '86080055', '37080040', '50250200', '70169351', '44020090', '66662155', '36020186', '67291700', '79580099', '81052000', '53051396', '79568518', '29172624', '38011008', '60090700', '76069440', '26562490', '14091464', '26770024', '60069553', '20040020', '55033300', '54040042', '74369088', '70013000', '50580085', '30520037', '52090611', '35640064', '48070024', '32470024', '80053762', '50080080', '63240016', '82064188', '86050000', '58580074', '29050101', '70013400', '70093200', '85095164', '50510164', '29020200', '72021876', '63220090', '79668509', '41670030', '37069720', '33040001', '23062124', '42870077', '85020500', '60050009', '51691500', '52064156', '51230800', '26522319', '20730023', '30080038', '40022000', '51010400', '52070024', '20040062', '36060192', '50870005', '10000000', '67070010', '72069274', '51961515', '68052230', '26891484', '10050999', '69251755', '87040000', '70169602', '12030000', '35211012', '70015000', '10070100', '50510178', '70169543', '51310111', '37070000', '50561315', '56290000', '28570024', '20730001', '49051990', '75069110', '15050100', '32070024', '37060993', '50510135', '54051990', '50210111', '38070059', '13061008', '79589402', '44090920', '28069755', '16060122', '50510179', '50510170', '60350130', '50510153', '50850150', '52070012', '37020090', '30060010', '50210173', '74350000', '85060000', '70169356', '30070024', '66270024', '75069081', '28421030', '77060100', '25069270', '84094754', '59010019', '50060412', '71152570', '70220300', '37570024', '10220500', '38010700', '80020087', '59391200', '72030227', '45660029', '35070024', '25193331', '37540050', '50661639', '54663270', '30080087', '69440060', '25069262', '70169596', '55020500', '44040085', '47240047', '59010020', '64191700', '68070024', '76040060', '50510140', '60069795', '70012000', '41061011', '13010111', '26880063', '51211000', '20070024', '74165013', '48010111', '77322200', '75360011', '38011000', '23070700', '20730003', '67040060', '69020190', '25050055', '42870024', '73440048', '57263015', '50570018', '50330300', '51080085', '62020000', '50510148', '62250030', '67010111', '76090613', '78050000', '60069544', '23064107', '71020072', '87096214', '50020200', '75090900', '87055000', '79161499', '50080300', '69050001', '12080000', '50050999', '52420600', '66051220', '54750010', '59392000', '48089350', '40154530', '75080003', '50592200', '83053030', '60069639', '10010424', '68052863', '37069355', '50093400', '73120075', '49440043', '49061510', '74366666', '29165545', '52062200', '72051840', '74290100', '75090500', '44000000', '58668818', '22191405', '70090500', '59291000', '73150000', '76591000', '59010028', '59190200', '46461126', '54250010', '72069043', '36010043', '50230400', '56250030', '28069878', '26971024', '66091200', '66251434', '31060517', '70020570', '73380004', '76089482', '52069103', '80020086', '77050000', '70010080', '87095934', '20000000', '37040060', '50080057', '60069950', '46070024', '74151450', '70011110', '50334400', '29250150', '23089201', '25471024', '75050000', '32460422', '51861616', '65091300', '70070024', '76069441', '72169218', '48262248', '10060198', '50060414', '20080000', '60069538', '60069476', '72020700', '76069552', '21042076', '79000000', '60661906', '30010700', '50021100', '36570024', '60450050', '12070088', '52069013', '69240075', '36010424', '45061524', '60080086', '37050198', '24151005', '30080041', '67050505', '69470039', '60069976', '68090622', '61060500', '51089410', '26989221', '60080000', '55190000', '75051565', '50042500', '70012300', '52051877', '33060616', '46261822', '76069559', '37020200', '86010111', '66562300', '82010111', '70013100', '74161608', '66190000', '32250050', '70051003', '50073024', '36036000', '30080080', '58570048', '74250000', '70020800', '37010111', '50851952', '74069758', '25770024', '50970004', '77340076', '60080085', '70169568', '26340056', '62220000', '70040045', '10040005', '77069764', '54862500', '70010555', '21290016', '66640035', '67090617', '49040043', '39010111', '50510169', '21070020', '72069181', '21741825', '45861617', '74160025', '70169538', '21840078', '49490070', '37069330', '18062678', '33080085', '34040049', '59010041', '70080056', '85050100', '48070045', '50210141', '27090618', '41661504', '41670024', '21451205', '27070041', '50510167', '50790000', '41280043', '35451460', '52061303', '79069090', '85080085', '20050550', '26851410', '52411010', '56270044', '50190000', '50662669', '52050000', '52270012', '38060186', '70090606', '30020700', '57460117', '46660022', '77069044', '76240011', '36080080', '65191500', '66391200', '55010625', '66470035', '84054040', '60069442', '86080000', '86065483', '54691200', '62062215', '66070024', '33080086', '37080088', '76040061', '52069149', '35070030', '66291300', '50970024', '78340091', '70169521', '60069766', '81070024', '55080065', '26661380', '10030600', '45250035', '37069427', '44550045', '79520070', '70110088', '42070024', '20030700', '28065108', '50692100', '38011006', '51080060', '66492700', '77150000', '15061638', '37080093', '79567531', '40080085', '50230600', '60069669', '72069308', '59010038', '40069371', '79069181', '54670095', '60090300', '80055008', '60069680', '20730027', '20010424', '26051450', '46250049', '12040000', '70030300', '50020700', '50040099', '74361211', '67090000', '20080091', '40069362', '60069417', '27893760', '10077777', '87095899', '30080095', '34280032', '35850000', '70169693', '85040000', '67092300', '54062027', '49060127', '61091200', '61262258', '74364689', '77069739', '50080086', '79032038', '80063598', '59040000', '23070710', '28000000', '29121731', '40166800', '50510130', '80053572', '50038800', '71150000', '50110800', '68490000', '55091200', '75240000', '76032001', '60069545', '50130100', '68050101', '30150200', '38260082', '26740044', '72069002', '50210166', '10080006', '73190000', '10040060', '26070072', '69091200', '54270096', '20120100', '59010034', '25471073', '76069576', '20069111', '50210143', '64050000', '80063648', '37080099', '10050500', '50093000', '60060893', '15051732', '47262626', '82051000', '25991528', '69270024', '16040000', '29152300', '50210112', '58660101', '50761333', '74369704', '57069144', '26061291', '25990011', '28064241', '35090300', '68080031', '51430321', '77300000', '25410200', '42610112', '26770095', '53261342', '51430345', '87065918', '46251630', '86020500', '50961312', '37010699', '25070086', '52420000', '60040060', '79062106', '77069782', '72169380', '40010111', '72250160', '52060410', '70169382', '25863489', '26566939', '64150020', '47852760', '12070070', '37069342', '20730022', '42861387', '60090800', '26521703', '72050101', '83050303', '50030010', '80063678', '27072736', '75091400', '27040080', '55340041', '54091700', '28063526', '21392218', '20041133', '21464671', '50691300', '20730030', '50069477', '37069164', '52240006', '28062913', '60020290', '75261700', '66062366', '25791635', '54020090', '76060000', '54620093', '76551540', '72000000', '50070010', '44750065', '50210132', '74351310', '24180000', '38440016', '30120500', '22150000', '48062051', '20190003', '38011001', '58662653', '80054000', '40153768', '67270024', '83094454', '64090100', '35060190', '73322380', '49070024', '51190000', '20310300', '30080086', '61170024', '51250000', '57762265', '26720028', '59010021', '60069896', '57069806', '52090000', '37010050', '44152370', '46062817', '60070070', '50880050', '68391500', '73369918', '50020500', '20750000', '25090300', '70120600', '72170007', '42640048', '53050180', '70169476', '67290100', '15000000', '60069798', '79350101', '50510180', '25970074', '79665540', '79351730', '51151919', '38070024', '50083838', '74369662', '80063628', '26570024', '37089340', '47860125', '50210189', '70169186', '60270024', '62091400', '70169450', '25090900', '41661719', '26341072', '74391300', '23050101', '60069527', '10070848', '60651070', '51762434', '25260010', '25040066', '28061410', '51170010', '46670007', '59010012', '50510138', '74050000', '24070024', '60069235', '28020050', '50510177', '79666548', '50780006', '74369146', '57080070', '40069348', '37030200', '81063028', '67352565', '21010111', '30030100', '60030700', '75069171', '24140041', '50510146', '66650085', '60320291', '65370075', '70020270', '74391400', '65180005', '39580041', '54891300', '55361202', '50080055', '50210188', '77069906', '71120077', '26640049', '70017000', '72021271', '44050199', '25069370', '57092800', '10310600', '68092300', '20210200', '28022015', '70051805', '40080040', '47853520', '61491010', '60080088', '30080088', '73061191', '37040037', '28067170', '38050000', '48021900', '65362499', '50520190', '50070024', '54240032', '87052000', '28090633', '50510134', '67240039', '58761343', '50210153', '66490000', '76350000', '37011000', '50761613', '28069994', '25480021', '41062215', '50810900', '21741674', '10050006', '41662557', '46050001', '50110801', '44361342', '37070024', '39080005', '51230500', '77069091', '36040061', '60000000', '51210700', '40069462', '21763542', '50210138', '26551540', '50750094', '71062802', '50210155', '55390000', '74220075', '84069065', '68350048', '30080022', '30560090', '50090200', '29152670', '25841708', '36540046', '60391420', '55080085', '78040081', '37069833', '55040060', '79069150', '59190000', '50110636', '30080074', '28022620', '34270094', '52410300', '50061741', '39020000', '55090500', '59010023', '50510127', '63050000', '70220800', '26010111', '76550000', '15091704', '70169470', '60080055', '60120200', '79066082', '37069429', '50320600', '60130100', '20730024', '31080061', '86080085', '60069904', '75070013', '50090500', '48020151', '28450000', '40164618', '50210139', '49051285', '45261547', '51570008', '65310111', '37069125', '60069564', '50820292', '50040086', '10090300', '20190206', '45840026', '25850110', '50040084', '40166439', '82057070', '70011900', '66261092', '68062730', '30040063', '72191600', '70120400', '10110600', '72069329', '64191030', '26040030', '70169413', '21661719', '35010111', '25151371', '25861395', '58560294', '25010030', '54851440', '76260451', '85590100', '27070043', '25470024', '70322192', '50862703', '10040000', '84080000', '76069486', '46441003', '30040048', '30130800', '37069381', '74369068', '80050500', '72050000', '66662220', '52062601', '77091800', '85020086', '60670070', '60670024', '51861325', '28069109', '50210161', '28069991', '51230502', '28066214', '64161956', '64091200', '57020086', '17020086', '25861990', '20730007', '70350000', '75051040', '51010111', '25950001', '25055500', '69291000', '30010111', '50510125', '50510131', '46640018', '20130400', '26691213', '46040033', '54861190', '76069601', '28061679', '51220800', '60069346', '53093255', '69051410', '25090500', '30080055', '68090000', '59052020', '83020088', '46070090', '34051350', '27089221', '79340054', '86055002', '26589210', '28021705', '70011700', '37080085', '13070000', '30089300', '51390000', '55190050', '60361923', '13070024', '65440087', '28065286', '25621327', '72220074', '57051870', '26570090', '48000000', '65093020', '79090000', '67051203', '25010424', '25851660', '27020000', '50210130', '20120000', '59392200', '87070024', '76069564', '47260234', '53261202', '29290034', '55010400', '59010014', '59010035', '25971024', '72069135', '37020400', '50210185', '10050007', '79020076', '30030900', '80040000', '70050000', '48040035', '58691500', '74390000', '51090636', '70169132', '80063508', '64140036', '40060000', '21090900', '57062675', '60069224', '68061505', '20730035', '46251590', '60020300', '60133300', '48050161', '52053458', '65140072', '70040041', '26870024', '45070002', '29265747', '28563749', '50080025', '70321194', '50069241', '72030014', '27010111', '69440007', '51140029', '41262501', '67262243', '44580070', '25780022', '37570064', '50030100', '71180005', '79069213', '50510121', '66270001', '79364406', '39050000', '60069738', '37070060', '22151730', '74051230', '50510175', '28069138', '74180009', '50570024', '60420186', '20040048', '66261416', '26750001', '24121000', '79030001', '64291420', '86055462', '66440084', '82094004', '54790000', '57020301', '36280071', '50020400', '26971038', '51070021', '55190088', '59010027', '70120700', '50510163', '21520100', '36089321', '29162394', '37021400', '66010200', '52010111', '50040052', '26661912', '74062490', '52051555', '84054722', '64070085', '70130799', '72069789', '40069546', '38010999', '50650023', '20069130', '40061238', '21000000', '37069354', '40350005', '23080040', '24040000', '50010200', '71023173', '36570049', '60069066', '70010111', '64161608', '50120900', '45251515', '24050110', '87096034', '41262621', '33440035', '60069420', '37030700', '44060604', '13051042', '26563960', '87020086', '79069165', '50852651', '76026000', '60069724', '38160220', '70169388', '79510111', '50010060', '56070024', '30080053', '50020800', '66061724', '66020286', '70091500', '70160300', '40351060', '78055050', '59092000', '68051207', '76069404', '16050202', '10045050', '28520009', '76032000', '50220900', '31261282', '52410310', '49080025', '50050000', '87080000', '21080050', '79061000', '33080088', '67089440', '82056060', '51380040', '70080088', '49061298', '73090000', '79161058', '62063263', '84050000', '64040033', '29166568', '60069431', '61290120', '17062428', '66492600', '21241540', '50010700', '62091800', '44060122', '70110600', '72069119', '36270024', '62080012', '79069188', '74150000', '26520017', '63091300', '50861393', '33070024', '51091500', '53260145', '50320000', '50670009', '59050101', '66040018', '71162355', '50510165', '64240071', '74020074', '37069577', '28069956', '82052020', '86095484', '20080095', '60010070', '86080086', '50130600', '51220400', '76050101', '39070024', '10050008', '73369859', '14080000', '71142041', '50210179', '51990000', '68270033', '51050015', '63091200', '70169653', '14051462', '82020088', '10040010', '73460046', '75090629', '61450050', '75069061', '26590025', '20069965', '68052328', '78330111', '55060831', '60069905', '21270020', '50210186', '37551780', '50210142', '51861403', '70169383', '60060202', '79069001', '26000000', '61180004', '70169524', '60069302', '79330111', '28069930', '60062909', '40069709', '20080087', '26661494', '25462680', '76089480', '50763319', '76090900', '60069158', '53280081', '53061313', '61170076', '37060590', '42010111', '66610111', '72169246', '36020030', '60410600', '50670024', '39162980', '41260006', '86095554', '50130200', '29070051', '72070024', '77069556', '59010042', '47000000', '50863513', '72030260', '41660124', '73369954', '76450000', '10080089', '50510155', '57069081', '51230801', '79650000', '29040061', '60020030', '26500000', '70040062', '30030889', '60462808', '51410600', '50127000', '61361975', '66010111', '50510152', '26552286', '51150018', '59010048', '60031000', '66061407', '28521518', '63080085', '38450000', '44040060', '50210154', '69450065', '26062433', '60069206', '38077724', '60080087', '50320500', '20040040', '40055555', '41050095', '70040060', '58564788', '10090603', '26870032', '79363151', '20069882', '20069989', '65050110', '21510600', '57069727', '51650045', '70166486', '51352227', '37069153', '83094494', '27020800', '50661816', '72069132', '87095824', '87053000', '66280053', '50961685', '10010010', '46061724', '70190000', '76080055', '28280012', '50861501', '25040060', '54050220', '50210295', '50210147', '50230100', '21852310', '74064593', '57060612', '47260307', '80053622', '25190088', '50400000', '70169195', '50890634', '26090050', '40340030', '68091900', '65390120', '29000000', '74120071', '72012300', '79063122', '50210131', '50060400', '86000000', '28320014', '43010111', '72040046', '86033300', '40069477', '28069773', '55040022', '25250001', '80053000', '37050299', '47260121', '21580000', '27070024', '60069239', '59010400', '72151340', '70080057', '10070024', '36250000', '50330600', '76551860', '50080061', '86010424', '87069075', '47863373', '34250000', '40069283', '58650030', '46462271', '28270024', '73420071', '20230600', '70012400', '61240048', '70022200', '60069457', '73369264', '69291099', '76360033', '36050105', '59091800', '66069104', '50060413', '30220190', '50663699', '74040082', '50040005', '67390000', '54570094', '30080083', '30530000', '22180000', '70090100', '13061028', '53340024', '41051605', '20040005', '10090900', '59070070', '70230600', '50030000', '73331700', '65070024', '24151116', '21740043', '50210168', '51380085', '60261818', '69070024', '51550035', '60069343', '26271424', '60691440', '45251480', '65491510', '50230000', '36270048', '53262455', '38080055', '66680013', '41462295', '20030133', '21051580', '76090500', '70080087', '50950068', '62290110', '50530000', '60070024', '71151020', '20090602', '61191310', '64261853', '81020500', '50852553', '31060181', '60030200', '84030111', '70380006', '78360000', '66391600', '20080092', '29050000', '20730011', '74240062', '50190400', '60250010', '28066103', '41670027', '50880085', '35251000', '70169605', '69251445', '67461733', '70012600', '50030500', '79540049', '61261339', '58590900', '63290110', '30020900', '85094984', '66060000', '20220800', '79570024', '47267216', '20070000', '28067257', '55060417', '85550000', '33080001', '50510173', '40069266', '27020001', '66080052', '50951469', '87020088', '51961801', '53290000', '86095604', '74061814', '51090000', '70000000', '64070024', '74066749', '25791516', '51220910', '41652560', '86050600', '20730021', '31062553', '75020073', '50089400', '72069034', '85590000', '52051373', '72090900', '30080000', '49061470', '70390000', '44040061', '71152680', '50210152', '82070024', '70169466', '68390000', '10080088', '79570051', '70051540', '81000000', '47262703', '54561310', '72069036', '61050000', '50210162', '60030100', '70012100', '53040012', '65351050', '77069836', '50040050', '33020000', '20020500', '22280000', '25891483', '20040050', '20730019', '60060000', '60069648', '59090626', '62040060', '44351380', '10110300', '26851620', '64080014', '29030400', '21090619', '48070052', '72169756', '20010111', '65080009', '54661800', '59010047', '65392030', '21770024', '14080011', '50210148', '25970024', '26050001', '43051040', '28070057', '58651240', '50330500', '66050000', '53060180', '69091600', '70040048', '86040000', '40060300', '28022511', '57069361', '64380011', '33050000', '66010700', '13040000', '21890022', '38011003', '50210172', '50310455', '50510174', '16050000', '81093274', '49092650', '60069595', '37080090', '25862292', '48051580', '21092023', '51192200', '10080085', '59010037', '50010517', '15050400', '26251425', '33450000', '47861518', '55061303', '63091010', '50069455', '20080057', '29165681', '44761534', '62061991', '60069673', '71162804', '50080000', '70030014', '10110400', '55060321', '57010111', '81093034', '83080000', '50961206', '37069805', '40069600', '25641302', '65061219', '79063060', '82094054', '64040045', '37069401', '17092404', '20080055', '68051004', '30351220', '53240048', '27010200', '67291900', '70011300', '31470004', '73369854', '22141428', '50010424', '35860245', '14051362', '62291020', '62280012', '50740048', '52069065', '30050110', '35050000', '49240096', '46451012', '20730017', '68000000', '85095004', '76420080', '50040062', '44160014', '30060992', '64240048', '37069252', '60069817', '51640043', '66432700', '50210200', '25761894', '51091711', '59090900', '82060197', '60069931', '75010111', '10040061', '59351040', '70021180', '35461106', '76069663', '83065408', '70011400', '26261693', '54651240', '67292200', '28222621', '82055000', '76340061', '30040060', '31062154', '21860418', '26650001', '64261626', '87096124', '59010018', '38452490', '28021504', '50080079', '20069782', '50210151', '51230805', '57000000', '59080090', '79065028', '70011600', '70030400', '53370008', '13000000', '39040013', '49051065', '26981062', '20730034', '69491700', '70110500', '40351220', '50069842', '65361989', '38011002', '61420086', '70250150', '66290000', '65092200', '54862390', '35080088', '57069238', '20120200', '28361592', '50025000', '60380002', '39080099', '61120286', '74260110', '50080091', '51161606', '10120100', '40090900', '53064023', '20730012', '76052080', '35040085', '53370024', '16061938', '57363243', '25462160', '28062249', '39550110', '60490150', '71052050', '18092744', '70169566', '70080086', '81054000', '86089280', '54510067', '50130400', '50510172', '74131000', '68452290', '69290000', '52420700', '68462427', '71160161', '33030000', '74369656', '52052154', '70169541', '42662320', '50870024', '70013010', '86080057', '60069485', '81040000', '21280002', '37161289', '86065448', '56240050', '72140052', '79562514', '50510176', '51080086', '83094495', '87069077', '51570024', '50210178', '10040085', '50510168', '14051000', '50862311', '84094814', '50510137', '28065061', '61370024', '70052060', '85080086', '51340013', '21690020', '65380003', '37069302', '73369878', '37069306', '60069017', '70033100', '67040085', '40069363', '65092010', '53361724', '68370034', '82000000', '44340037', '50044444', '59010111', '35060386', '41450075', '26281420', '50080099', '50130000', '67250020', '61490150', '71191000', '60390000', '59010039', '68040007', '58760954', '65462231', '35080085', '66020566', '24060300', '74380007', '30025500', '38651390', '28350000', '50040061', '50640015', '10020500', '18020086', '37551020', '50069146', '54210111', '59390100', '60420000', '62391010', '18092684', '27080060', '75069094', '27070031', '57351030', '57450120', '44350060', '77040080', '56050180', '76035000', '13061078', '70169333', '41250035', '70169191', '70013199', '24191015', '71061009', '46240016', '20730031', '13091054', '40370024', '83094444', '41650001', '30130200', '54680022', '82070000', '56090000', '73451450', '73421478', '76551020', '59010022', '67270003', '75060150', '59010031', '68080086', '10011001', '50510133', '37020900', '70090124', '54550010', '53381843', '20730036', '51220200', '60470082', '41670028', '28069381', '50510132', '32450000', '60491430', '61480001', '72151650', '37062600', '41651815', '28061822', '75021174', '41670029', '58771242', '63070024', '70169575', '76320072', '86050200', '87070000', '61040014', '36060591', '30010444', '17056060', '50330200', '51690000', '52063369', '70150000', '76050000', '21452030', '40165366', '23051030', '39160191', '65450070', '73350000', '25851335', '57020500', '49060392', '72262401', '75069038', '54090000', '77062139', '57069315', '20080089', '77069051', '50230888', '68351865', '87020087', '47861317', '76010111', '17080000', '46260023', '75069055', '76069611', '62062643', '39161490', '54070092', '50040063', '50550020', '51220700', '55190068', '21052090', '28060228', '76391000', '46060040', '52080080', '86065468', '73369851', '10080000', '15040068', '63061486', '10050000', '18080000', '40050150', '68030000', '79069010', '60069350', '75220070', '40154476', '20040063', '50110200', '37080097', '64292020', '70040061', '25980027', '20090700', '64292310', '73370024', '38250110', '51410700', '47880031', '75351960', '30060601', '50040088', '21352240', '34070024', '40060560', '50510145', '50510156', '31251220', '67080050', '55061507', '66670006', '44351740', '32440023', '59010011', '87058000', '54580020', '42850035', '27072524', '70169614', '86055592', '76250000', '10040048', '76060618', '79690000', '27893359', '25069168', '68063479', '50210133', '76069598', '28222208', '60069876', '59010013', '21020600', '70169459', '57391500', '74061101', '42650150', '23092620', '25010600', '50110855', '20040000', '26070024', '76069449', '29250000', '40069622', '47265383', '70011100', '72169080', '50120500', '32061384', '79350000', '76020099', '47670023', '55190094', '28061501', '28023325', '10070000', '86070000', '62251550', '71190000', '58771224', '36010200', '66452776', '75320075', '55080044', '41070049', '70390010', '85055000', '50510139', '28062560', '66670024', '59010024', '29070059', '69362032', '25450001', '50040060', '59010040', '86010090', '75090000', '21050000', '30080085', '25040061', '18040000', '20730013', '40164901', '66020020', '28591579', '37069405', '52069029', '72090500', '79353090', '28062165', '10130600', '10089260', '28240023', '45260041', '21762550', '20730014', '73369821', '69490000', '45841031', '73369826', '28021002', '20730020', '37080089', '67450048', '75069050', '72191300', '52411000', '76061025', '30019000', '69470024', '57070045', '61080006', '50510141', '50123400', '10080086', '20190109', '59010032', '57091000', '41661206', '77061425', '37069322', '50510147', '60069242', '68492200', '64390130', '70080000', '71160000', '20730008', '16020086', '27072724', '15050200', '56062227', '57090000', '50510161', '72091800', '67461424', '21261227', '74392300', '79561348', '29162697', '55050120', '72169111', '70015025', '87065893', '80053722', '37089342', '72169831', '79070024', '44570004', '52080085', '50069693', '54091800', '21240040', '53350000', '29080010', '67080086', '68080030', '48020086', '74290000', '50210140', '30080061', '26351015', '35450000', '14052000', '50080092', '39060630', '45450050', '62020100', '44089320', '59000000', '70040063', '42661717', '51370008', '48070050', '50080082', '25651325', '51020000', '57751310', '21791906', '69250035', '22290031', '45851665', '80055500', '21050170', '27070079', '37080092', '25690009', '36010699', '50210146', '70169168', '10019610', '24180001', '14040000', '33060592', '52410400', '60069710', '25070084', '41070024', '20080086', '70169509', '28064179', '76561979', '42070062', '10040062', '50865224', '50210156', '56070040', '47650130', '20730039', '41261419', '45000000', '30030500', '45040042', '54540033', '85080000', '70010424', '50230700', '60010700', '73391600', '83040000', '54220091', '56061472', '20080085', '55020700', '21750000', '72069209', '50510124', '65351260', '42680081', '60069926', '50890000', '21040010', '37020500', '30020500', '37060120', '40040028', '60062775', '50210174', '20069780', '43080083', '59010066', '57091100', '67080085', '50230800', '76069635', '59350110', '75363189', '70091900', '78160069', '74164149', '10030700', '37560092', '72169745', '20120400', '21540060', '57650010', '13050000', '36010111', '50862408', '64180014', '56051790', '60069325', '40154006', '30330800', '72261754', '58751230', '66562053', '10030400', '79363016', '36080085', '30040062', '52410900', '76069553', '10089999', '28562716', '60261329', '72069235', '20090745', '20730029', '41051845', '54092400', '25470073', '23090142', '37020600', '63070088', '50040040', '62391420', '22240073', '29240024', '25491273', '65391210', '75350000', '44540022', '51420200', '87051000', '44050000', '26941053', '58561250', '66470024', '25971071', '66661244', '84040000', '30520000', '50510154', '67462368', '33010111', '20220400', '61361722', '20020900', '69270038', '80550101', '33080030', '42862451', '55060611', '74320073', '58520086', '28069052', '64251060', '66000000', '43070024', '58560103', '44080057', '16091994', '20110800', '27070030', '50510157', '73369933', '77361600', '25050000', '50090900', '42661330', '20320500', '51430400', '59010025', '71140041', '72069005', '20730004', '35261248', '48040061', '59010029', '26890019', '48040060', '51170024', '76560060', '37040048', '40060265', '46053480', '42861239', '50510149', '70053070', '74061564', '37069303', '70169190', '26660060', '70089472', '41061903', '79069031', '50080015', '60460142', '37000000', '67210111', '60241074', '10061006', '73180011', '50210600', '25010111', '60069517', '50190300', '18051000', '50510171', '76069372', '68340058', '76070024', '27072537', '54850010', '20730015', '51591300', '25151270', '60069842', '65110200', '66661329', '50060474', '21440045', '57069257', '14061308', '59251020', '86069070', '50210134', '77320072', '47270029', '68370024', '55080086', '60089450', '50110900', '58510111', '20090400', '20120600', '59252046', '50131000', '31470024', '64361359', '20030300', '25070070', '74061813', '79550000', '20130600', '54550120', '50040087', '72251520', '20080093', '42080082', '25750001', '45050001', '66010075', '44070050', '29040090', '73392000', '26351445', '50083007', '59010045', '37069412', '46262456', '60090100', '50069126', '70020500', '75062026', '21261089', '24080000', '70051995', '60422000', '38040007', '57070024', '31010833', '50510126', '70120500', '20069232', '71141041', '50069187', '51020186', '57051001', '20040061', '15061698', '21770011', '55010800', '60262693', '67040061', '74351740', '74221170', '38470091', '50862903', '51051000', '58570024', '74369130', '29210111', '76000000', '70013500', '40370079', '20210300', '51420300', '61390140', '26051260', '51191800', '60069336', '12070000', '72160818', '44010111', '79069271', '46051240', '60033000', '26240039', '55020000', '30524400', '50210169', '35650000', '70160000', '77062014', '79069145', '66090621', '30550000', '75290000', '87056000', '65361898', '37080096', '51230555', '55070040', '61262345', '10020200', '50040051', '21841328', '73369881', '82064168', '53380042', '29010111', '80062608', '20133300', '16050101', '42050001', '76069549', '55020600', '77069908', '50030600', '85050200', '20730026', '85065028', '20069815', '30530500', '58561626', '26760005', '27290087', '81070000', '29070058', '35060632', '28022822', '50864322', '64261363', '65190110', '33080087', '36010600', '57761591', '66350036', '70015035', '55020555', '51343224', '20030000', '30560548', '61190110', '69220186', '28590075', '69010111', '54280023', '55350010', '61070078', '86070024', '66692300', '73362421', '59020090', '70030800', '80063718', '68070030', '50210177', '54050110', '27090900', '43060967', '28262254', '28070024', '83050000', '43070061', '50210159', '63000000', '81093044', '76069462', '23000000', '73321177', '51961023', '28270056', '69280035', '72069179', '66661454', '20730025', '50510120', '50865503', '56261735', '50652124', '29172655', '64191210', '74069768', '59010026', '50210176', '75040062', '81080000', '39080098', '60261622', '50510144', '64000000', '53062350', '74020100', '53390635', '24151235', '51220211', '73390000', '60069911', '68310111', '52063550', '50662299', '73140046', '84051010', '55030500', '64250040', '83050505', '77069052', '69451070', '52069519', '45240056', '72069105', '50510143', '72180002', '74069744', '28420007', '68080085', '50120600', '51351526', '77069461', '24150001', '40060614', '77190000', '79050000', '44064406', '59010044', '73369936', '25070077', '80063558', '21390008', '43000000', '25663584', '50080077', '78320076', '30050000', '20730005', '72069155', '46051875', '45851020', '41240048', '70045050', '61370086', '70169571', '76211900', '71122183', '70169402', '59051090', '20010020', '82040000', '28069706', '59099550', '36060488', '85591000', '57391200', '20069812', '50050201', '65062577', '37069707', '45860033', '53070007', '60069308', '71120078', '81069052', '48070020', '47261429', '38470024', '72069220', '76030080', '65020186', '45861434', '22163114', '25840048', '74069752', '79080085', '46063405', '47251740', '65161497', '50793300', '50510123', '23040022', '10040063', '52270024', '22141628', '67060031', '25080085', '75090300', '56020086', '70030111', '81063238', '40154702', '60069251', '66060300', '67070024', '30130100', '66762332', '72069126', '52430000', '84055050', '50080088', '60090133', '57661253', '66250030', '60069505', '28067068', '50580005', '38010053', '30080084', '67230001', '10080055', '25940033', '16050500', '29010400', '30080057', '42861814', '46052855', '76069369', '27131300', '52350005', '28068218', '15091674', '24161594', '50012800', '50040085', '60069705', '64163225', '50120383', '50210800', '50210900', '12070024', '72090000', '73369902', '76069378', '34080031', '17054040', '66069342', '10120800', '30089302', '58561771', '20730006', '47651225', '51300000', '60030666', '48070044', '25080020', '75070024', '81053272', '24061392', '70391800', '72250000', '36580072', '60069075', '37080094', '29167624', '40069601', '86040061', '60340071', '70011500', '62240048', '67262550', '60020100', '74140048', '67020190', '38070724', '50020300', '29090605', '37010600', '76040062', '80093574', '29162453', '50210167', '32080010', '52071224', '72069193', '60390300', '50510159', '28470091', '50510166', '85090000', '20230800', '62070081', '50040000', '59450010', '65070084', '30022000', '57470024', '51420600', '37021300', '76251020', '50510158', '76080053', '20730032', '75069020', '70080085', '76351040', '26250001', '20730028', '37030800', '74261024', '79565568', '60050101', '28262673', '70169165', '60069706', '30040005', '27062290', '25691633', '74090000', '29090900', '60040061', '50092900', '68090900', '70169465', '57069067', '28069128', '51861806', '51230802', '21090007', '52060208', '67040031', '37021100', '44152490', '46464453', '70054306', '70320090', '15080000', '41261324', '20060000', '64091300', '32070080', '26261492', '39540052', '25591413', '79040047', '37069642', '31070024', '49450120', '75069014', '50210300', '50210170', '10080900', '51091700', '31070001', '70169599', '30150001', '21791805', '21570024', '53080030', '40150001', '51220900', '48070042', '37040061', '35660599', '22141028', '50080060', '52420300', '73340046', '55030533', '74067000', '60069419', '26562694', '79364069', '30010400', '41040018', '65063086', '75069062', '26662932', '86020086', '64290120', '51191200', '40361906', '50023400', '27070034', '55010424', '70169598', '79351010', '25060000', '47862447', '68092000', '51580044', '60069860', '26261396', '72169812', '60290110', '50510162', '73480013', '25410111', '60069461', '50880086', '20730009', '51752267', '60440073', '17052000', '29190024', '31080015', '25050299', '36060295', '38462135', '60069685', '25451345', '51540037', '20069144', '26540070', '71121176', '77030111', '28252760', '29089210', '20690500', '30030600', '70169410', '77120073', '70089470', '10080087', '46051733', '40070024', '20090500', '65091600', '20090900', '20080088', '31050000', '52071212', '80550200', '28069935', '50522222', '59010033', '44570024', '13080000', '50021000', '87000000', '28022412', '37062365', '20089200', '28063253', '50310900', '51070024', '44080055', '50862835', '54261700', '59010015', '66451862', '85000000', '73351635', '21089201', '79320075', '25650106', '44761312', '20730037', '38011005', '63010111', '75362039', '60270073', '28042865', '36033300', '50330000', '59050000', '28440037', '12050555', '40160050', '77069746', '50010900', '60010424', '72010111', '53062035', '77069870', '78060896', '73160000', '76040065', '29262722', '64350070', '72223182', '66451548', '53270012', '52260385', '60391310', '66040026', '60030900', '50021120', '61150020', '48291490', '50680002', '76230000', '50047010', '30040061', '69061800', '60291120', '30160213', '65062793', '79010111', '77065141', '50120000', '66390000', '57361476', '50090607', '76061482', '79090624', '50210145', '41651965', '50840005', '83064568', '74092400', '12090640', '29190330', '21270024', '65361469', '40070080', '18062758', '25551480', '50210164', '50210160', '76080040', '31040015', '50210182', '35451775', '40164024', '26061556', '50020000', '77390000', '82040085', '25770069', '36060610', '10030500', '51350025', '66020500', '71021270', '76069602', '73311600', '73369920', '57470047', '25190001', '30080089', '38011004', '44080085', '52060400', '72069123', '70020300', '26567943', '72080001', '76520071', '84064798', '40050000', '50080035', '59010049', '40163720', '51370024', '72290100', '39570024', '85089270', '23050000', '69051620', '63040053', '87095974', '10090000', '50850049', '14061438', '27240004', '44580085', '50510151', '58661901', '20069800', '37069840', '50324000', '66340018', '67290000', '68290000', '60069378', '64161397', '30110300', '30000000', '39061981', '50560102', '50680085', '13090000', '29040060', '83064488', '51210699', '58550130', '66062138', '73370008', '26565928', '25740061', '25950130', '60069455', '76069448', '20730002', '70035000', '71165150', '25120510', '74191000', '76090400', '51210600', '60060396', '83020087', '50040033', '70169464', '64061854', '26620010', '55160195', '85010500', '50510160', '76030600', '40069606', '47251550', '59393000', '37069472', '20030600', '45080060', '68491500', '76070012', '22250020', '81055000', '45451555', '23061220', '59091500', '60663084', '68351557', '79070016', '12096597', '16062008', '61070024', '50864808', '67280051', '68020186', '74020150', '41662465', '57391800', '29020000', '42840005', '21463603', '26621413', '44070024', '28550000', '32040024', '74190000', '51180041', '71051010', '59010036', '37080091', '45051485', '46451250', '72169764', '37060193', '20069861', '72062152', '66451346', '45850005', '41440018', '50010111', '37069524', '39362254', '42651315', '55040061', '87054000', '54290000', '54080021', '50210150', '60069245', '59070000', '28050100', '50073081', '50060000', '74061670', '60069463', '54640035', '54520194', '67362560', '28069926', '36000000', '50110700', '70070010', '50033300', '25450110', '29070024', '47691200', '65370024', '28290063', '48060036', '70163370', '50210165', '54030011', '10130800', '32060362', '42661008', '51230600', '67462480', '28570092', '47850065', '77363749', '55150098', '25090608', '61281007', '77061004', '39070020', '42861608', '81050555', '70013155', '21565316', '47640051', '42030600', '57662263', '50220200', '59010016', '70015015', '50320191', '65162832', '81055555', '20069125', '80080000', '50050222', '10050005', '40069226', '54051550', '50835800', '57020600', '57461759', '47840080', '74251020', '20040060', '47861806', '49050101', '23063129', '25069503', '21340010', '25541426', '37069991', '50120100', '34270024', '60069858', '60262063', '79190000', '79590000', '70169619', '50110500', '33070090', '68270024', '76069409', '72122181', '85080200', '28220026', '40069716', '30130600', '69400000', '70220900', '41451750', '50210187', '54270024', '53262073', '30040000', '28021906', '56270024', '46261607', '28063607', '39560201', '36070050', '45260475', '50069345', '81010111', '20020200', '37013030', '82064228', '50310400', '18050000', '75390000', '33451220', '42461435', '43250030', '73050000', '26951311', '76330111', '64262408', '47263472', '75340090', '76069468', '40164352', '25020200', '29280011', '17055050', '47270024', '61261213', '75000000', '79362081', '32470077', '25910111', '15061618', '81093054', '10120600', '50092100', '29020100', '82020086', '74351430', '26840032', '50510122', '50060415', '32061414', '50220085', '41010111', '42861515', '50069976', '70010570', '70169310', '37069639', '76020070', '65040073', '71161964', '36040039', '66291400', '26080024', '30080082', '30070010', '37080086', '44040037', '42040040', '60040071', '64020186', '20069177', '29070052', '50093010', '26991066', '22181400', '70362595', '60080057', '79080052', '73369823', '25841403', '34050000', '37080087', '50961592', '50210183', '76080085', '25491744', '66090900', '75069015', '25152375', '10010111', '40361627', '31040060', '40069408', '51430300', '10020510', '51210800', '35080086', '50590000', '35080087', '35040038', '53061230', '20041111', '34051570', '20110022', '10020520', '85050300', '38020090', '41663335', '63090100', '37080095', '46670024', '48070043', '55050000', '31040061', '20730038', '66030600', '74340077', '26850001', '33060098', '23010111', '70093400', '25891636', '70133300', '85040061', '28291551', '27190082', '54670024', '25089220', '57060000', '34240050', '28470024', '52250030', '68010111', '69070032', '57050120', '60030000', '76069512', '53093200', '27893215', '60010111', '64291010', '28540034', '62090100', '56061151', '60069714', '64190110', '66090800', '44080050', '50210212', '65491320', '77020070', '21051275', '70169585', '68064222', '71090000', '37551440', '83050200', '37063367', '21070024', '16010111', '31460290', '82020087', '47862261', '70169576', '72070001', '76010085', '81068106', '82050000', '30551240', '83020086', '41060120', '72069736', '20190800', '26271471', '50060411', '50210137', '25152490', '21450000', '60470024', '66762433', '50230300', '57090900', '60120500', '21210111', '73450000', '37060615', '48250110', '10080057', '20120700', '44551210', '74369709', '61440086', '85040060', '20030400', '24090041', '13061128', '80093784', '43050001', '73320073', '29152550', '12060000', '28591654', '66070004', '67460041', '36550000', '68351976', '10033300', '50794300', '66491800', '20190301', '76461485', '20050000', '48062466', '70169460', '82080000', '40164256', '70025175', '65091040', '28066620', '60069355', '50220500', '72069113', '76069410', '38621500', '28562863', '66240002', '31263359', '25010900', '47670024', '49262364', '45070024', '43040036', '61030000', '51210801', '26350001', '63250030', '72152070', '76080086', '82064038', '50540028', '24162898', '76069669', '50210136', '66550070', '50510150', '38010900', '55010111', '55190028', '36210111', '76460015', '48070040', '17040000', '16080000', '60090609', '50210175', '70169493', '59010017', '24070075', '30080081', '29070050', '59491300', '69040045', '76030800', '30080005', '20730010', '75250000', '25440047', '27020004', '27032500', '76351560', '33020190', '10080005', '16062073', '26550105', '50510128', '50000000', '28021623', '70011200', '25000000', '70032500', '21570011', '60069147', '84020087', '50031000', '20110700', '26510111', '28021301', '25070066', '55362071', '50210171', '37069103', '32050000', '74362663', '40030000', '51361021', '72151880', '37069520', '50210149', '50010910', '13091084', '50510136', '20080094', '37069521', '54500000', '62091600', '50324040', '71022182', '38010111', '77350110', '78161575', '50210135', '38650000', '60069387', '52060000', '38051290', '70130800', '10070124', '25060180', '70012200', '21480003', '34060094', '57040044', '42260001', '50210158', '12016836', '60030600', '65340004', '43060129', '20041144', '51230400', '68062105', '77069110', '47264367', '78350000', '40164528', '50080089', '50234500', '50510111', '41651770', '20230300', '61391410', '77069042', '66450050', '10030200', '25050180', '61140071', '34070093', '52040021', '20730016', '27020003', '55080088', '74065782', '72069114', '53270024', '70351030', '54690623', '37069101', '39060180', '55061907', '73191500', '72020070', '60050000', '54061650', '25020600', '75061851', '36040085', '77365792', '37080098', '72069263', '50210157', '17052302', '55070024', '31010111', '37160087', '55020486', '70130700', '60069980', '79380051', '55000000', '30030880', '60069303', '10020890', '50510129', '54570024', '75069078', '28069092', '48080020', '28069293', '50030700', '42450040', '70091600', '60090900', '77390628', '82064088', '53070024', '20220100', '72120078', '72169013', '20041155', '25662540', '28010111', '54291200', '60069832', '11010100', '28023224', '50073019', '55190065', '51850079', '52050353', '57064221', '44010046', '22190030', '62070024', '47853355', '66690000', '78140000', '49070028', '29151700', '50210180', '60069727', '50510142', '54051660']

while True:
    iban = "DE{check}{blz}{ran}".format(check=random.randint(11,99), blz=random.choice(german_blz), ran=random.randint(1111111111,9999999999))
    if is_iban(iban):
        print(iban)
        break

@mperlet
Copy link
Author

mperlet commented Apr 5, 2017

def generate_valid_iban():
    import random, string

    def is_iban(unchecked_iban):

        LETTERS = {ord(d): str(i) for i, d in enumerate(string.digits + string.ascii_uppercase)}

        def _number_iban(iban):
            return (iban[4:] + iban[:4]).translate(LETTERS)

        def generate_iban_check_digits(iban):
            number_iban = _number_iban(iban[:2] + '00' + iban[4:])
            return '{:0>2}'.format(98 - (int(number_iban) % 97))

        def valid_iban(iban):
            return int(_number_iban(iban)) % 97 == 1

        return generate_iban_check_digits(unchecked_iban) == unchecked_iban[2:4] and valid_iban(unchecked_iban)

    def bank_ck(ktn):

        ktn = list(map(lambda x: int(x), ktn))[::-1]
        generator = [2, 3, 4, 5, 6, 7, 8, 9, 3]
        rest = sum(map(lambda x: x[0] * x[1], zip(generator, ktn))) % 11
        if rest == 1:
            return 0
        if rest == 0:
            return 0
        return 11 - rest


    while True:
        blz = "13050000"
        ktnr = str(random.randint(111111111, 999999999))
        ktnr = "{}{}".format(ktnr, bank_ck(ktnr))
        iban = "DE{check}{blz}{ran}".format(check=random.randint(11, 99), blz=blz, ran=ktnr)
        if is_iban(iban):
            print(iban)
            break
    return iban

@datamo-lorenz
Copy link

it doesn't account for valid ISO2 country names

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment