Validation of German Steuernummern
npm install validate-steuernummerValidation of German Steuernummern. Written in TypeScript, exposed as ESM and UMD.
``bash`
npm i validate-steuernummer`
Or:bash`
yarn add validate-steuernummer
`typescript
import { validateSteuernummer } from 'validate-steuernummer'
// Providing a Steuernummer in the "Vereinheitlichtes Bundesschema zur
// elektronischen Übermittlung":
const err1 = validateSteuernummer('9/198/0/815/08152');
// err1 is undefined, because this is a valid Steuernummer from Bavaria
// Providing a Steuernummer in the "Vereinheitlichtes Bundesschema":
const err2 = validateSteuernummer('24 75 815 08154');
// err2 is Die Prüfziffer der Steuernummer stimmt nicht, because 4 is not the
// valid Prüfziffer for this Steuernummer from Bremen
// Providing a Steuernummer in the "Standardschema der Länder", and additionally
// passing the Bundesland that issued the Steuernummer:
const err3 = validateSteuernummer('24/815/08151', { bundesland: 'DE-NI' });
// err3 is undefined, because this is a valid Steuernummer from Niedersachsen`
This library exposes a validateSteuernummer function that takes one or two arguments:
1. A string value containing (possibly) a German Steuernummer
2. _Optionally_: an options object
The function returns undefined if it deems the given value to be a valid Steuernummer, or an error string denoting why not.
`typescript
import { validateSteuernummer } from 'validate-steuernummer'
const {
bezirksnummer, // '815',
bundesfinanzamtnummer, // '2653',
normalizedSteuernummer, // '2653081508158',
pruefziffer, // '8',
statePrefix, // '26',
states, // 'DE-HE',
unterscheidungsnummer, // '0815',
} = parseSteuernummer('053 815 08158', {
bundesland: 'DE-HE',
});
`
This library exposes a parseSteuernummer function that takes one or two arguments:
1. A string value containing (possibly) a German Steuernummer
2. _Optionally_: an options object
The function throws an error if parsing fails. Note that this function _does not further validate_ the given Steuernummer.
* The given string contains only digits, spaces (" "), and slashes ("/")bundesland
* The number of digits in the given string is between 10 and 13
* The state ("Bundesland") issuing the Steuernummer is known
* Either, because the Steuernummer contains a valid state prefix (which means it must be of length >= 12)
* Or, because the option was used to deliberately name the issuing state (this is useful when providing a Steuernummer in the commonly used Standardschema der Länder, which means it is contains 11 or 12 digits only)bundesland
* The state information contained in the Steuernummer matches the option, in case both are given
* The Bundesfinanzamtsnummer part of the Steuernummer references a known Bundesfinanzamt. This library checks against "GemFA 2.0" (GEMeinden und FinanzAemter 2.0) data, which lists 610 Finanzämter as of October 5th 2022.
* The Bezirksnummer part of the Steuernummer is valid (checking state-specific constraints)
* The Unterscheidungsnummer and Prüfziffer fulfill requirements specific to Nordrhein-Westfalen
* The Prüfziffer is valid. Relies on the "11er Verfahren", "2er Verfahren", or "Modifiziertes 11er Verfahren" depending on the issuing state. In the case of a Steuernummer from Berlin, validation passes if the Prüfziffer matches that calculated either for the Berlin-A _or_ the Berlin-B scheme (cf. section 7.2 of this document).
For details about the validation requirements for Steuernummern, refer to this document.
: A string denoting one of the 16 German states using ISO 3166-2 notation. E.g., DE-BE for Berlin.
* errorMessages: An object allowing to overwrite the default (German) error messages returned. For example:
`typescript
validateSteuernummer(/ ... /, { errorMessages: {
allowedCharactersError:
'Please only use digits, spaces, dashes, underscores, or slashes'
}});
``