Feedback

C# - IBAN erstellen aus Kontonummer AT/DE/CH

Veröffentlicht von am 20.12.2013
(0 Bewertungen)
Mit diesem Snippet lassen sich vollständige IBANs aus Kontonummern und Bankleitzahlen (AT/DE) bzw. Bankclearing-Nr. (CH) erstellen.

Die Prüfsumme wird wie laut Standard nach ISO 7064 erstellt.

Die Kontonummern dürfen für dieses Snippet nur Zahlen enthalten.

ACHTUNG: Nur die Banken selbst geben korrekte IBANs heraus. Manche herausgegebene IBANs wurden (noch) nicht richtig von den Banken erstellt.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

/// <summary>
/// Erstellt eine IBAN für AT/DE/CH von vorhandenen Kontonummer und BLZ bzw. Bankclearing-Nr.
/// </summary>
/// <param name="lkz">Ländercode nach ISO 3166-1</param>
/// <param name="blz">Bankleitzahl (AT/DE) bzw. Bankclearing-Nr. (CH) </param>
/// <param name="kntnr">Kontonummer</param>
/// <param name="groupedReturn">Rückgabe bei <c>True</c> in 4er Gruppierung</param>
/// <returns>Vollständigen IBAN mit Ländercode und Prüfsumme</returns>
public static string CreateIban(string lkz, string blz, string kntnr, bool groupedReturn = true)
{
	string bban = string.Empty;

	lkz = lkz.ToUpper();
	switch (lkz)
	{
		case "AT":
			{
				bban = blz.PadLeft(5, '0') + kntnr.PadLeft(11, '0');
			}
			break;
		case "DE":
			{
				bban = blz.PadLeft(8, '0') + kntnr.PadLeft(10, '0');
			}
			break;
		case "CH":
			{
				bban = blz.PadLeft(5, '0') + kntnr.PadLeft(12, '0');
			}
			break;
	}
	string sum = bban + lkz.Aggregate("", (current, c) => current + (c - 55).ToString()) + "00";

	var d = decimal.Parse(sum);
	var checksum = 98 - (d % 97);
	string iban = lkz + checksum.ToString().PadLeft(2,'0') + bban;
	return groupedReturn ? iban.Select((c, i) => (i % 4 == 3) ? c + " " : c + "").Aggregate("", (current, c) => current + c) : iban;
}

Abgelegt unter IBAN, Kontonummer, Bankleitzahl.

4 Kommentare zum Snippet

wallace693 schrieb am 11.02.2014:
Gutes Snippet mit einem kleinen Fehler: Die Prüfsumme muss zweistellig ausgegeben werden.
Vorschlag:
string iban = lkz + checksum.ToString().PadLeft(2,'0') + bban;
pocki_c schrieb am 11.02.2014:
Herzlichen Dank für den Hinweis, wurde geändert!
dotdani schrieb am 08.08.2016:
Soweit gut, wir haben aber in der Schweiz teilweise Buchstaben in den Kontonummern, dann funktioniert dieses Snippet nicht mehr.
pocki_c schrieb am 08.08.2016:
Danke für den Hinweis, dass war mir nicht bekannt.
 

Logge dich ein, um hier zu kommentieren!