ForHosting KIT · Developer Utilities

Bulgarian EGN check digit

Enter the first nine digits of a Bulgarian EGN and get the tenth: 752316926 gets check digit 3 and becomes 7523169263, shown as 752316-926-3. Paste a full ten-digit EGN to catch a typo before an HR or customer record is saved. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Egn
752316926
Calculation mode
Compute
You get
Input
752316926
Check digit
3
With check
7523169263
Formatted
752316-926-3

The Bulgarian unified civil number (EGN, Единен граждански номер) is a ten-digit personal identifier used on national ID cards, employment contracts, tax filings, banking KYC, healthcare records, and public-service forms across Bulgaria. The first six digits encode the date of birth (with century encoded in the month field), the next three encode the regional serial, and the tenth digit is a check digit derived from a fixed weighting of the first nine digits under the official modular rule. A single mistyped digit or a swapped pair often breaks that checksum, so validating the EGN before saving an HR record, opening a customer profile, or accepting a partner file catches many keying errors early.

What the Bulgarian EGN check digit is and how the weights work

A Bulgarian EGN encodes date of birth and a regional serial number in a fixed ten-digit layout used by administrative, fiscal, and commercial systems. Forms sometimes insert spaces or hyphens for readability, but the underlying value is always ten decimal digits. The first nine digits form the body; the tenth is completely determined by a public check algorithm and is not chosen freely.

The official weighting multiplies those nine digits, left to right, by the constant sequence two, four, eight, five, ten, nine, seven, three, and six. The products are summed, and the remainder of that sum modulo eleven is the candidate check digit. When the remainder is a value from zero through nine, that value is the check digit and completes a well-formed EGN string.

When the remainder is ten, the check digit is defined as zero, not ten, so every nine-digit body maps to exactly one trailing digit zero through nine. Compared with Luhn mod-ten used on payment cards, the EGN scheme uses a fixed left-to-right weight vector and modulo eleven with a special rule for remainder ten, so you must not reuse a Luhn validator on Bulgarian personal ID fields.

Compared with Romanian CNP weights or Norwegian fødselsnummer double mod-eleven digits, the Bulgarian EGN rule is specific to this ten-digit layout and this nine-position weight string. Knowing which scheme you need avoids false confidence when a general check-digit utility accepts a digit string that is not a well-formed EGN. This tool implements the standard weighting on pure digits after optional space and hyphen stripping.

It does not query government portals, prove that a person exists, decode gender or century from the month field, or assign legal status — only that the digit string is consistent under the published check algorithm for Bulgarian civil numbers.

Where Bulgarian EGN check digits fit HR, banking, and administrative workflows

Human-resources and payroll systems store an employee EGN on every legal Bulgarian employment document; a single mistyped digit during onboarding can fail subsequent social-security or tax submissions. Banking and fintech KYC flows that collect a Bulgarian civil number can recompute the check digit without calling an external registry, filtering OCR noise and partial captures early. Product teams that already expose general Luhn or ISO 7064 check tools should still use this EGN-specific capability for Bulgarian personal ID fields so weights, length bounds, and remainder-ten handling match the domain.

Educational and SEO landings that rank for phrases such as bulgarian egn check digit or bulgaria egn validator need a live free tool whose browser path matches automation so tutorial screenshots stay accurate. Do not treat a passing EGN check digit as proof that the person is correctly identified, alive, authorized, or present in any official registry — it only proves the digit string is consistent under the Bulgarian EGN check algorithm over date and region digits.

Audit EGN columns in partner and payroll files

Batch-validate every EGN in a CSV import and quarantine rows whose check digit no longer matches the recomputed expected value.

How is the Bulgarian EGN check digit calculated?

Multiply the first nine digits by the weights 2, 4, 8, 5, 10, 9, 7, 3, and 6, sum the products, and take the sum modulo 11. If the remainder is 0–9 that is the check digit; if it is 10 the check digit is 0.

What is the difference between compute and validate modes?

Compute takes nine digits and returns the check digit and full ten-digit EGN. Validate takes ten digits including the trailing digit and returns whether it matches the recomputed check digit.

What happens if the check digit is wrong?

In validate mode the response still includes the expected digit, and valid is false.

What do the digits of a Bulgarian EGN mean?

The first six encode the date of birth, with the century folded into the month, the next three are a regional serial and the tenth is the check digit. This tool checks the digits; it does not decode the birth date or gender.

Can I use a Luhn validator for an EGN?

No. The EGN multiplies the first nine digits by the fixed weights 2, 4, 8, 5, 10, 9, 7, 3 and 6 and takes the remainder modulo 11, with a remainder of 10 counting as 0. A Luhn check follows a different rule and gives wrong answers.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/enc/egn-bulgaria

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/enc/egn-bulgaria \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"egn":"752316926"}'
{
  "egn": "752316926"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.egn_bulgaria",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

This capability computes the Bulgarian EGN check digit for a nine-digit payload (with or without common spaces and hyphens), or validates a full ten-digit number that already includes the trailing digit, and it reports bad input instead of silently inventing a digit. Use it free in the browser or call the KIT API at the published price; both paths run the same deterministic arithmetic with no network lookup and no registry of real persons.

How to compute a check digit or validate a full EGN

Send an egn field that contains digits zero through nine, optionally separated by spaces or hyphens. Mode validate expects a complete ten-digit number including the trailing check digit (for example 7523169263 or a hyphenated ten-digit form). Empty strings, missing egn, invalid mode values, and wrong lengths fail before any weighted sum runs and are not billed. Letters, other punctuation, double hyphens, or leading or trailing hyphens are rejected as malformed input with invalid_input so you never accept a silently cleaned value. Mode compute is the default: provide exactly nine digits without the check digit (for example 752316926), and the engine returns check_digit as a one-character string, with_check as the full ten-digit string including that digit, and formatted as a readable YYMMDD-XXX-C grouping. The response reports valid true when the recomputed check digit matches the last digit, and always includes check_digit, expected_check_digit, payload without the last digit, weighted_sum_mod11, and formatted for consistent display. Because the path is pure parse with no clock, random source, or network, the same input always yields the same JSON on the free browser tool and on the API. At $0.002 per successful request you can gate bulk HR imports, onboarding forms, and ETL jobs without negotiating a custom tier. Prefer compute when you assemble an EGN from a known nine-digit body; prefer validate when a user, partner file, or scanned label supplies a full number and you need a boolean gate before a registry or master-data lookup.

Where Bulgarian EGN check digits fit HR, banking, and administrative workflows

Validate mode at entry blocks the save when valid is false and can show expected_check_digit so the clerk corrects the form before the record is written. Insurance, healthcare, and public-service portals receive EGNs from forms and partner files where a wrong trailing digit would reject a whole batch; a deterministic oracle that returns valid and with_check lets importers flag rows before they hit production.

Gate EGN fields on HR and onboarding forms

When a user submits a full Bulgarian EGN, call validate mode and block the save when valid is false, showing expected_check_digit to help correct a single mistype before the employee record is written.

Compute the trailing digit when completing IDs

From a nine-digit body (date plus region), call compute mode and store with_check or formatted so every new EGN string carries the correct trailing digit before print, export, or filing generation.

Are spaces and hyphens allowed?

Yes. Common separators are stripped before parsing. Letters, other punctuation, and broken hyphen patterns are rejected with invalid_input.

What does the Bulgarian EGN check digit calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →