Generator · Luxembourg data

Luxembourg TVA

Endpoint GET /v1/lu/tva

What it covers

Returns a valid Luxembourg TVA (VAT identifier) with a correct two-digit check pair. Use `format=vat` for the LU-prefixed VAT number. Set `invalid=true` for a TVA with a deliberately wrong check pair.

A Luxembourg VAT number (numéro de TVA) is the letters LU followed by eight digits: a six-digit body and a two-digit check pair. It is the simplest checksum in the fleet — the check pair is just the body taken modulo 89.

How it’s calculated

The two-digit check pair is simply the six-digit body taken modulo 89, zero-padded to two digits.

Algorithm

  1. Take the six-digit body (the part after the LU prefix, before the check pair).
  2. Interpret it as an integer and compute body mod 89. The result is in the range 0–88.
  3. Zero-pad that value to two digits — that is the check pair.
  4. The full VAT number is LU + the six-digit body + the two-digit check pair.

Worked example

LU + body 123456 + check pair ??

Body = 123456.
123456 mod 89: 89 × 1387 = 123443, and 123456 − 123443 = 13, so the remainder is 13.
13 zero-padded to two digits = "13".

The check pair is 13, so the VAT number is LU12345613.

Edge cases

  • The body’s first digit is drawn 1–9, so the six-digit body never has a leading zero.
  • Because the check pair is body mod 89, it always lands in 00–88 — the pair 89–99 can never occur in a valid LU VAT number.
  • A body that is an exact multiple of 89 gives check pair 00 (e.g. body 000089 → 00), which is valid, not a placeholder.

Gotchas

  • The modulus is 89, not 97 (the IBAN/mod-97 family) nor 11 — using the wrong modulus is the classic mistake here.
  • The check is over the six-digit body only; the LU country prefix is not part of the arithmetic.

Parameters

ParameterTypeDescription
countinteger1–10000Number of records to return, 1–10000. Omitted returns a single record; set it for a batch. Costs 1 token plus a tenth per record.
edgebooleanRestrict output to valid edge-case TVAs from the rare corners.
extremebooleanReturn a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation.
format"national" | "vat"Rendering: bare 8-digit TVA (default) or the LU-prefixed VAT number.
invalidbooleanReturn a TVA with a deliberately wrong two-digit check pair.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 8-digit TVA.

Other generators for Luxembourg

See all generators for Luxembourg →

The same kind of identifier elsewhere

Austrian data · Austrian FirmenbuchnummerAustrian data · Austrian SteuernummerAustrian data · Austrian UIDBelgian data · Belgian OndernemingsnummerBulgarian data · Bulgarian EIKCanadian data · Canadian Business NumberCzech data · Czech IČODanish data · Danish CVRDutch data · Dutch btw-idDutch data · Dutch KvK numberDutch data · Dutch RSINEstonian data · Estonian KMKREstonian data · Estonian registrikoodFrench data · French SIRENGerman data · German HandelsregisternummerGerman data · German Personalausweis numberGerman data · German USt-IdNrGerman data · German Wirtschafts-IdNrHungarian data · Hungarian adószámHungarian data · Hungarian cégjegyzékszámIrish data · Irish CRO numberIrish data · Irish VAT numberItalian data · Italian Partita IVALatvian data · Latvian registracijas numursLithuanian data · Lithuanian įmonės kodasLithuanian data · Lithuanian PVM (VAT) numberMaltese data · Maltese identity card numberMaltese data · Maltese VAT numberPolish data · Polish driving licence numberPolish data · Polish ID card numberPolish data · Polish KRS numberPolish data · Polish land and mortgage register numberPolish data · Polish NIPPolish data · Polish passport numberPolish data · Polish REGONPortuguese data · Portuguese Cartão de Cidadão numberRomanian data · Romanian CUI/CIFSlovak data · Slovak IČ DPHSlovak data · Slovak IČOSpanish data · Spanish CIFSwedish data · Swedish organisationsnummerUS data · US Employer Identification Number

Try it

Generate a live example below — every response is valid by format and entirely synthetic.