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