apyhub
Back
▣ DATA VALIDATION · FINANCE

US Routing Number Lookup API

What it does

Bank Routing Lookup retrieves bank information associated with a U.S. routing number. Send a 9-digit routing_number as a query parameter and get back the routing record in the API's response body.

Use it when you need to identify the bank behind an ACH or wire routing number before you submit a payment, validate customer-provided banking details, or enrich a finance workflow with routing metadata. The request is simple: one required string field, routing_number, and it must be exactly 9 characters long.

Because the response schema is open-ended, treat the returned payload as a structured routing lookup result rather than a fixed set of fields. That makes this endpoint useful as a lightweight reference check inside onboarding flows, payment forms, or internal finance tools where you only need to confirm a routing number and consume the bank data the API provides.

GET
Lookup bank by routing number
https://api.eu.apyhub.com/dosvak/lookup-bank-by-routing-number

QUICKSTART

GUIDE

Quickstart

Look up a bank by its 9-digit routing number using the required query parameter.

curl -X GET "https://api.eu.apyhub.com/dosvak/lookup-bank-by-routing-number?routing_number=021000021" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object containing the lookup result, whether the routing number was found, the associated bank information, and attribution details.

{
  "input": "021000021",
  "found": true,
  "bank": {
    "routing_number": "021000021",
    "customer_name": "JPMORGAN CHASE",
    "address": "3RD FLOOR",
    "city": "TAMPA",
    "state": "FL",
    "zip_code": "336100000",
    "phone": "8134323700",
    "office_code": "O",
    "record_type_code": "1",
    "servicing_frb_number": "021001208",
    "institution_status_code": "1",
    "data_view_code": "1",
    "source": "fedach",
    "updated_at": "2026-07-29T17:19:03.916039Z"
  },
  "attribution": []
}
TRY ITLIVE · 100 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

$## What it does

Looks up bank details using a routing number provided as a query parameter. Returns the matched bank record, a found flag, and attribution information.

Query Parameter(s)

AttributeTypeMandatoryDescription
routing_numberStringYesRouting number. Must be exactly 9 characters long (minLength: 9, maxLength: 9).

Response

Returns a JSON object with the routing number that was looked up, whether a match was found, the bank record, and attribution information.

ParameterTypeMandatoryDescription
inputStringYesThe routing number supplied in the request.
foundBooleanYestrue when a matching routing number was found.
bankObjectNoThe matched bank record. Absent or empty when found is false.
bank.routing_numberStringNoThe bank's 9-digit routing number.
bank.customer_nameStringNoRegistered name of the institution.
bank.addressStringNoStreet address on file.
bank.cityStringNoCity.
bank.stateStringNoTwo-letter state code.
bank.zip_codeStringNoZIP code, including the +4 extension when present.
bank.phoneStringNoContact phone number, digits only.
bank.office_codeStringNoOffice type code, for example O for main office and B for branch.
bank.record_type_codeStringNoFedACH record type code.
bank.servicing_frb_numberStringNoRouting number of the servicing Federal Reserve Bank.
bank.institution_status_codeStringNoFedACH institution status code.
bank.data_view_codeStringNoFedACH data view code.
bank.sourceStringNoDataset the record came from, for example fedach.
bank.updated_atStringNoWhen the record was last refreshed. Format: date-time.
attributionObject ArrayNoSource attribution entries for the dataset. Empty when no attribution is required.
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.