JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 10282
  • Score
    100M100P100Q152576F
  • License MIT

Package Exports

  • uk-modulus-check
  • uk-modulus-check/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (uk-modulus-check) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

UKModulusCheck

Overview

TypeScript class that validates UK bank account details using the modulus checking algorithm.

It only users vanilla typescript, and the 'fs' file-loading library.

From time to time, Vocalink updates the txt files here mapping sort-code ranges to validation weights. We currently use v7-90 (valid from 17 August 2024).

Status

Build Status

Installation

npm install uk-modulus-check

See here for the NPM package.

Usage

import ModulusChecker from "uk-modulus-check";

const checker = new ModulusChecker();

console.log(checker.validate('180002', '00000190')); // true
console.log(checker.validate('938063', '15763217')); // false

Details

This specification details logic to differentiate valid vs. invalid pairs of sort-code and account number.

A mathematical algorithm compares the two values, and check if the two can be paired together legitimately.

This page details any changes to the specification.

Technicalities

In general, I tried to minimise risk of returning false for a valid bank account.

  1. if an account has an unseen sort code (not covered by any range in src/data/valacdos), by default, any combination of sort-code and account number will be considered valid. This is altered by instantiating a check with ModulusChecker(false) and then default behaviour will be set to false

  2. I find the specification a bit confusing for some examples, specifically when 2 checks are run on the same account. I mark the account as valid if either of the two validations pass, for cases where multiple validations are provided for the same account. The specific test-cases in listest examples are 23, 27, 28.

Both (1) and (2) might lead to a small % of 'false positives'.

License

MIT

Credits

Thanks to uphold/uk-modulus-checking for creating a good Javascript implementation.

It doesn't seem to have been updated since valacdos-v640 (12/10/2020), which motivates the creation of this package.