Bulgaria (BG)
Bulgarian VAT Number Validation
Format, pattern, and checksum algorithm for BG VAT numbers
Bulgarian VAT numbers can be either 9 digits (for legal entities) or 10 digits (for physical persons), each with different validation behavior. Since 2024, Bulgarian NRA moved some physical-person VAT identifiers to service numbers.
Format vs. Active Validation
This checks format only, not if a VAT number is really registered. Use VatDB's API to verify is a number is really registered and active. VatDB checks official EU and national datasources.
Format Overview
| Property | Value |
|---|---|
| Country Code | BG |
| Format | 9 or 10 digits |
| Length | 9-10 digits |
| Examples | BG175074752 (9-digit), BG7523169263 (10-digit), BG3071234567 (service-number style) |
Regex Pattern
^BG[0-9]{9,10}$
Checksum Algorithm
9 Digits (Legal Entities)
def validate_bg_vat_9(number):
weights = [1, 2, 3, 4, 5, 6, 7, 8]
total = sum(int(d) * w for d, w in zip(number[:8], weights))
check = total % 11
if check == 10:
# Recalculate with alternative weights
weights = [3, 4, 5, 6, 7, 8, 9, 10]
total = sum(int(d) * w for d, w in zip(number[:8], weights))
check = total % 11
return (check % 10) == int(number[8])
10 Digits (Physical Persons / EGN)
def validate_bg_vat_10(number):
# Service-number style (post-2024 NRA change): permissive
if number.startswith("307"):
return True
# EGN-like numbers: strict checksum
if egn_date_is_plausible(number[:6]):
weights = [2, 4, 8, 5, 10, 9, 7, 3, 6]
total = sum(int(d) * w for d, w in zip(number[:9], weights))
check = (total % 11) % 10
return check == int(number[9])
# Unknown 10-digit subtype: not confidently invalid
return True
Practical Validation Policy
- 9-digit company numbers: strict checksum
- 10-digit EGN-like numbers: strict checksum
- 10-digit uncertain/service-number subtypes: permissive pass
- Final assignment/registration check: use VatDB
Frequently Asked Questions
How do I validate a Bulgarian VAT number?
Use a two-step approach: (1) format + offline check, (2) active status validation via VatDB. VatDB uses strict checks for deterministic BG subtypes and permissive handling for uncertain 10-digit service/legacy cases to avoid false negatives.
What does a Bulgarian VAT number look like?
A Bulgarian VAT number has the format BG123456789 (9 digits) for companies or BG1234567890 (10 digits) for individuals. It always starts with the country code 'BG'.
How many digits are in a Bulgarian VAT number?
Bulgarian VAT numbers have either 9 digits (for legal entities/companies) or 10 digits (for physical persons/sole traders). The length indicates the type of entity.
Why do some Bulgarian VAT numbers have 9 digits and others have 10?
9-digit BG VAT numbers are usually legal entities. 10-digit numbers are physical-person related identifiers; historically many followed EGN/LNCH patterns, and NRA introduced service-number based identifiers for some cases from 2024.
Why can a 10-digit BG number pass offline checks even if no strict checksum is applied?
For some 10-digit legacy/service-number subtypes, a complete public checksum specification is not always deterministic. VatDB treats these as 'not confidently invalid'; for active status validation, use VatDB.
How can I check a Bulgarian company's VAT registration?
Verify VAT numbers instantly with VatDB's API, which checks official EU and national databases. Returns company details with validation results.
What's the difference between format validation and checking if a VAT number is active?
A valid format means the number could theoretically exist, but says nothing about whether it's actually registered. VatDB's API performs live lookups to give you definitive status.
Validate Bulgarian VAT Numbers Instantly
Use our API for real-time BG VAT number validation
Try Free