KibiPay
HomeBlog › Addressing

Routing Numbers, Sort Codes, and Wallet Addresses

7 min read Addressing
AddressingRailsInteroperability
Routing Numbers, Sort Codes, and Wallet Addresses

Every payment rail had to answer the same question — how do I name a destination? — and every rail answered it differently. The result is a zoo of address formats: nine-digit US routing numbers, six-digit UK sort codes, E.164 phone numbers, and base58 wallet strings. Understanding their shapes is the first step to hiding them behind a single alias.

US ABA routing numbers

In the US, a bank is identified by a nine-digit ABA routing number, paired with an account number to reach a specific account. The routing number carries a checksum in its last digit, computed from a weighted sum of the others, so many typos are caught instantly. It is a two-part address: institution plus account.

UK sort codes

The UK uses a six-digit sort code, usually written in three pairs, to identify a bank branch, combined with an eight-digit account number. Together they route a Faster Payment or Bacs transfer. The sort code is more granular than a routing number historically because it pointed at a specific branch, a relic of a branch-centric banking era.

AddressRegionShapeChecksum
ABA routingUS9 digits + accountYes
Sort codeUK6 digits + accountModulus check
MSISDNGlobal+E.164 numberFormat only
WalletSolanabase58 public keyEncoding-derived

MSISDNs as addresses

A phone number is an address that people already memorise. In mobile money and proxy schemes, an MSISDN in E.164 form stands in for an underlying wallet or account. It has no bank-style checksum, so verification of ownership — not arithmetic — is what makes it trustworthy, which is why a confirm step matters so much for phone aliases.

Base58 wallet addresses

On-chain, an account is a public key rendered in an encoding like base58. There is no institution to route through; the address is the account, and the network settles directly. Base58 avoids ambiguous characters, and the encoding itself provides a degree of error detection, but a mistyped wallet address usually just points at a different valid-looking account — which is why copy-paste and QR dominate.

Four formats, one alias

The reason these differences matter is that users should never have to care about them. A directory maps a friendly handle onto whichever of these addresses applies, validates each at registration, and hands the right one to the right rail at send time. That is the core job KibiPay's directory performs: normalise the zoo into a single payable identity.

Why this unification pays off

When addresses are unified behind an alias, a sender's mental model collapses to "pick a person". The complexity does not vanish — it moves to the directory, where it can be validated once and reused everywhere. For a fuller treatment of aliases across these formats, see addressing a payment.

Validation is your first defense

Each address format ships with its own built-in error detection, and a directory should use every bit of it. An ABA routing number's checksum, a sort code's modulus check, and base58's encoding rules all catch a meaningful fraction of typos at the moment of entry — long before a payment is ever attempted. E.164 phone numbers lack arithmetic checks, so they lean on strict format validation plus proof-of-ownership instead. Running these checks at registration rather than at send time means a malformed address never becomes a payable alias in the first place. It is far cheaper to reject a bad number in a form than to chase a misdirected payment across a settlement network, and users forgive a clear "that doesn't look right" far more readily than they forgive a lost transfer.

Different rails will always name accounts their own way. The trick is to learn their shapes well enough that your users never have to.

See it in motion

KibiPay connects UK Faster Payments, Bacs, CHAPS, Mojaloop mobile money, a mock ACH rail and Solana behind one API, with a cross-rail alias directory, ISO 20022 messaging and real-time fraud & AML screening.

Open the live console Directory demo