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 BG831094393 BG000694749 BG831902088

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 / Service IDs)

def validate_bg_vat_10(number):
    # Service-number style (post-2024 NRA change): permissive
    if number.startswith("307"):
        return True

    # Deterministic known checksum families
    if matches_egn_checksum(number):
        return True
    if matches_lnch_pnf_checksum(number):
        return True

    # Unknown 10-digit subtype: not confidently invalid
    return True

Practical Validation Policy

  • 9-digit company numbers: strict checksum
  • 10-digit known EGN/LNCH checksum families: strict checksum when matched
  • 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 when it does not match EGN checksum?

Some 10-digit BG VAT IDs use LNCH/PNF checksum families, and some service/legacy subtypes are not fully deterministic from public specs. VatDB validates known checksum families and treats uncertain 10-digit cases as 'not confidently invalid'; use VatDB for live status.

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.

Do you have real-world examples of Bulgarian VAT numbers?

Real Bulgarian VAT numbers you can validate right now: BG831094393, BG000694749, BG831902088.

Validate Bulgarian VAT Numbers Instantly

Use our API for real-time BG VAT number validation

Try Free