From b08b0746e891738a495dc50c4a96229321bf5fb7 Mon Sep 17 00:00:00 2001 From: Tomer Date: Tue, 10 Mar 2026 14:45:37 +0200 Subject: [PATCH 1/4] Added BankAccountNumber --- src/IbanNet/Iban.cs | 5 + src/IbanNet/Registry/IbanCountry.cs | 12 + .../Registry/Swift/SwiftRegistryProvider.cs | 358 +++++++++++++++++- test/IbanNet.Tests/IbanTests.cs | 2 + .../Registry/IbanCountryTests.cs | 3 + .../Swift/SwiftRegistryProviderTests.cs | 1 + 6 files changed, 378 insertions(+), 3 deletions(-) diff --git a/src/IbanNet/Iban.cs b/src/IbanNet/Iban.cs index 05ba544b..6053f9b5 100644 --- a/src/IbanNet/Iban.cs +++ b/src/IbanNet/Iban.cs @@ -78,6 +78,11 @@ internal Iban(string iban, IbanCountry ibanCountry, bool skipNormalize = false) /// public string Bban => Extract(Country.Bban) ?? _iban.Substring(4); + /// + /// Gets the bank account number part of the IBAN. + /// + public string BankAccountNumber => Extract(Country.BankAccountNumber) ?? Bban.Substring(BankIdentifier?.Length ?? 0 + BranchIdentifier?.Length ?? 0); + /// /// Gets the bank identifier, or if bank identifier cannot be extracted. /// diff --git a/src/IbanNet/Registry/IbanCountry.cs b/src/IbanNet/Registry/IbanCountry.cs index 661b972e..070c5e31 100644 --- a/src/IbanNet/Registry/IbanCountry.cs +++ b/src/IbanNet/Registry/IbanCountry.cs @@ -24,6 +24,8 @@ public sealed class IbanCountry private readonly PatternDescriptor? _bankPatternDescriptor; [DebuggerBrowsable(DebuggerBrowsableState.Never)] private readonly PatternDescriptor? _branchPatternDescriptor; + [DebuggerBrowsable(DebuggerBrowsableState.Never)] + private readonly PatternDescriptor? _bankAccountNumberPatternDescriptor; /// /// Initializes a new instance of the class using specified 2 letter ISO region name. @@ -126,6 +128,16 @@ public PatternDescriptor Branch init => _branchPatternDescriptor = value; } + /// + /// Gets the pattern descriptor for the bank account number identifier. + /// + [AllowNull] + public PatternDescriptor BankAccountNumber + { + get => _bankAccountNumberPatternDescriptor ?? NullPatternDescriptor; + init => _bankAccountNumberPatternDescriptor = value; + } + /// /// Gets when this was last updated in the Iban Registry. /// diff --git a/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs b/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs index 62b35225..4e457460 100644 --- a/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs +++ b/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs @@ -53,6 +53,10 @@ private static IEnumerable Load() { Example = "00012030200359100100" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 12) + { + Example = "200359100100" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0001" @@ -83,6 +87,10 @@ private static IEnumerable Load() { Example = "0331234567890123456" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n"), 7) + { + Example = "1234567890123456" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "033" @@ -109,6 +117,10 @@ private static IEnumerable Load() { Example = "212110090000000235698741" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 12) + { + Example = "0000000235698741" + }, Bank = new PatternDescriptor(new SwiftPattern("8!n"), 4) { Example = "21211009" @@ -139,6 +151,10 @@ private static IEnumerable Load() { Example = "1904300234573201" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n"), 9) + { + Example = "00234573201" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "19043" @@ -165,6 +181,10 @@ private static IEnumerable Load() { Example = "NABZ00000000137010001944" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!c"), 8) + { + Example = "00000000137010001944" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NABZ" @@ -191,6 +211,10 @@ private static IEnumerable Load() { Example = "1990440001200279" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n2!n"), 10) + { + Example = "0001200279" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "199" @@ -221,6 +245,10 @@ private static IEnumerable Load() { Example = "539007547034" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("7!n2!n"), 7) + { + Example = "007547034" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "539" @@ -247,6 +275,10 @@ private static IEnumerable Load() { Example = "BNBG96611020345678" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("2!n8!c"), 12) + { + Example = "1020345678" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BNBG" @@ -277,6 +309,10 @@ private static IEnumerable Load() { Example = "BMAG00001299123456" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!c"), 8) + { + Example = "00001299123456" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BMAG" @@ -303,6 +339,10 @@ private static IEnumerable Load() { Example = "10000100010000332045181" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 14) + { + Example = "0000332045181" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "10000" @@ -341,6 +381,10 @@ private static IEnumerable Load() { Example = "00001" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n1!a1!c"), 13) + { + Example = "0009795493C1" + }, Sepa = new SepaInfo { IsMember = false @@ -363,6 +407,10 @@ private static IEnumerable Load() { Example = "NBRB3600900000002Z00AB00" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("4!n16!c"), 8) + { + Example = "3600900000002Z00AB00" + }, Bank = new PatternDescriptor(new SwiftPattern("4!c"), 4) { Example = "NBRB" @@ -389,6 +437,10 @@ private static IEnumerable Load() { Example = "00762011623852957" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 9) + { + Example = "011623852957" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00762" @@ -415,6 +467,10 @@ private static IEnumerable Load() { Example = "15202001026284066" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!n"), 8) + { + Example = "2001026284066" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0152" @@ -441,6 +497,10 @@ private static IEnumerable Load() { Example = "002001280000001200527600" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 12) + { + Example = "0000001200527600" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "002" @@ -471,6 +531,10 @@ private static IEnumerable Load() { Example = "08000000192000145399" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n10!n"), 8) + { + Example = "0000192000145399" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0800" @@ -497,6 +561,10 @@ private static IEnumerable Load() { Example = "370400440532013000" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n"), 12) + { + Example = "0532013000" + }, Bank = new PatternDescriptor(new SwiftPattern("8!n"), 4) { Example = "37040044" @@ -523,6 +591,10 @@ private static IEnumerable Load() { Example = "00010000000154000100186" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 14) + { + Example = "0154000100186" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00010" @@ -553,6 +625,10 @@ private static IEnumerable Load() { Example = "00400440116243" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("9!n1!n"), 4) + { + Example = "0440116243" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0040" @@ -579,6 +655,10 @@ private static IEnumerable Load() { Example = "BAGR00000001212453611324" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) + { + Example = "00000001212453611324" + }, Bank = new PatternDescriptor(new SwiftPattern("4!c"), 4) { Example = "BAGR" @@ -605,6 +685,10 @@ private static IEnumerable Load() { Example = "2200221020145685" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!n"), 6) + { + Example = "00221020145685" + }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "22" @@ -631,6 +715,10 @@ private static IEnumerable Load() { Example = "0019000500000000263180002" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("17!n"), 12) + { + Example = "00000000263180002" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0019" @@ -661,6 +749,10 @@ private static IEnumerable Load() { Example = "21000418450200051332" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!n1!n10!n"), 12) + { + Example = "450200051332" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "2100" @@ -695,6 +787,10 @@ private static IEnumerable Load() { Example = "12345600000785" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n"), 10) + { + Example = "00000785" + }, Bank = new PatternDescriptor(new SwiftPattern("6!n"), 4) { Example = "123456" @@ -725,6 +821,10 @@ private static IEnumerable Load() { Example = "SC123456789012" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 6) + { + Example = "123456789012" + }, Bank = new PatternDescriptor(new SwiftPattern("2!a"), 4) { Example = "SC" @@ -751,6 +851,10 @@ private static IEnumerable Load() { Example = "64600001631634" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("9!n1!n"), 8) + { + Example = "0001631634" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "6460" @@ -781,6 +885,10 @@ private static IEnumerable Load() { Example = "20041010050500013M02606" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!c2!n"), 14) + { + Example = "0500013M02606" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "20041" @@ -819,6 +927,10 @@ private static IEnumerable Load() { Example = "NWBK60161331926819" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n"), 14) + { + Example = "31926819" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NWBK" @@ -849,6 +961,10 @@ private static IEnumerable Load() { Example = "NB0000000101904917" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n"), 6) + { + Example = "0000000101904917" + }, Bank = new PatternDescriptor(new SwiftPattern("2!a"), 4) { Example = "NB" @@ -875,6 +991,10 @@ private static IEnumerable Load() { Example = "NWBK000000007099453" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("15!c"), 8) + { + Example = "000000007099453" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NWBK" @@ -901,6 +1021,10 @@ private static IEnumerable Load() { Example = "64710001000206" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("9!n1!n"), 8) + { + Example = "0001000206" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "6471" @@ -927,6 +1051,10 @@ private static IEnumerable Load() { Example = "01101250000000012300695" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("3!n4!n16!c"), 11) + { + Example = "0000000012300695" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "011" @@ -957,6 +1085,10 @@ private static IEnumerable Load() { Example = "TRAJ01020000001210029690" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!c"), 8) + { + Example = "01020000001210029690" + }, Bank = new PatternDescriptor(new SwiftPattern("4!c"), 4) { Example = "TRAJ" @@ -983,6 +1115,10 @@ private static IEnumerable Load() { Example = "CABF00000000000250005469" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) + { + Example = "00000000000250005469" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CABF" @@ -1009,6 +1145,10 @@ private static IEnumerable Load() { Example = "10010051863000160" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("7!n10!n"), 11) + { + Example = "1863000160" + }, Bank = new PatternDescriptor(new SwiftPattern("7!n"), 4) { Example = "1001005" @@ -1035,6 +1175,10 @@ private static IEnumerable Load() { Example = "117730161111101800000000" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!n15!n1!n"), 11) + { + Example = "61111101800000000" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "117" @@ -1065,6 +1209,10 @@ private static IEnumerable Load() { Example = "AIBK93115212345678" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n"), 14) + { + Example = "12345678" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "AIBK" @@ -1095,6 +1243,10 @@ private static IEnumerable Load() { Example = "010800000099999999" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n"), 10) + { + Example = "000099999999" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "010" @@ -1125,6 +1277,10 @@ private static IEnumerable Load() { Example = "NBIQ850123456789012" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 11) + { + Example = "123456789012" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NBIQ" @@ -1155,6 +1311,10 @@ private static IEnumerable Load() { Example = "0159260076545510730339" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n10!n"), 8) + { + Example = "0076545510730339" + }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "01" @@ -1185,6 +1345,10 @@ private static IEnumerable Load() { Example = "X0542811101000000123456" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!a5!n5!n12!c"), 15) + { + Example = "000000123456" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 5) { Example = "05428" @@ -1215,13 +1379,17 @@ private static IEnumerable Load() { Example = "CBJO0010000000000131000302" }, - Bank = new PatternDescriptor(new SwiftPattern("4!n"), 8) + BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 12) + { + Example = "000000000131000302" + }, + Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CBJO" }, Branch = new PatternDescriptor(new SwiftPattern("4!n"), 8) { - Example = "" + Example = "0010" }, Sepa = new SepaInfo { @@ -1245,6 +1413,10 @@ private static IEnumerable Load() { Example = "CBKU0000000000001234560101" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("22!c"), 8) + { + Example = "0000000000001234560101" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CBKU" @@ -1271,6 +1443,10 @@ private static IEnumerable Load() { Example = "125KZT5004100100" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!c"), 7) + { + Example = "KZT5004100100" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "125" @@ -1297,6 +1473,10 @@ private static IEnumerable Load() { Example = "099900000001001901229114" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!c"), 8) + { + Example = "00000001001901229114" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "0999" @@ -1323,6 +1503,10 @@ private static IEnumerable Load() { Example = "HEMM000100010012001200023015" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("24!c"), 8) + { + Example = "000100010012001200023015" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "HEMM" @@ -1349,6 +1533,10 @@ private static IEnumerable Load() { Example = "088100002324013AA" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 9) + { + Example = "0002324013AA" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "08810" @@ -1375,6 +1563,10 @@ private static IEnumerable Load() { Example = "1000011101001000" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n"), 9) + { + Example = "11101001000" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "10000" @@ -1401,6 +1593,10 @@ private static IEnumerable Load() { Example = "0019400644750000" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!c"), 7) + { + Example = "9400644750000" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "001" @@ -1427,6 +1623,10 @@ private static IEnumerable Load() { Example = "BANK0000435195001" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!c"), 8) + { + Example = "0000435195001" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BANK" @@ -1453,6 +1653,10 @@ private static IEnumerable Load() { Example = "002048000020100120361" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("15!n"), 10) + { + Example = "000020100120361" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "002" @@ -1483,6 +1687,10 @@ private static IEnumerable Load() { Example = "11222000010123456789030" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!c2!n"), 14) + { + Example = "0123456789030" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "11222" @@ -1513,6 +1721,10 @@ private static IEnumerable Load() { Example = "AG000225100013104168" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 6) + { + Example = "000225100013104168" + }, Bank = new PatternDescriptor(new SwiftPattern("2!c"), 4) { Example = "AG" @@ -1539,6 +1751,10 @@ private static IEnumerable Load() { Example = "505000012345678951" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n2!n"), 7) + { + Example = "000012345678951" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "505" @@ -1565,6 +1781,10 @@ private static IEnumerable Load() { Example = "250120000058984" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!c2!n"), 7) + { + Example = "120000058984" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "300" @@ -1591,6 +1811,10 @@ private static IEnumerable Load() { Example = "1234123456789123" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("2!n"), 8) + { + Example = "123456789123" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "1234" @@ -1617,6 +1841,10 @@ private static IEnumerable Load() { Example = "00020001010000123456753" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 14) + { + Example = "0000123456753" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00020" @@ -1647,6 +1875,10 @@ private static IEnumerable Load() { Example = "MALT011000012345MTLCAST001S" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 13) + { + Example = "0012345MTLCAST001S" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "MALT" @@ -1677,7 +1909,11 @@ private static IEnumerable Load() { Example = "BOMM0101101030300200000MUR" }, - Bank = new PatternDescriptor(new SwiftPattern("6!c"), 4) + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n3!n3!a"), 12) + { + Example = "101030300200000MUR" + }, + Bank = new PatternDescriptor(new SwiftPattern("4!a2!n"), 4) { Example = "BOMM01" }, @@ -1707,6 +1943,10 @@ private static IEnumerable Load() { Example = "BAPR00000013000003558124" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) + { + Example = "00000013000003558124" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BAPR" @@ -1733,6 +1973,10 @@ private static IEnumerable Load() { Example = "ABNA0417164300" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n"), 8) + { + Example = "0417164300" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "ABNA" @@ -1759,6 +2003,10 @@ private static IEnumerable Load() { Example = "86011117947" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n1!n"), 8) + { + Example = "1117947" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "8601" @@ -1785,6 +2033,10 @@ private static IEnumerable Load() { Example = "0180000001299123456" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 7) + { + Example = "0000001299123456" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "018" @@ -1811,6 +2063,10 @@ private static IEnumerable Load() { Example = "SCBL0000001123456702" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("4!a16!c"), 8) + { + Example = "0000001123456702" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "SCBL" @@ -1837,6 +2093,10 @@ private static IEnumerable Load() { Example = "109010140000071219812874" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n16!n"), 12) + { + Example = "0000071219812874" + }, Branch = new PatternDescriptor(new SwiftPattern("8!n"), 4) { Example = "10901014" @@ -1863,6 +2123,10 @@ private static IEnumerable Load() { Example = "PALS000000000400123456702" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("21!c"), 8) + { + Example = "000000000400123456702" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "PALS" @@ -1889,6 +2153,10 @@ private static IEnumerable Load() { Example = "000201231234567890154" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 12) + { + Example = "1234567890154" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0002" @@ -1923,6 +2191,10 @@ private static IEnumerable Load() { Example = "DOHB00001234567890ABCDEFG" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("21!c"), 8) + { + Example = "00001234567890ABCDEFG" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "DOHB" @@ -1949,6 +2221,10 @@ private static IEnumerable Load() { Example = "AAAA1B31007593840000" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 8) + { + Example = "1B31007593840000" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "AAAA" @@ -1975,6 +2251,10 @@ private static IEnumerable Load() { Example = "260005601001611379" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n2!n"), 7) + { + Example = "005601001611379" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "260" @@ -2001,6 +2281,10 @@ private static IEnumerable Load() { Example = "80000000608010167519" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 6) + { + Example = "000000608010167519" + }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "80" @@ -2027,6 +2311,10 @@ private static IEnumerable Load() { Example = "SSCB11010000000000001497USD" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n3!a"), 12) + { + Example = "0000000000001497USD" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a2!n"), 4) { Example = "SSCB11" @@ -2057,6 +2345,10 @@ private static IEnumerable Load() { Example = "29010501234001" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 6) + { + Example = "010501234001" + }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "29" @@ -2083,6 +2375,10 @@ private static IEnumerable Load() { Example = "50000000058398257466" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n1!n"), 7) + { + Example = "00000058398257466" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "123" @@ -2109,6 +2405,10 @@ private static IEnumerable Load() { Example = "263300012039086" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n2!n"), 9) + { + Example = "0012039086" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "26330" @@ -2135,6 +2435,10 @@ private static IEnumerable Load() { Example = "12000000198742637541" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n10!n"), 8) + { + Example = "0000198742637541" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "1200" @@ -2161,6 +2465,10 @@ private static IEnumerable Load() { Example = "U0322509800000000270100" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 15) + { + Example = "000000270100" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 5) { Example = "03225" @@ -2191,6 +2499,10 @@ private static IEnumerable Load() { Example = "1000001001000100141" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 11) + { + Example = "001000100141" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "1000" @@ -2221,6 +2533,10 @@ private static IEnumerable Load() { Example = "000100010051845310146" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 12) + { + Example = "000100010051845310146" + }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0001" @@ -2251,6 +2567,10 @@ private static IEnumerable Load() { Example = "CENR00000000000000700025" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) + { + Example = "00000000000000700025" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CENR" @@ -2277,6 +2597,10 @@ private static IEnumerable Load() { Example = "0080012345678910157" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!n2!n"), 7) + { + Example = "0012345678910157" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "008" @@ -2303,6 +2627,10 @@ private static IEnumerable Load() { Example = "10006035183598478831" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n2!n"), 9) + { + Example = "035183598478831" + }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "10" @@ -2333,6 +2661,10 @@ private static IEnumerable Load() { Example = "0006100519786457841326" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!n16!c"), 9) + { + Example = "00519786457841326" + }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00061" @@ -2359,6 +2691,10 @@ private static IEnumerable Load() { Example = "3223130000026007233566001" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("19!c"), 10) + { + Example = "0000026007233566001" + }, Bank = new PatternDescriptor(new SwiftPattern("6!n"), 4) { Example = "322313" @@ -2385,6 +2721,10 @@ private static IEnumerable Load() { Example = "001123000012345678" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("15!n"), 7) + { + Example = "123000012345678" + }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "001" @@ -2411,6 +2751,10 @@ private static IEnumerable Load() { Example = "VPVG0000012345678901" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n"), 8) + { + Example = "0000012345678901" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "VPVG" @@ -2437,6 +2781,10 @@ private static IEnumerable Load() { Example = "1212012345678906" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n2!n"), 8) + { + Example = "012345678906" + }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "12" @@ -2467,6 +2815,10 @@ private static IEnumerable Load() { Example = "CBYE0001018861234567891234" }, + BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 12) + { + Example = "018861234567891234" + }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CBYE" diff --git a/test/IbanNet.Tests/IbanTests.cs b/test/IbanNet.Tests/IbanTests.cs index 1d69d804..87a7ca01 100644 --- a/test/IbanNet.Tests/IbanTests.cs +++ b/test/IbanNet.Tests/IbanTests.cs @@ -285,6 +285,7 @@ public void Given_that_patternDescriptor_exists_it_should_return_extracted_prope // Act & Assert iban.Bban.Should().Be(ibanCountry.Bban.Example); + iban.BankAccountNumber.Should().Be(ibanCountry.BankAccountNumber.Example); iban.BankIdentifier.Should().Be(ibanCountry.Bank.Example); iban.BranchIdentifier.Should().Be(ibanCountry.Branch.Example); } @@ -309,6 +310,7 @@ public void Given_that_patternDescriptor_is_not_known_it_should_return_null() // Act & Assert iban.Bban.Should().Be(ibanCountry.Bban.Example); + iban.BankAccountNumber.Should().Be(ibanCountry.BankAccountNumber.Example); iban.BankIdentifier.Should().BeNull("no pattern descriptor is available"); iban.BranchIdentifier.Should().BeNull("no pattern descriptor is available"); } diff --git a/test/IbanNet.Tests/Registry/IbanCountryTests.cs b/test/IbanNet.Tests/Registry/IbanCountryTests.cs index bd9b7007..b562a4f8 100644 --- a/test/IbanNet.Tests/Registry/IbanCountryTests.cs +++ b/test/IbanNet.Tests/Registry/IbanCountryTests.cs @@ -45,6 +45,7 @@ public void Getters_should_return_set_properties() const string twoLetterIsoRegionName = "nl"; var ibanPatternDescriptor = new PatternDescriptor(NullPattern.Instance); var bbanPatternDescriptor = new PatternDescriptor(NullPattern.Instance); + var bankAccountNumberPatternDescriptor = new PatternDescriptor(NullPattern.Instance); var bankPatternDescriptor = new PatternDescriptor(NullPattern.Instance); var branchPatternDescriptor = new PatternDescriptor(NullPattern.Instance); const string displayName = "name"; @@ -59,6 +60,7 @@ public void Getters_should_return_set_properties() { Iban = ibanPatternDescriptor, Bban = bbanPatternDescriptor, + BankAccountNumber = bankAccountNumberPatternDescriptor, Bank = bankPatternDescriptor, Branch = branchPatternDescriptor, DisplayName = displayName, @@ -73,6 +75,7 @@ public void Getters_should_return_set_properties() ibanCountry.TwoLetterISORegionName.Should().Be(twoLetterIsoRegionName.ToUpper()); ibanCountry.Iban.Should().BeSameAs(ibanPatternDescriptor); ibanCountry.Bank.Should().BeSameAs(bankPatternDescriptor); + ibanCountry.BankAccountNumber.Should().BeSameAs(bankAccountNumberPatternDescriptor); ibanCountry.Bban.Should().BeSameAs(bbanPatternDescriptor); ibanCountry.Branch.Should().BeSameAs(branchPatternDescriptor); ibanCountry.DisplayName.Should().Be(displayName); diff --git a/test/IbanNet.Tests/Registry/Swift/SwiftRegistryProviderTests.cs b/test/IbanNet.Tests/Registry/Swift/SwiftRegistryProviderTests.cs index 692e4938..f17da103 100644 --- a/test/IbanNet.Tests/Registry/Swift/SwiftRegistryProviderTests.cs +++ b/test/IbanNet.Tests/Registry/Swift/SwiftRegistryProviderTests.cs @@ -21,6 +21,7 @@ public void When_definitions_are_loaded_should_contain(IbanCountry expectedIbanC actual.Should().BeEquivalentTo(expectedIbanCountry); actual.Iban.Pattern.ToString().Should().Be(expectedIbanCountry.Iban.Pattern.ToString()); actual.Bban.Pattern.ToString().Should().Be(expectedIbanCountry.Bban.Pattern.ToString()); + actual.BankAccountNumber.Pattern.ToString().Should().Be(expectedIbanCountry.BankAccountNumber.Pattern.ToString()); actual.Bank.Pattern.ToString().Should().Be(expectedIbanCountry.Bank.Pattern.ToString()); actual.Branch.Pattern.ToString().Should().Be(expectedIbanCountry.Branch.Pattern.ToString()); } From 558afcca87d28cfd4b03744c8d64b02fd4dbfba8 Mon Sep 17 00:00:00 2001 From: Tomer Date: Tue, 10 Mar 2026 14:50:33 +0200 Subject: [PATCH 2/4] Added Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b43bd8ee..d5c1dcba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased - Implement `IParsable` on Iban type in https://github.com/skwasjer/IbanNet/pull/138 +- Implement `BankAccountNumber` on Iban type in https://github.com/skwasjer/IbanNet/pull/394 ## v6.0.0 From a06da5174a007bea2fbe0ba3f96bb9b0283b8b51 Mon Sep 17 00:00:00 2001 From: Tomer Date: Mon, 16 Mar 2026 16:44:00 +0200 Subject: [PATCH 3/4] Revert generated code --- .../Registry/Swift/SwiftRegistryProvider.cs | 358 +----------------- 1 file changed, 3 insertions(+), 355 deletions(-) diff --git a/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs b/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs index 4e457460..62b35225 100644 --- a/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs +++ b/src/IbanNet/Registry/Swift/SwiftRegistryProvider.cs @@ -53,10 +53,6 @@ private static IEnumerable Load() { Example = "00012030200359100100" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 12) - { - Example = "200359100100" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0001" @@ -87,10 +83,6 @@ private static IEnumerable Load() { Example = "0331234567890123456" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n"), 7) - { - Example = "1234567890123456" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "033" @@ -117,10 +109,6 @@ private static IEnumerable Load() { Example = "212110090000000235698741" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 12) - { - Example = "0000000235698741" - }, Bank = new PatternDescriptor(new SwiftPattern("8!n"), 4) { Example = "21211009" @@ -151,10 +139,6 @@ private static IEnumerable Load() { Example = "1904300234573201" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n"), 9) - { - Example = "00234573201" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "19043" @@ -181,10 +165,6 @@ private static IEnumerable Load() { Example = "NABZ00000000137010001944" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!c"), 8) - { - Example = "00000000137010001944" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NABZ" @@ -211,10 +191,6 @@ private static IEnumerable Load() { Example = "1990440001200279" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n2!n"), 10) - { - Example = "0001200279" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "199" @@ -245,10 +221,6 @@ private static IEnumerable Load() { Example = "539007547034" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("7!n2!n"), 7) - { - Example = "007547034" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "539" @@ -275,10 +247,6 @@ private static IEnumerable Load() { Example = "BNBG96611020345678" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("2!n8!c"), 12) - { - Example = "1020345678" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BNBG" @@ -309,10 +277,6 @@ private static IEnumerable Load() { Example = "BMAG00001299123456" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!c"), 8) - { - Example = "00001299123456" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BMAG" @@ -339,10 +303,6 @@ private static IEnumerable Load() { Example = "10000100010000332045181" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 14) - { - Example = "0000332045181" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "10000" @@ -381,10 +341,6 @@ private static IEnumerable Load() { Example = "00001" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n1!a1!c"), 13) - { - Example = "0009795493C1" - }, Sepa = new SepaInfo { IsMember = false @@ -407,10 +363,6 @@ private static IEnumerable Load() { Example = "NBRB3600900000002Z00AB00" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("4!n16!c"), 8) - { - Example = "3600900000002Z00AB00" - }, Bank = new PatternDescriptor(new SwiftPattern("4!c"), 4) { Example = "NBRB" @@ -437,10 +389,6 @@ private static IEnumerable Load() { Example = "00762011623852957" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 9) - { - Example = "011623852957" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00762" @@ -467,10 +415,6 @@ private static IEnumerable Load() { Example = "15202001026284066" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!n"), 8) - { - Example = "2001026284066" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0152" @@ -497,10 +441,6 @@ private static IEnumerable Load() { Example = "002001280000001200527600" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 12) - { - Example = "0000001200527600" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "002" @@ -531,10 +471,6 @@ private static IEnumerable Load() { Example = "08000000192000145399" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n10!n"), 8) - { - Example = "0000192000145399" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0800" @@ -561,10 +497,6 @@ private static IEnumerable Load() { Example = "370400440532013000" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n"), 12) - { - Example = "0532013000" - }, Bank = new PatternDescriptor(new SwiftPattern("8!n"), 4) { Example = "37040044" @@ -591,10 +523,6 @@ private static IEnumerable Load() { Example = "00010000000154000100186" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 14) - { - Example = "0154000100186" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00010" @@ -625,10 +553,6 @@ private static IEnumerable Load() { Example = "00400440116243" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("9!n1!n"), 4) - { - Example = "0440116243" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0040" @@ -655,10 +579,6 @@ private static IEnumerable Load() { Example = "BAGR00000001212453611324" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) - { - Example = "00000001212453611324" - }, Bank = new PatternDescriptor(new SwiftPattern("4!c"), 4) { Example = "BAGR" @@ -685,10 +605,6 @@ private static IEnumerable Load() { Example = "2200221020145685" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!n"), 6) - { - Example = "00221020145685" - }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "22" @@ -715,10 +631,6 @@ private static IEnumerable Load() { Example = "0019000500000000263180002" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("17!n"), 12) - { - Example = "00000000263180002" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0019" @@ -749,10 +661,6 @@ private static IEnumerable Load() { Example = "21000418450200051332" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!n1!n10!n"), 12) - { - Example = "450200051332" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "2100" @@ -787,10 +695,6 @@ private static IEnumerable Load() { Example = "12345600000785" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n"), 10) - { - Example = "00000785" - }, Bank = new PatternDescriptor(new SwiftPattern("6!n"), 4) { Example = "123456" @@ -821,10 +725,6 @@ private static IEnumerable Load() { Example = "SC123456789012" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 6) - { - Example = "123456789012" - }, Bank = new PatternDescriptor(new SwiftPattern("2!a"), 4) { Example = "SC" @@ -851,10 +751,6 @@ private static IEnumerable Load() { Example = "64600001631634" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("9!n1!n"), 8) - { - Example = "0001631634" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "6460" @@ -885,10 +781,6 @@ private static IEnumerable Load() { Example = "20041010050500013M02606" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!c2!n"), 14) - { - Example = "0500013M02606" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "20041" @@ -927,10 +819,6 @@ private static IEnumerable Load() { Example = "NWBK60161331926819" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n"), 14) - { - Example = "31926819" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NWBK" @@ -961,10 +849,6 @@ private static IEnumerable Load() { Example = "NB0000000101904917" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n"), 6) - { - Example = "0000000101904917" - }, Bank = new PatternDescriptor(new SwiftPattern("2!a"), 4) { Example = "NB" @@ -991,10 +875,6 @@ private static IEnumerable Load() { Example = "NWBK000000007099453" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("15!c"), 8) - { - Example = "000000007099453" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NWBK" @@ -1021,10 +901,6 @@ private static IEnumerable Load() { Example = "64710001000206" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("9!n1!n"), 8) - { - Example = "0001000206" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "6471" @@ -1051,10 +927,6 @@ private static IEnumerable Load() { Example = "01101250000000012300695" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("3!n4!n16!c"), 11) - { - Example = "0000000012300695" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "011" @@ -1085,10 +957,6 @@ private static IEnumerable Load() { Example = "TRAJ01020000001210029690" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!c"), 8) - { - Example = "01020000001210029690" - }, Bank = new PatternDescriptor(new SwiftPattern("4!c"), 4) { Example = "TRAJ" @@ -1115,10 +983,6 @@ private static IEnumerable Load() { Example = "CABF00000000000250005469" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) - { - Example = "00000000000250005469" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CABF" @@ -1145,10 +1009,6 @@ private static IEnumerable Load() { Example = "10010051863000160" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("7!n10!n"), 11) - { - Example = "1863000160" - }, Bank = new PatternDescriptor(new SwiftPattern("7!n"), 4) { Example = "1001005" @@ -1175,10 +1035,6 @@ private static IEnumerable Load() { Example = "117730161111101800000000" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!n15!n1!n"), 11) - { - Example = "61111101800000000" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "117" @@ -1209,10 +1065,6 @@ private static IEnumerable Load() { Example = "AIBK93115212345678" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n"), 14) - { - Example = "12345678" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "AIBK" @@ -1243,10 +1095,6 @@ private static IEnumerable Load() { Example = "010800000099999999" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n"), 10) - { - Example = "000099999999" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "010" @@ -1277,10 +1125,6 @@ private static IEnumerable Load() { Example = "NBIQ850123456789012" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 11) - { - Example = "123456789012" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "NBIQ" @@ -1311,10 +1155,6 @@ private static IEnumerable Load() { Example = "0159260076545510730339" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n10!n"), 8) - { - Example = "0076545510730339" - }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "01" @@ -1345,10 +1185,6 @@ private static IEnumerable Load() { Example = "X0542811101000000123456" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!a5!n5!n12!c"), 15) - { - Example = "000000123456" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 5) { Example = "05428" @@ -1379,17 +1215,13 @@ private static IEnumerable Load() { Example = "CBJO0010000000000131000302" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 12) - { - Example = "000000000131000302" - }, - Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) + Bank = new PatternDescriptor(new SwiftPattern("4!n"), 8) { Example = "CBJO" }, Branch = new PatternDescriptor(new SwiftPattern("4!n"), 8) { - Example = "0010" + Example = "" }, Sepa = new SepaInfo { @@ -1413,10 +1245,6 @@ private static IEnumerable Load() { Example = "CBKU0000000000001234560101" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("22!c"), 8) - { - Example = "0000000000001234560101" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CBKU" @@ -1443,10 +1271,6 @@ private static IEnumerable Load() { Example = "125KZT5004100100" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!c"), 7) - { - Example = "KZT5004100100" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "125" @@ -1473,10 +1297,6 @@ private static IEnumerable Load() { Example = "099900000001001901229114" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!c"), 8) - { - Example = "00000001001901229114" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "0999" @@ -1503,10 +1323,6 @@ private static IEnumerable Load() { Example = "HEMM000100010012001200023015" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("24!c"), 8) - { - Example = "000100010012001200023015" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "HEMM" @@ -1533,10 +1349,6 @@ private static IEnumerable Load() { Example = "088100002324013AA" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 9) - { - Example = "0002324013AA" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "08810" @@ -1563,10 +1375,6 @@ private static IEnumerable Load() { Example = "1000011101001000" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n"), 9) - { - Example = "11101001000" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "10000" @@ -1593,10 +1401,6 @@ private static IEnumerable Load() { Example = "0019400644750000" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!c"), 7) - { - Example = "9400644750000" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "001" @@ -1623,10 +1427,6 @@ private static IEnumerable Load() { Example = "BANK0000435195001" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!c"), 8) - { - Example = "0000435195001" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BANK" @@ -1653,10 +1453,6 @@ private static IEnumerable Load() { Example = "002048000020100120361" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("15!n"), 10) - { - Example = "000020100120361" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "002" @@ -1687,10 +1483,6 @@ private static IEnumerable Load() { Example = "11222000010123456789030" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!c2!n"), 14) - { - Example = "0123456789030" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "11222" @@ -1721,10 +1513,6 @@ private static IEnumerable Load() { Example = "AG000225100013104168" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 6) - { - Example = "000225100013104168" - }, Bank = new PatternDescriptor(new SwiftPattern("2!c"), 4) { Example = "AG" @@ -1751,10 +1539,6 @@ private static IEnumerable Load() { Example = "505000012345678951" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n2!n"), 7) - { - Example = "000012345678951" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "505" @@ -1781,10 +1565,6 @@ private static IEnumerable Load() { Example = "250120000058984" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!c2!n"), 7) - { - Example = "120000058984" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "300" @@ -1811,10 +1591,6 @@ private static IEnumerable Load() { Example = "1234123456789123" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("2!n"), 8) - { - Example = "123456789123" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "1234" @@ -1841,10 +1617,6 @@ private static IEnumerable Load() { Example = "00020001010000123456753" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 14) - { - Example = "0000123456753" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00020" @@ -1875,10 +1647,6 @@ private static IEnumerable Load() { Example = "MALT011000012345MTLCAST001S" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 13) - { - Example = "0012345MTLCAST001S" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "MALT" @@ -1909,11 +1677,7 @@ private static IEnumerable Load() { Example = "BOMM0101101030300200000MUR" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n3!n3!a"), 12) - { - Example = "101030300200000MUR" - }, - Bank = new PatternDescriptor(new SwiftPattern("4!a2!n"), 4) + Bank = new PatternDescriptor(new SwiftPattern("6!c"), 4) { Example = "BOMM01" }, @@ -1943,10 +1707,6 @@ private static IEnumerable Load() { Example = "BAPR00000013000003558124" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) - { - Example = "00000013000003558124" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "BAPR" @@ -1973,10 +1733,6 @@ private static IEnumerable Load() { Example = "ABNA0417164300" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n"), 8) - { - Example = "0417164300" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "ABNA" @@ -2003,10 +1759,6 @@ private static IEnumerable Load() { Example = "86011117947" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n1!n"), 8) - { - Example = "1117947" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "8601" @@ -2033,10 +1785,6 @@ private static IEnumerable Load() { Example = "0180000001299123456" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 7) - { - Example = "0000001299123456" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "018" @@ -2063,10 +1811,6 @@ private static IEnumerable Load() { Example = "SCBL0000001123456702" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("4!a16!c"), 8) - { - Example = "0000001123456702" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "SCBL" @@ -2093,10 +1837,6 @@ private static IEnumerable Load() { Example = "109010140000071219812874" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n16!n"), 12) - { - Example = "0000071219812874" - }, Branch = new PatternDescriptor(new SwiftPattern("8!n"), 4) { Example = "10901014" @@ -2123,10 +1863,6 @@ private static IEnumerable Load() { Example = "PALS000000000400123456702" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("21!c"), 8) - { - Example = "000000000400123456702" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "PALS" @@ -2153,10 +1889,6 @@ private static IEnumerable Load() { Example = "000201231234567890154" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 12) - { - Example = "1234567890154" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0002" @@ -2191,10 +1923,6 @@ private static IEnumerable Load() { Example = "DOHB00001234567890ABCDEFG" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("21!c"), 8) - { - Example = "00001234567890ABCDEFG" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "DOHB" @@ -2221,10 +1949,6 @@ private static IEnumerable Load() { Example = "AAAA1B31007593840000" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!c"), 8) - { - Example = "1B31007593840000" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "AAAA" @@ -2251,10 +1975,6 @@ private static IEnumerable Load() { Example = "260005601001611379" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n2!n"), 7) - { - Example = "005601001611379" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "260" @@ -2281,10 +2001,6 @@ private static IEnumerable Load() { Example = "80000000608010167519" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 6) - { - Example = "000000608010167519" - }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "80" @@ -2311,10 +2027,6 @@ private static IEnumerable Load() { Example = "SSCB11010000000000001497USD" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n3!a"), 12) - { - Example = "0000000000001497USD" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a2!n"), 4) { Example = "SSCB11" @@ -2345,10 +2057,6 @@ private static IEnumerable Load() { Example = "29010501234001" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 6) - { - Example = "010501234001" - }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "29" @@ -2375,10 +2083,6 @@ private static IEnumerable Load() { Example = "50000000058398257466" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n1!n"), 7) - { - Example = "00000058398257466" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "123" @@ -2405,10 +2109,6 @@ private static IEnumerable Load() { Example = "263300012039086" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("8!n2!n"), 9) - { - Example = "0012039086" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "26330" @@ -2435,10 +2135,6 @@ private static IEnumerable Load() { Example = "12000000198742637541" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("6!n10!n"), 8) - { - Example = "0000198742637541" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "1200" @@ -2465,10 +2161,6 @@ private static IEnumerable Load() { Example = "U0322509800000000270100" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!c"), 15) - { - Example = "000000270100" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 5) { Example = "03225" @@ -2499,10 +2191,6 @@ private static IEnumerable Load() { Example = "1000001001000100141" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("12!n"), 11) - { - Example = "001000100141" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "1000" @@ -2533,10 +2221,6 @@ private static IEnumerable Load() { Example = "000100010051845310146" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("11!n2!n"), 12) - { - Example = "000100010051845310146" - }, Bank = new PatternDescriptor(new SwiftPattern("4!n"), 4) { Example = "0001" @@ -2567,10 +2251,6 @@ private static IEnumerable Load() { Example = "CENR00000000000000700025" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("20!n"), 8) - { - Example = "00000000000000700025" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CENR" @@ -2597,10 +2277,6 @@ private static IEnumerable Load() { Example = "0080012345678910157" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("14!n2!n"), 7) - { - Example = "0012345678910157" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "008" @@ -2627,10 +2303,6 @@ private static IEnumerable Load() { Example = "10006035183598478831" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("13!n2!n"), 9) - { - Example = "035183598478831" - }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "10" @@ -2661,10 +2333,6 @@ private static IEnumerable Load() { Example = "0006100519786457841326" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("1!n16!c"), 9) - { - Example = "00519786457841326" - }, Bank = new PatternDescriptor(new SwiftPattern("5!n"), 4) { Example = "00061" @@ -2691,10 +2359,6 @@ private static IEnumerable Load() { Example = "3223130000026007233566001" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("19!c"), 10) - { - Example = "0000026007233566001" - }, Bank = new PatternDescriptor(new SwiftPattern("6!n"), 4) { Example = "322313" @@ -2721,10 +2385,6 @@ private static IEnumerable Load() { Example = "001123000012345678" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("15!n"), 7) - { - Example = "123000012345678" - }, Bank = new PatternDescriptor(new SwiftPattern("3!n"), 4) { Example = "001" @@ -2751,10 +2411,6 @@ private static IEnumerable Load() { Example = "VPVG0000012345678901" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("16!n"), 8) - { - Example = "0000012345678901" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "VPVG" @@ -2781,10 +2437,6 @@ private static IEnumerable Load() { Example = "1212012345678906" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("10!n2!n"), 8) - { - Example = "012345678906" - }, Bank = new PatternDescriptor(new SwiftPattern("2!n"), 4) { Example = "12" @@ -2815,10 +2467,6 @@ private static IEnumerable Load() { Example = "CBYE0001018861234567891234" }, - BankAccountNumber = new PatternDescriptor(new SwiftPattern("18!c"), 12) - { - Example = "018861234567891234" - }, Bank = new PatternDescriptor(new SwiftPattern("4!a"), 4) { Example = "CBYE" From 791414f3d6af6ce0186e5735ade9fdf569169ad4 Mon Sep 17 00:00:00 2001 From: Tomer Date: Tue, 17 Mar 2026 08:52:10 +0200 Subject: [PATCH 4/4] BankAccountNumber is null is either BankIdentifier or BranchIdentifier are null --- src/IbanNet/Iban.cs | 20 ++++++++++++++++++-- test/IbanNet.Tests/IbanTests.cs | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/IbanNet/Iban.cs b/src/IbanNet/Iban.cs index 6053f9b5..aac03f54 100644 --- a/src/IbanNet/Iban.cs +++ b/src/IbanNet/Iban.cs @@ -81,8 +81,24 @@ internal Iban(string iban, IbanCountry ibanCountry, bool skipNormalize = false) /// /// Gets the bank account number part of the IBAN. /// - public string BankAccountNumber => Extract(Country.BankAccountNumber) ?? Bban.Substring(BankIdentifier?.Length ?? 0 + BranchIdentifier?.Length ?? 0); - + public string? BankAccountNumber + { + get + { + var result = Extract(Country.BankAccountNumber); + if (result is not null) + { + return result; + } + var bankIdentifier = BankIdentifier; + var branchIdentifier = BranchIdentifier; + if (bankIdentifier is null || branchIdentifier is null) + { + return null; + } + return Bban.Substring(bankIdentifier.Length + branchIdentifier.Length); + } + } /// /// Gets the bank identifier, or if bank identifier cannot be extracted. /// diff --git a/test/IbanNet.Tests/IbanTests.cs b/test/IbanNet.Tests/IbanTests.cs index 87a7ca01..882f6c3e 100644 --- a/test/IbanNet.Tests/IbanTests.cs +++ b/test/IbanNet.Tests/IbanTests.cs @@ -310,7 +310,7 @@ public void Given_that_patternDescriptor_is_not_known_it_should_return_null() // Act & Assert iban.Bban.Should().Be(ibanCountry.Bban.Example); - iban.BankAccountNumber.Should().Be(ibanCountry.BankAccountNumber.Example); + iban.BankAccountNumber.Should().BeNull("no pattern descriptor is available"); iban.BankIdentifier.Should().BeNull("no pattern descriptor is available"); iban.BranchIdentifier.Should().BeNull("no pattern descriptor is available"); }