{"id":"aba-routing-validate","version":"1.0.0","description":"Validate a 9-digit US ABA routing number's 3-7-1 weighted check digit and classify its 2-digit Federal Reserve prefix.","supported_operations":["validate a us bank routing number","check an aba routing number's check digit","what federal reserve district is this routing number","is this a thrift or electronic routing number","verify a wire transfer routing number","בדיקת מספר ניתוב בנק אמריקאי"],"unsupported_operations":["looking up the bank name for a routing number (no bank directory is pinned)","account-number validation (routing numbers have no relation to the account number)","IBAN or CLABE validation"],"semantics":["routing_number is taken exactly as given; no spaces or hyphens are stripped, no case folding.","If routing_number.length is not 9, valid:false, reason:'wrong_length', prefix_type:null, federal_reserve_district:null, check_digit:null.","If routing_number does not match ^[0-9]{9}$, valid:false, reason:'invalid_character', same fields null.","Otherwise check_digit = routing_number[8], always populated from here on. prefix2 = routing_number[0:2] as an integer.","Classification: 0 -> government (no district); 1-12 -> primary (district = prefix2); 21-32 -> thrift (district = prefix2-20); 61-72 -> electronic (district = prefix2-60); 80 -> traveler_cheque (no district); anything else is unassigned.","If prefix2 is unassigned, valid:false, reason:'invalid_prefix', prefix_type:null, federal_reserve_district:null (check_digit still populated).","Otherwise weighted checksum: the 9 digits multiplied by fixed positional weights [3,7,1,3,7,1,3,7,1], summed. If the sum mod 10 is not 0, valid:false, reason:\"check_digit_mismatch\". Otherwise valid:true, reason:null."],"limits":{"max_routing_number_bytes":20},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["routing_number"],"properties":{"routing_number":{"type":"string","minLength":1,"maxLength":20}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","prefix_type","federal_reserve_district","check_digit"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"wrong_length","invalid_character","invalid_prefix","check_digit_mismatch"]},"prefix_type":{"type":["string","null"],"enum":[null,"government","primary","thrift","electronic","traveler_cheque"]},"federal_reserve_district":{"type":["integer","null"],"minimum":1,"maximum":12},"check_digit":{"type":["string","null"],"pattern":"^[0-9]$"}}},"examples":[{"input":{"routing_number":"021000021"},"output":{"valid":true,"reason":null,"prefix_type":"primary","federal_reserve_district":2,"check_digit":"1"}},{"input":{"routing_number":"004000006"},"output":{"valid":true,"reason":null,"prefix_type":"government","federal_reserve_district":null,"check_digit":"6"}},{"input":{"routing_number":"990000000"},"output":{"valid":false,"reason":"invalid_prefix","prefix_type":null,"federal_reserve_district":null,"check_digit":"0"}}],"execute_url":"/v1/tools/aba-routing-validate/versions/1.0.0/execute"}