SEDOL check digit
For the body B0YBKJ the check digit is 7, so the full SEDOL is B0YBKJ7. The tool computes that digit for any six-character body or validates a complete code, catching many single-character typos before a row is linked to the wrong security. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Code
- B0YBKJ
- Calculation mode
- Compute
- Input
- B0YBKJ
- Check digit
- 7
- With check
- B0YBKJ7
Stock Exchange Daily Official List codes identify listed securities with a compact seven-character string: six body characters plus a single check digit. That trailing digit is not random — it is chosen so a weighted sum of all seven positions is divisible by ten, catching many single-character typos when codes are re-keyed from screens, PDFs, or partner files. This capability computes the official SEDOL check digit for any valid six-character body using the standard weights one, three, one, seven, three, and nine, or validates a complete seven-character SEDOL and reports whether the stored check digit matches the recomputed value.
How the SEDOL check digit is calculated
A SEDOL body is exactly six characters drawn from digits zero through nine and consonants of the Latin alphabet. Letters map to values ten through thirty-five (A is ten, B is eleven, and so on through Z as thirty-five); digits keep their face values. Official SEDOL practice never places the vowels A, E, I, O, or U in the body so the code cannot form ordinary words, while Y remains allowed as a consonant.
Each of the six body positions is multiplied by a fixed weight from the sequence one, three, one, seven, three, nine. The six products are summed, the sum is reduced modulo ten, and the check digit is ten minus that residue, modulo ten again so a residue of zero yields check digit zero. Appending that single digit produces a seven-character SEDOL whose full weighted contribution remains a multiple of ten.
This tool implements that standard walk only — not a house variant, not an ISIN composite checksum, and not a CUSIP scheme. The response always names the algorithm as sedol so downstream systems can record which scheme protected the identifier. Knowing the weights and value map helps you debug partner files: if two systems disagree on a digit, one of them is almost always using the wrong weights or treating a vowel as valid body input.
Where SEDOL check digits fit real workflows
Security-master and reference-data teams load SEDOL columns from exchange files, data vendors, and internal spreadsheets; a single mistyped character on a handheld path or during copy-paste is common, and the check digit catches many of those single-position errors before the row is linked to the wrong instrument. Middle-office and operations desks recompute expected check digits for every SEDOL in a settlement exception report and quarantine rows where the stored full code no longer matches, which surfaces both human edits and off-by-one bugs in generators.
Product teams that already expose Luhn or ISBN check-digit tools can still adopt this SEDOL-specific capability when the search intent and alphabet rules differ: SEDOL is not a general mod-ten account scheme and is not an ISBN layout. Do not treat a passing SEDOL check as proof of listing status, ownership, or that a trade is authorized — it only proves the character string is well formed under this algorithm, the same honesty bar you apply to any checksum.
What you can do with it
Audit security-master SEDOL columns
Batch-validate every SEDOL in a security master or settlement exception extract and quarantine rows whose check digit no longer matches the recomputed expected value.
FAQ
What is a SEDOL check digit?
It is a single trailing digit computed with fixed weights one, three, one, seven, three, and nine over the six-character body so the full seven-character SEDOL’s weighted sum is a multiple of ten, catching many single-character typos.
Why are vowels rejected?
Official SEDOL practice never places A, E, I, O, or U in the body so codes cannot form ordinary words.
Is the SEDOL check digit tool free?
The browser tool is free and runs locally.
How is the SEDOL check digit calculated?
Each body character gets a value, digits as they are and letters from 10 for A up to 35 for Z. Multiply them by 1, 3, 1, 7, 3 and 9, add the results, and the check digit brings the total to a multiple of ten. For B0YBKJ it is 7.
How do I check a complete SEDOL?
Choose validation and paste the seven-character code. The tool recalculates the check digit from the first six characters, compares it with the last one and tells you whether they match, along with the digit it expected.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/enc/sedol \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"B0YBKJ"}'const res = await fetch("https://api.kit.forhosting.com/enc/sedol", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"code": "B0YBKJ"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/sedol",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"code": "B0YBKJ"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/sedol", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"code":"B0YBKJ"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"code":"B0YBKJ"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/sedol", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"code": "B0YBKJ"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.sedol",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Vowels and other non-SEDOL characters are rejected with a clear invalid_input error instead of being silently rewritten. Run it free in the browser or call the KIT API at the published price; both paths use the same pure arithmetic with no network and no stored identifiers.
How the SEDOL check digit is calculated
You receive the check digit as a one-character string, the full code with the digit appended, or a boolean validity flag with the expected check digit recomputed from the body alone.
How to compute a check digit or validate a full SEDOL
Send a code field with either a six-character body or a full seven-character SEDOL. Spaces and hyphens are stripped and case is folded to uppercase before validation, matching how spreadsheet exports and PDF extracts often present codes. Mode validate expects a full seven-character code ending in a digit zero through nine. Empty strings, missing code, wrong length for the chosen mode, vowels in the body, and invalid mode values fail before any weighted sum runs and are not billed. Mode compute is the default: the engine requires exactly six body characters after normalization, rejects vowels and non-alphanumeric symbols with invalid_input, returns check_digit as a one-character string, and returns with_check as the body plus that digit so you can store or print a single string. The response reports valid true when the trailing digit matches the recomputed check digit, and always includes check_digit, expected_check_digit, and the six-character payload without the last character. That shape makes it easy to show “you typed X, expected Y” in an operations form without a second call. 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 protect bulk security master imports, trade blotter repairs, and middle-office exception queues without negotiating a custom tier. Prefer compute when you mint or complete a body from a data vendor; prefer validate when you receive a full SEDOL from a user, a counterparty file, or a scanned list and need a boolean gate before looking up the instrument.
Where SEDOL check digits fit real workflows
Portfolio and risk systems that accept user-entered security identifiers can call validate mode at the form boundary and block lookup when valid is false, showing expected_check_digit to help correct a single mistype without opening a ticket.
Integration use cases
Complete SEDOL bodies from vendor feeds
Take a six-character body from an exchange or vendor file, call compute mode, and store with_check so every instrument row carries a full seven-character SEDOL before it is published downstream.
Validate typed or imported SEDOLs at entry
When a user or partner file submits a full SEDOL, call validate mode and block lookup when valid is false, showing expected_check_digit to help correct a single mistype.
Technical questions
How do I compute a SEDOL check digit with this API?
POST with code set to the six-character body and mode compute (or omit mode). The response includes check_digit and with_check (body plus check digit).
How do I validate a full seven-character SEDOL?
POST with the full seven-character string and mode validate. The response includes valid, check_digit, expected_check_digit, and payload without the last character.