Simplified Validation of Bank Routing Numbers

Category:
C#, VB.NET, ASP.NET
Type:
Snippets
Difficulty:
Beginning
Author:
David Schofield

Version Compatibility: Visual Basic 6, Visual Basic 5, Visual Basic.NET

More information:
This is a direct implementation of the algorithm used to validate 9 digit Bank Routing numbers (aka Transit numbers). Note that the routing number string passed to the routine should only consist of digits (ie. it should be pre-cleaned and scrubbed to remove spaces, dashes, etc.) It returns True if the routing number is valid, false if not. Theory: The check digit scheme used on routing numbers for Electronic Funds Transfer (EFT) between banks uses a 9-digit number with position weightings of 3, 7, and 1. The check equation for a number a1a2a3a4a5a6a7a8a9 is 3a1 + 7a2 + a3 + 3a4 + 7a5 + a6 + 3a7 + 7 a8 + a9 mod 10 = 0 This scheme is based on the fact that multiplication modulo 10 yields a permutation of all 10 decimal digits if the multiplication factor is one of the digits 1, 3, 7, or 9, but only a subset of the decimal digits if the factor is 5 or an even digit, as illustrated in the following table: Multiplication modulo 10 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 3 0 3 6 9 2 5 8 1 4 7 7 0 7 4 1 8 5 2 9 6 3 9 0 9 8 7 6 5 4 3 2 1 Note that this scheme cannot detect adjacent transpositions of digits that differ by 5. Test routing numbers include 222371863, 307075259, 052000113

Instructions: Copy the declarations and code below and paste directly into your VB project.

Declarations:

Code: