NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #2663 most downloaded on NuGet
Provides a strict International Bank Account Number (IBAN) validator, parser, builder, generator and the Iban primitive type.
Last release 3 months ago
27 Jun 2026
Ships fairly regularly
a new release about every 4 months
Most releases are documented
notes for 49 of 58 stable releases
5 versions withdrawn
withdrawn after publishing
127 years old
76 releases · first in 1900
feat(registry): update SWIFT registry to r102 by @skwasjer in #419
Full Changelog: v6.1.0...v6.2.0
One column per quarter.
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v6.1.0...v6.2.0
feat: adds hidden format () by @skwasjer in #377
Full Changelog: v6.0.0...v6.1.0
For this major release the focus was on performance improvements, updating dependencies that had breaking changes themselves, and to give some API's/t…
For this major release the focus was on performance improvements, updating dependencies that had breaking changes themselves, and to give some API's/types better names (which was long overdue).
The breaking changes are mostly isolated to the registry.
EffectiveDate from IbanStructure type to IbanCountry type by @skwasjer in #308StructureSection to PatternDescriptor and remove derived types by @skwasjer in #309AsciiCategory.Other by @skwasjer in #343ValidationRuleContext to readonly struct by @skwasjer in #306ValidationResult to readonly struct by @skwasjer in #307LimitCountryRule ctor to private protected by @skwasjer in #357Span<T> (and for legacy .NET unsafe char*) API's to avoid heap allocation by @skwasjer in #365IbanRegistry by including/excluding specific countries by @skwasjer in #341SwiftPattern usage from runtime code by @skwasjer in #316Full Changelog: v5.19.1...v6.0.0
For this major release the focus was on performance improvements, updating dependencies that had breaking changes themselves, and to give some API's/types better names (which was long overdue).
The breaking changes are mostly isolated to the registry.
EffectiveDate from IbanStructure type to IbanCountry type by @skwasjer in https://github.com/skwasjer/IbanNet/pull/308StructureSection to PatternDescriptor and remove derived types by @skwasjer in https://github.com/skwasjer/IbanNet/pull/309AsciiCategory.Other by @skwasjer in https://github.com/skwasjer/IbanNet/pull/343ValidationRuleContext to readonly struct by @skwasjer in https://github.com/skwasjer/IbanNet/pull/306ValidationResult to readonly struct by @skwasjer in https://github.com/skwasjer/IbanNet/pull/307LimitCountryRule ctor to private protected by @skwasjer in https://github.com/skwasjer/IbanNet/pull/357Span<T> (and for legacy .NET unsafe char*) API's to avoid heap allocation by @skwasjer in https://github.com/skwasjer/IbanNet/pull/365IbanRegistry by including/excluding specific countries by @skwasjer in https://github.com/skwasjer/IbanNet/pull/341SwiftPattern usage from runtime code by @skwasjer in https://github.com/skwasjer/IbanNet/pull/316Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.19.1...v6.0.0
chore: mark CheckDigits(.Calculators) namespace obsolete by @skwasjer in #370
Full Changelog: v5.19.1...v5.19.2
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.19.1...v5.19.2
refactor!: move EffectiveDate from IbanStructure type to IbanCountry type by @skwasjer in #308
EffectiveDate from IbanStructure type to IbanCountry type by @skwasjer in #308Full Changelog: v5.19.0...v5.19.1
EffectiveDate from IbanStructure type to IbanCountry type by @skwasjer in https://github.com/skwasjer/IbanNet/pull/308Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.19.0...v5.19.1
perf(CA1859): use concrete types when possible for improved performance by @skwasjer in #288
gittools/actions/** dependency by @skwasjer in #300Full Changelog: v5.18.0...v5.19.0
gittools/actions/** dependency by @skwasjer in https://github.com/skwasjer/IbanNet/pull/300Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.18.0...v5.19.0
feat(registry): updated registry to r99 (SWIFT) which adds Honduras (HN) by @skwasjer in #281
IbanFormatException.Result (backing field) as non-serializable by @skwasjer in #286Full Changelog: v5.17.0...v5.18.0
fix: when enumerating registry, order by country code by @skwasjer in #240
Full Changelog: v5.16.1...v5.17.0
chore(deps): Bump System.Text.Json from 6.0.9 to 6.0.10 in /src/IbanNet by @dependabot in #227 Microsoft Security Advisory CVE-2024-43485 | .NET Denia…
Full Changelog: v5.16.0...v5.16.1
feat: updates SwiftRegistryProvider to r98 (July '24) by @skwasjer in https://github.com/skwasjer/IbanNet/pull/220
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.15.0...v5.16.0
feat: Iceland is member of SEPA (according to SWIFT registry (pdf-version) but not to processed txt-version) by @MT-private in https://github.com/skwa
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.14.0...v5.15.0
perf: use code generation to unroll pattern match per country (SWIFT only) by @skwasjer in https://github.com/skwasjer/IbanNet/pull/192
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.13.0...v5.14.0
feat(net8): add .NET 8 target framework by @skwasjer in https://github.com/skwasjer/IbanNet/pull/180
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.12.0...v5.13.0
Add german translation by @janro1 in https://github.com/skwasjer/IbanNet/pull/172
Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.11.0...5.12.0
Fix warning "The property 'sonar.login' is deprecated" by @skwasjer in https://github.com/skwasjer/IbanNet/pull/168
RejectCountryRule as the direct counterpart of AcceptCountryRule by @skwasjer in https://github.com/skwasjer/IbanNet/pull/164BenchmarkDotNet.Diagnostics.Windows from 0.13.6 to 0.13.7 by @dependabot in https://github.com/skwasjer/IbanNet/pull/151Moq with NSubstitute by @skwasjer in https://github.com/skwasjer/IbanNet/pull/156Full Changelog: https://github.com/skwasjer/IbanNet/compare/v5.10.0...v5.11.0
Add additional constructor overloads to IbanValidator, in preparation of possible deprecation of IbanValidatorOptions. Even if not deprecating, it is…
IbanParser internals, use ReadOnlySpan<T>.IbanValidator, in preparation of possible deprecation of IbanValidatorOptions. Even if not deprecating, it is still convenient.Upgraded SWIFT registry to April '23 release 94, which adds Mongolia (MN) and Nicaragua (NI).
Upgraded SWIFT registry to April '23 release 94, which adds Mongolia (MN) and Nicaragua (NI).
As with any new addition to the registry, some caution is advised and possibly changes are to be expected as I've seen such inaccuracies more often in the past.
Refactored pattern tokenizer to support wide tokens (multi char), next to (single) char tokens. This is an internal change that can unlock some extra future functionality.
Fix: the property IbanRegistry.Providers is made read-only after hydrating/using the registry to prevent it from being modified.
Upgraded SWIFT registry to Feb '23 release 93, which adds Somalia (SO) and fixes some misconfiguration for Finland (FI) removing the need for 'some' p
Update FluentValidation to v11.3.0
FluentValidation to v11.3.0CollectionsMarshal.AsSpan in some areas to improve enumeration perfSpan<char> back to a stringchar API's and aggressive inline own char extensionsPattern lazy init to improve init timeLazy initialization of IbanRegistry is now thread safe.
IbanRegistry is now thread safe.IbanGenerator which enables specifying a seed for consistent, reproduceable generation.- #97 Add Dutch localized exception/result messages.
Move normalization to IbanParser from IbanValidator. This means that the validator is now validating 100% strict according to character pattern rules
IbanParser from IbanValidator. This means that the validator is now validating 100% strict according to character pattern rules (character class, case and whitespace, etc.). ValidationResult.AttemptedValue will now also have the raw input. Whitespace/casing is still ignored by the IbanParser.IbanAttribute and FluentIbanValidator extension. When Strict=true, the input must strictly match the IBAN format rules. When Strict=false, whitespace is ignored and strict character casing enforcement is disabled (meaning, the user can input in lower and uppercase). This mode is a bit more forgiving when dealing with user-input. However it does require after successful validation, that you parse the user input with IbanParser to normalize/sanitize the input and to be able to format the IBAN in correct electronic format.IllegalCharactersResult and InvalidStructureResult have a property Position which indicates the 0-based position at which the first invalid character was encountered.Regenerated Wikipedia registry which corrects IBAN pattern for Senegal (SN).
- #78 Adds branch information to FR
LTS: dropped support for .NET 5.0
Upgraded SWIFT registry to May '22 release 92, which adds Djibouti (DJ), fixes the bank pattern for Bahrain (BH).
Fixed SWIFT country definitions for which the 'included country codes' contained inferred locales. The list now actually contains the expected country
Use new Chunk() LINQ API for .NET 6 and change own Partition() method into polyfill for older framework targets.
Chunk() LINQ API for .NET 6 and change own Partition() method into polyfill for older framework targets.AcceptCountryRule to restrict validation to a specific set of countries. The rule can be added via the validator options or dependency registration extensions.Change master branch to main, requiring update to CI scripts, and update all external page references.
master branch to main, requiring update to CI scripts, and update all external page references.- Add package README's
- Added .NET 6 target
Added IbanCountry.NativeName property which returns the country name in native language, if available.
IbanCountry.NativeName property which returns the country name in native language, if available.IbanCountry.DisplayName property to return the native name, if available; otherwise returns the English name.WikipediaRegistryProvider to include Sudan (SD).IEquatable<T>.IFormattable with format strings E, P and O for Electronic, Print and Obfuscated respectively.Added JSON converter support for System.Text.Json to the Iban type (>= .NET 5 only)
System.Text.Json to the Iban type (>= .NET 5 only)iban.IsQrIban() extension method. A Swiss or Liechtenstein QR-IBAN must have a valid QR-IID, i.e. the bank number must be within the [30000, 31999] range.Removed deprecated contracts/code IStructureValidationFactory, IStructureValidation, IStructureSection. Use the Pattern abstraction for custom registr…
IStructureValidationFactory, IStructureValidation, IStructureSection. Use the Pattern abstraction for custom registry providers.Iban.Parse, Iban.TryParse, use the IbanParser class.ValidationMethod, since performance in strict (= default) is now significantly faster (compared to v4.x, even in loose mode). The maintenance is not worth the little gains anymore.Country, Bban, BankIdentifier and BranchIdentifier properties to the Iban value type.SwiftRegistryProvider.IIbanParser and IIbanGenerator are now registered as singletons.IIbanRegistry as resolveable service (singleton).Nothing published for this version
Nothing published for this version
Moved SwiftRegistryProvider to new namespace, kept facade for backwards compatibility. The facade will be removed in v5.0.
SwiftRegistryProvider to new namespace, kept facade for backwards compatibility. The facade will be removed in v5.0.Deprecate loose validation mode. Will be removed in v5.0.
IIbanRegistry.TryGetValue now supports case insensitive country codes.
IIbanRegistry.TryGetValue now supports case insensitive country codes.Introduce pattern abstraction for registry which encapsulates a pattern string and tokenizer. Deprecates IStructureValidationFactory, but keeps backwa…
IbanGenerator.IStructureValidationFactory, but keeps backwards compatible. Patterns are useful when implementing more/future providers to extend country support.Upgraded registry to March '21 release 89 (updated Andorra (AD) and El Salvador (SV))
Added .NET 5.0 target framework support (benchmark).
Upgraded registry to September '20 release 88 (added Libya (LY))
IbanBuilder and BbanBuilder types.IBAN's are now always converted to upper case prior to validation.
Iban.ToString(string) with Iban.ToString(IbanFormat), and added obfuscated format.Upgraded registry to May '20 release 87 (changes to ST)
(breaking) Remove deprecated TypeConverter facade.
IbanParser which provides equivalent non-static functionality to Iban.Parse and Iban.TryParse (which will be obsolete).ICheckDigitsCalculator abstraction.IIbanValidationRule allowing custom validation rules.Iban.Parse and Iban.TryParse are obsolete, use IIbanParser.IbanValidatorOptions class, providing options with validation method (strict = default vs loose), extensibility through custom rules.IbanValidationResult, replaced with result object pattern for extensibility.ValidationResult now contains Error-property containing the error that occurred.Lazy).IbanValidator.SupportedCountries now is a dictionary, allowing look up by country code.CountryInfo to IbanCountry.ValidationResult.Value to ValidationResult.AttemptedValue.Branch and Bank properties from BbanStructure to IbanCountry and all offsets are now relative to entire IBAN. This makes it easier to extract this data from an IBAN.IbanAttribute no longer uses static Iban.Validator as fallback since it is unclear it does so. The IIbanValidator will now only be resolved from IoC container and as such if not registered an exception is thrown.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
backport: Upgraded registry to May '20 release 87 (changes to ST)
Upgraded registry to Januari '20 release 85 (improves Egypt, not effective until 2021).
Your coding agent can read these notes before it upgrades. Set up the MCP server →