United Kingdom ยท Vocalink rules

UK modulus checking for sort codes and accounts

A UK IBAN carries a sort code and an account number, and each sort code range has its own validation rules. We apply the Vocalink modulus checking rules to every UK IBAN, so an account number that can't exist at that branch is caught before the payment is sent.

14 exception rules covered
What we check

The rules of the sort code, not a generic checksum

The IBAN checksum is recomputed for any account number, so it passes a mistyped one. Modulus checking looks at the sort code, finds the rules that apply to its range, and tests the account number against them.

1. Sort code
Find the rules for its range
2. Algorithm
MOD10, MOD11 or DBLAL, with the range's weights
3. Exceptions
Exceptions 1 to 14, double checks, substitution
4. Result
Pass or fail, in the same response
In the response

One extra line in the validation you already call

The modulus result is added to the validations list of the standard response. A failing account number turns the overall result into an invalid IBAN, so a single check on result covers it.

{ "result": 400, "message": "Invalid IBAN Number", "validations": [ { "result": 200, "message": "Valid IBAN length" }, { "result": 200, "message": "Valid IBAN Checksum" }, { "result": 200, "message": "Valid IBAN Structure" }, { "result": 411, "message": "Invalid Account Number Checksum" } ], // data: bank, branch and BIC details as usual }

Try a UK IBAN in the checker, or read the API documentation.

FAQ

Common questions about UK modulus checking

What is UK modulus checking?

UK banks publish, through Vocalink (now part of Pay.UK), the rules that decide whether a sort code and account number pair is valid: which algorithm applies to each sort code range, the weights to use, and a set of exceptions. Modulus checking runs those rules before a payment is sent.

Why isn't the IBAN checksum enough for the UK?

The IBAN check digits are calculated over the whole IBAN, so they are recomputed for any account number, including a mistyped one. Only the modulus rules of the sort code tell you whether that account number can exist at that branch.

Which rules do you implement?

The MOD10, MOD11 and double alternate (DBLAL) algorithms, single and double checks per sort code range, all 14 exception rules of the specification, and sort code substitution.

What happens with a sort code that isn't in the table?

The specification says such accounts can't be checked and must be treated as valid, so we accept them. The IBAN itself is still validated in full: length, checksum and structure.

Does a passing check mean the account exists?

No. It means the sort code and account number pair is well-formed under the modulus rules. It doesn't confirm the account is open, active or held by a specific person. Only the bank can confirm that.

Do I need a separate endpoint or parameter?

No. The check runs automatically on every UK IBAN sent to the validate endpoint, and in the self-hosted engine too. Pass account_checksum=NO if you ever need to skip it.