Eleven more generators, and almost every American assumption goes the other way.
Where the SSN and EIN carry no checksum, the SIN and Business Number are both Luhn-checked — genuinely verifiable, so invalid=true breaks real arithmetic instead of merely violating a range. Where the US has no account-number standard, Canada has CPA Standard 006, fixed at 7 or 12 digits.
My favourite piece of real-world mess: the transit number is returned in both renderings — XXXXX-YYY as printed on a cheque, 0YYYXXXXX for electronic transfer — and the field order reverses between them. A system that accepts one routinely chokes on the other. That's a production bug somewhere right now.
Bilingual throughout: Ltée and ULC beside Inc., plates for all 13 provinces and territories, and QC / Quebec / Québec all resolving to the same place.