Annex 2: ISBT 128 check character calculation

Calculation procedure

ISBT 128 donation numbers utilise check characters based on the ISO 7064 modulus 37,2 algorithm. This annex shows how to calculate the check character for a given number. The calculation is based on the donation number string excluding the leading ‘=’ symbol and the flag characters.

To calculate the ISBT check character:

  1. For each character in the string, determine its check value as required by ISO 7064 (see Table A2).
  2. For each character in the string, determine its weighted check value by multiplying the check value from step 1 by the nth power of 2 (2n), where n is the position of the character from the right-hand end of the string.
  3. Sum the weighted values from step 2.
  4. Find the modulus 37 value of the value from step 3.
  5. Subtract the value obtained in step 4 from 38.
  6. Find the modulus 37 value of the result of step 5. This is the 37,2 checksum.
  7. Calculate the barcode check character by adding 60 to the 37,2 checksum. The eye-readable check character can be determined by cross-referencing the 37,2 checksum value to the characters in Table A2.


Table A2: Mapping from characters to ISO 7064 check values
Character Value
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
A
10
B
11
C
12
D
13
E
14
F
15
G
16
H
17
I
18
J
19
K
20
L
21
M
22
N
23
O
24
P
25
Q
26
R
27
S
28
T
29
U
30
V
31
W
32
X
33
Y
34
Z
35
*
36

Calculation example

The following is a worked example for donation number G123 498 654 321.

Step 1 – determine each character's check value

Using Table A2, each character in the donation number has the following check value:

  • G = 16
  • 1 = 1
  • 2 = 2
  • 3 = 3
  • 4 = 4
  • 9 = 9
  • 8 = 8
  • 6 = 6
  • 5 = 5
  • 4 = 4
  • 3 = 3
  • 2 = 2
  • 1 = 1


Step 2 – determine each character's weighted value

Each character's check value is multiplied by 2n where n is its position from the right of the string:

Character Check value Position from right (n) 2ⁿ Weight value
G
16
13
8192
131072
1
1
12
4096
4096
2
2
11
2048
4096
3
3
10
1024
3072
4
4
9
512
2304
9
9
8
256
2304
8
8
7
128
1024
6
6
6
64
384
5
5
5
32
160
4
4
4
16
64
3
3
3
8
24
2
2
2
4
8
1
1
1
2
2

Step 3 – sum the weighted values

Σ (weighted values) = 148354


Step 4 – find the modulus 37 value of the sum of weighted values

148354 (mod 37) = 21


Step 5 – subtract the modulus 37 value from 38

38 - 21 = 17


Step 6 – find the modulus 37 value of the result

17 (mod 37) = 17


Step 7 – determine the barcode check character by adding 60

17 + 60 = 77

Result

ISBT 128 barcode check character = 77

ISBT 128 eye-readable character = H (value 17 in Table A2)

Last updated on 29 May 2013