How to Convert ISIN to WKN: Complete Guide with Examples
Last updated: February 2026 · 8 min read
If you work with German securities, you've likely encountered both ISIN and WKN numbers. While the ISIN (International Securities Identification Number) is the global standard, the WKN (Wertpapierkennnummer) remains deeply embedded in Germany's financial infrastructure. This guide explains exactly how the two relate and how to convert between them.
🔧 Quick conversion: Use our free ISIN to WKN converter tool for instant results. This guide explains the underlying logic.
Understanding the ISIN-WKN Relationship
The relationship between ISIN and WKN is straightforward for German securities: the WKN is literally embedded inside the ISIN. Every German ISIN follows this structure:
| Component | Characters | Example | Description |
|---|---|---|---|
| Country Code | 1–2 | DE | Always "DE" for German securities |
| Padding | 3–5 | 000 | Three zeros as padding |
| WKN | 6–11 | 766403 | The 6-character WKN |
| Check Digit | 12 | 9 | Luhn algorithm check digit |
So the ISIN DE0007664039 contains the WKN 766403 at positions 6–11. The conversion is essentially a matter of extracting or wrapping these characters.
Step-by-Step: ISIN → WKN
Converting a German ISIN to a WKN takes three steps:
- Verify the country code. Check that the ISIN starts with "DE". If it doesn't, the security is not German, and it won't have a standard WKN. (Some international securities do have WKNs assigned by German exchanges, but these can't be derived from the ISIN structure alone.)
- Remove the prefix and check digit. Strip the first 5 characters ("DE" + "000") and the last character (check digit). You're left with 6 characters.
- Handle leading zeros. If the remaining 6 characters start with a zero (e.g., "0BAY01"), it's part of the WKN. WKNs can contain both letters and digits. The result is your WKN.
Worked Examples
| ISIN | → Strip Prefix/Suffix | WKN | Security |
|---|---|---|---|
| DE0007664039 | DE000 766403 9 | 766403 | Volkswagen AG |
| DE0007164600 | DE000 716460 0 | 716460 | SAP SE |
| DE000BAY0017 | DE000 BAY001 7 | BAY001 | Bayer AG |
| DE0005140008 | DE000 514000 8 | 514000 | Deutsche Bank AG |
| DE0008430026 | DE000 843002 6 | 843002 | Munich Re |
Step-by-Step: WKN → ISIN
The reverse conversion—WKN to ISIN—requires one additional step: calculating the Luhn check digit.
- Start with the country code. Prepend "DE" for a German security.
- Add padding. Insert "000" between the country code and the WKN. This creates an 11-character string: DE000 + WKN.
- Calculate the check digit. Apply the Luhn algorithm (also called the "double-add-double" method) to compute the 12th character. The algorithm works by converting letters to numbers (A=10, B=11, ..., Z=35), then applying modular arithmetic.
- Append the check digit. The result is your complete ISIN.
The Luhn Algorithm for ISINs
The Luhn check digit calculation for ISINs works as follows:
- Convert all letters to numbers: A=10, B=11, ..., Z=35. Digits remain unchanged.
- Concatenate all resulting digits into a single string.
- Starting from the rightmost digit, double every second digit.
- If doubling produces a number greater than 9, subtract 9 from it.
- Sum all digits.
- The check digit is (10 - (sum mod 10)) mod 10.
⚠️ Common mistake: Many implementations get the "starting position" wrong. For ISINs, you double the digits at even positions when counting from the right of the expanded digit string. Getting this wrong will produce an incorrect check digit about 90% of the time.
What About Non-German Securities?
The direct structural conversion only works for German ISINs (starting with "DE"). However, many international securities also have WKNs assigned by German exchanges for trading on venues like XETRA or the Frankfurt Stock Exchange.
For example, Apple Inc. has:
- ISIN: US0378331005 (US country code, contains CUSIP, not WKN)
- WKN: 865985 (assigned by German exchange, not derivable from the ISIN)
For these cases, you need a lookup database or API that maps between the identifiers. Our converter tool handles these cross-border lookups using a comprehensive securities database.
Where WKN Is Still Used
Despite the global adoption of ISIN as the primary identifier, WKN remains relevant in several contexts:
- German brokers and banks: Most German online brokers (comdirect, Trade Republic, Scalable Capital, ING DiBa) still prominently display WKNs alongside ISINs in their platforms.
- German financial media: Publications like Börse Online, Handelsblatt, and finanzen.net routinely reference WKNs. Many German investors search for stocks by WKN rather than ISIN.
- Derivative products: Structured products (Zertifikate, Optionsscheine) issued in Germany are commonly identified by their WKN, especially in marketing materials.
- Legacy systems: Older banking and settlement systems in Germany still use WKN as a primary key internally.
- Tax reporting: German tax documents and annual statements frequently list both identifiers.
Historical Context
The WKN system was introduced in 1955 by the German banking association (Bundesverband deutscher Banken) to standardize securities identification across German financial institutions. Originally, WKNs were purely numeric and 6 digits long.
In 2003, the WKN system was expanded to include alphanumeric characters (letters A–Z in addition to digits 0–9) to accommodate the growing number of securities, particularly derivative products. This change increased the theoretical capacity from 1 million to over 2 billion unique identifiers.
When ISINs were adopted globally in the 1990s and 2000s, Germany integrated the WKN into the ISIN structure by using it as the national security identifier portion. This design decision means that for German-issued securities, the two systems are inherently linked—a feature that's unique to Germany and makes conversion particularly straightforward.
Programmatic Conversion
If you need to convert identifiers programmatically, here's the logic in pseudocode:
// ISIN → WKN (German securities only)
function isinToWkn(isin):
if isin.length != 12: return error("Invalid ISIN length")
if not isin.startsWith("DE"): return error("Not a German ISIN")
wkn = isin.substring(5, 11) // characters 6-11
return wkn
// WKN → ISIN
function wknToIsin(wkn):
if wkn.length != 6: return error("Invalid WKN length")
base = "DE000" + wkn
checkDigit = calculateLuhnCheckDigit(base)
return base + checkDigit
// Luhn check digit for ISIN
function calculateLuhnCheckDigit(code):
// Convert letters: A=10, B=11, ..., Z=35
digits = ""
for char in code:
if char is letter: digits += (char - 'A' + 10)
else: digits += char
// Double every second digit from right
sum = 0
for i from digits.length-1 to 0:
d = int(digits[i])
if (digits.length - i) is even: d = d * 2
if d > 9: d = d - 9
sum += d
return (10 - (sum % 10)) % 10
Common Pitfalls
- Assuming all WKNs are numeric. Since 2003, WKNs can contain letters. For example, Bayer AG's WKN is BAY001.
- Confusing WKN with other 6-character codes. A SEDOL is also 7 characters (6 + check digit), but it's a completely different system used in the UK.
- Trusting the conversion for non-DE ISINs. Extracting characters 6–11 from a US ISIN gives you part of the CUSIP, not a WKN.
- Ignoring alphanumeric WKNs in regex validation. If your system validates WKNs with [0-9]{6}, it will reject valid WKNs like BAY001. Use [A-Z0-9]{6} instead.
Frequently Asked Questions
Can I convert any ISIN to a WKN?
Directly, only German ISINs (starting with "DE"). For international securities, you need a database lookup, as the WKN is assigned independently by German exchanges.
Is the WKN being phased out?
Not in practice. While ISIN is the official standard for regulatory purposes, WKN remains widely used in Germany. All major German brokers, financial media, and tax documents continue to display WKNs. It's likely to persist for decades due to its deep integration into German financial culture.
Are WKNs unique globally?
WKNs are unique within the German system. However, the same 6-character string might coincidentally match an identifier in another country's system. Always use WKN in conjunction with the German market context to avoid ambiguity.
How do I validate a WKN?
Unlike ISINs and CUSIPs, WKNs have no check digit. A valid WKN is simply 6 alphanumeric characters. The only way to verify that a WKN refers to an actual security is to look it up in a database.
Try It Yourself
Convert ISIN to WKN instantly with our free tool — no registration required.
Open Converter →