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.
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.
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.
Try a UK IBAN in the checker, or read the API documentation.
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.