> ## Documentation Index
> Fetch the complete documentation index at: https://developer.tazapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ABA Routing Number Validation

ABA routing numbers are 9-digit codes used to identify financial institutions in the United States. They use the **ABA 3-7-1 checksum algorithm** for validation.

## ABA 3-7-1 Checksum Algorithm

The routing number is valid if the weighted sum is **divisible by 10** (modulo 10 = 0).

### Validation Steps

**Step 1**: Multiply each digit by its weight

Each digit position has a specific weight: **3, 7, 1, 3, 7, 1, 3, 7, 1**

**Example**: `021000021`

```
(0 × 3) + (2 × 7) + (1 × 1) + (0 × 3) + (0 × 7) + (0 × 1) + (0 × 3) + (2 × 7) + (1 × 1)
= 0 + 14 + 1 + 0 + 0 + 0 + 0 + 14 + 1
= 30
```

**Step 2**: Calculate modulo 10

```
30 mod 10 = 0
```

**Step 3**: Validate

* **If remainder = 0**: Routing number is valid ✓
* **If remainder ≠ 0**: Routing number is invalid ✗

## Implementation in Go

```go theme={null}
package main

import "fmt"

func ValidateABARoutingNumber(aba string) bool {
	// Must be exactly 9 digits
	if len(aba) != 9 {
		return false
	}

	// 3-7-1 checksum algorithm:
	// Multiply positions 1,4,7 by 3; positions 2,5,8 by 7; positions 3,6,9 by 1
	// Sum all results — modulo 10 must equal 0
	d := func(i int) int { return int(aba[i] - '0') }

	sum := 3*(d(0)+d(3)+d(6)) +
		7*(d(1)+d(4)+d(7)) +
		1*(d(2)+d(5)+d(8))

	return sum%10 == 0
}

func main() {
	testCases := []struct {
		routingNumber string
		valid         bool
	}{
		{"021000021", true},  // Chase Bank
		{"111000025", true},  // Bank of America
		{"123456789", false}, // Invalid checksum
	}

	for _, tc := range testCases {
		result := ValidateABARoutingNumber(tc.routingNumber)
		status := "✓"
		if !result {
			status = "✗"
		}
		fmt.Printf("%s %s (expected: %v)\n", status, tc.routingNumber, tc.valid)
	}
}
```

## Related Resources

* [Create Beneficiary API](/api-reference/tazapay-api/create-beneficiary)
* [Create Payout API](/api-reference/tazapay-api/create-payout)
* [Field Validation Updates](/changelog/2026/field-validation-updates)
