diff --git a/faker/providers/ssn/nl_BE/__init__.py b/faker/providers/ssn/nl_BE/__init__.py index 3eaa4e6b57..0e205eec2e 100644 --- a/faker/providers/ssn/nl_BE/__init__.py +++ b/faker/providers/ssn/nl_BE/__init__.py @@ -57,8 +57,24 @@ def _checksum(digits): vat_id_formats = ("BE##########",) def vat_id(self) -> str: + + vat_id_random_section = ( + '#######' + ) + + vat_id_possible_initial_numbers = ( + '0', + '1' + ) """ http://ec.europa.eu/taxation_customs/vies/faq.html#item_11 - :return: A random Belgian VAT ID + https://en.wikipedia.org/wiki/VAT_identification_number + :return: A random Belgian VAT ID starting with 0 or 1 and has a correct checksum with a modulo 97 check """ - return self.bothify(self.random_element(self.vat_id_formats)) + generated_initial_number = self.random_element(vat_id_possible_initial_numbers) + vat_without_check = self.bothify(generated_initial_number + vat_id_random_section) + vat_as_int = int(vat_without_check) + vat_check = 97 - (vat_as_int % 97) + vat_check_str = f"{vat_check:0>2}" + + return "BE" + vat_without_check + vat_check_str