A payout address can be 44 valid characters and still be unspendable

Sharing a failure mode that is easy to miss when building contributor payout batches by hand.

A Solana address is 32-44 base58 characters. A typo can still produce a string that passes every length and charset check, and the tokens go somewhere nobody controls. There is no bounce and no recovery.

The real test is whether the key sits on the ed25519 curve. Roughly half of single-character corruptions produce a string that is still valid base58 and still the right length, but is not a point on the curve. A length check catches almost none of them.

Most CSV tooling does not run that check, including batch-transfer scripts published by multisig providers, which validate token accounts but not the key itself.

I built a checker that runs every row against the curve, flags duplicates, and diffs this month’s batch against last month’s so a changed amount is visible before anyone signs. It never builds or signs a transaction - you take the clean CSV to Squads or Safe yourself. Free, nothing leaves the browser session. Happy to share the link if useful; not posting one as a brand-new account here.

Curious how others validate a payout batch before it reaches the signers. Is it eyeballed, or is there a step I am missing?