ABA Routing Number 111000025

ABA Routing Number 111000025

You need to confirm whether ABA routing number 111000025 is valid for ACH transfers, identify the bank and branch behind it, and wire this check into your onboarding or payment flow. By the end of this guide, you’ll be able to validate 111000025 against BankDataStack’s routing endpoint, parse the JSON response you need, handle edge cases like not-found results, and decide how to cache the result safely in production.

What 111000025 Identifies and Why It Matters in ACH

ABA routing numbers are 9-digit identifiers used in the United States to route ACH and wire payments. For ACH in particular, validating the routing number upfront helps avoid returns, delays, and manual rework.

Illustration: ABA Routing Number 111000025

Routing number 111000025 resolves to Bank Of America, N.a., associated with an address in Henrico, VA. You can confirm whether this routing number is active for ACH and retrieve a contact phone and branch type, which are useful for exception handling and ops runbooks.

ABA Routing Number Format and Checksum Overview

An ABA routing number is 9 digits. The first 8 digits encode the Federal Reserve routing and the institution, and the 9th digit is a checksum. A common high-level validation is the 3-7-1 weighted checksum across the first eight digits plus the check digit; if the total modulo 10 equals 0, the number is structurally valid. Structural validity does not guarantee that the number is in service for the transfer type you intend—querying a live reference dataset is still required to confirm activity and payment rails (ACH vs. wire).

BankDataStack performs both structural checks and a live lookup so you can verify that 111000025 is active for ACH and get the official bank name and address for your records.

Validate 111000025 via the Routing Endpoint

Use the routing validation endpoint to check a routing number against a payment type. For ACH verification of 111000025, you can copy and run the following request:

curl -X POST "https://www.bankdatastack.com/api/v1/routing/validate" -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"routing_number":"111000025","payment_type":"ach"}'

Here is a representative successful response for 111000025 that you can expect to parse in your application:

{
    "status": "success",
    "data": {
        "routingNumber": "111000025",
        "paymentType": "ach",
        "name": "Bank Of America, N.a.",
        "addressFull": "8001 Villa Park Drive, Henrico, VA 23228",
        "street": "8001 Villa Park Drive",
        "city": "Henrico",
        "state": "VA",
        "zip": "23228",
        "type": "Main Office",
        "phone": "800-446-0135",
        "active": true,
        "lastUpdated": "2026-11-03",
        "address": "8001 VILLA PARK DRIVE"
    }
}

Field usage in payment and onboarding flows:

  • data.routingNumber and data.paymentType: Echo back what was validated (useful for logging/auditing).
  • data.name, data.city, data.state, data.addressFull: Display to the user to confirm the receiving bank during onboarding or beneficiary entry.
  • data.active: Gate the “Submit” or “Continue” action for ACH if false. If not active, block the transfer or prompt for a different routing number.
  • data.type: Useful to differentiate main office vs. branch when building internal ops guides.
  • data.phone: Provide for exception handling or manual confirmations when necessary.
  • data.lastUpdated: A signal for data recency; you can log it and set a cache TTL strategy.

JavaScript Example: Validate and Parse Key Fields

The following Node.js example calls the same endpoint, checks for success, and extracts the fields you’ll typically store or display.

import fetch from "node-fetch";

async function validateRouting(routingNumber, paymentType = "ach") {
const url = "https://www.bankdatastack.com/api/v1/routing/validate";
const res = await fetch(url, {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ routing_number: routingNumber, payment_type: paymentType })
});

if (!res.ok) {
throw new Error(`HTTP ${res.status}: ${await res.text()}`);
}

const payload = await res.json();

if (payload.status !== "success" || !payload.data) {
throw new Error("Lookup failed or not found");
}

const d = payload.data;
return {
routingNumber: d.routingNumber,
paymentType: d.paymentType,
bankName: d.name,
address: d.addressFull || `${d.street}, ${d.city}, ${d.state} ${d.zip}`,
city: d.city,
state: d.state,
phone: d.phone,
active: d.active,
lastUpdated: d.lastUpdated
};
}

// Example usage
validateRouting("111000025", "ach")
.then(info => {
if (!info.active) {
console.error("Routing not active for ACH:", info.routingNumber);
return;
}
console.log("Bank:", info.bankName);
console.log("Address:", info.address);
console.log("Phone:", info.phone);
console.log("Verified ACH routing:", info.routingNumber);
})
.catch(err => {
console.error("Routing validation error:", err.message);
});

Drop-In Integration for Onboarding and ACH Submission

During Beneficiary or Payer Onboarding

  • User enters routing number and account number. Run a client-to-server call to your backend.
  • Your backend calls the routing validation endpoint with payment_type set to ach.
  • If status=success and data.active=true, display data.name, data.city, and data.state for human confirmation (“Bank Of America, N.a., Henrico, VA”).
  • Normalize/store: routing number, bank name, city, state, and a timestamp of when you validated. Keep the raw API JSON for your audit log if policy allows.
  • Proceed to micro-deposit verification or instant account verification (IAV) as needed.

Before Sending an ACH Payment

  • Re-validate routing if your cached entry is stale (see caching guidance below).
  • Confirm data.active is true for ACH. If false or not found, halt the transfer and notify the operator.
  • Log data.lastUpdated and your validation time in the payment event trail.
  • Route the transaction via ACH only if validation passes; otherwise, require a corrected routing number.

Handling Not Found and Other Edge Cases

Not found typically means the routing number is not in the reference dataset for the requested payment type. Common causes are transposition errors, legacy routing numbers that were retired, or a mismatch between the intended rail (ACH vs. wire) and what the number supports.

  • For not found or inactive: Prompt the user to re-check their paperwork or card, and re-enter the routing number.
  • For typos: Implement basic client-side checks (numeric, length 9) before the API call to reduce unnecessary requests.
  • For ambiguous cases: Use data.phone to contact the bank when your policy requires a manual confirmation.

Caching, Data Freshness, and Observability

Reference data changes over time due to mergers, branch consolidations, or rail enablement adjustments. Use a cache keyed by routingNumber and paymentType. On a successful lookup, store the JSON payload, your retrieval timestamp, and data.lastUpdated.

  • Choose a TTL that matches your risk tolerance and traffic patterns. Many teams cache for hours to days and refresh on failure or during scheduled batch runs.
  • Always re-validate when you encounter an ACH return code that suggests routing issues, or when a beneficiary updates their bank details.
  • Emit metrics for success vs. not found and a gauge for data.lastUpdated recency to catch anomalies.

Comparing Bank Identifiers You’ll See in Finance

Developers frequently work with multiple identifier types across regions. Use the correct one per payment rail and geography.

Identifier Scope Primary Use Example Notes
ABA Routing Number United States ACH and wires 111000025 Validate with payment_type=ach or wire before sending.
SWIFT/BIC Global International wires CHASUS33 Used for cross-border; not for US ACH.
IBAN EMEA and other IBAN countries Domestic/SEPA and cross-border in IBAN countries GB82WEST12345698765432 The USA does not use IBAN; do not collect it for US accounts.
Card BIN Global Card network routing and issuer metadata 424242 Only the first 6–8 digits. Never store full PANs in your logs.

Security and Data Handling Notes

  • Route all validation requests through your backend; never expose API keys in client apps.
  • Log minimal PII. Store only what you need: routingNumber, bank name, and validation timestamps are usually sufficient.
  • For card use cases, store only the BIN (first 6–8 digits), never the full card number.
  • Use role-based access for operators who may view phone numbers or addresses returned by the API.

Pricing, Access, and Docs

BankDataStack offers a Starter plan at $49.99/month with a 7-day trial so you can wire up routing validation and ship it to staging before committing. Review request/response fields and additional endpoints in the API reference.

FAQ

Is ABA routing number 111000025 valid for ACH?
Yes. The sample response shows status=success, paymentType=ach, and active=true for 111000025, with the bank name “Bank Of America, N.a.”

Can I use 111000025 for wire transfers?
ACH and wire enablement can differ. Validate with the routing endpoint using payment_type set to wire before initiating a wire, and proceed only if the response indicates the number is active for that rail.

What does “not found” mean for a routing number?
It usually indicates the number isn’t present for the requested rail (ACH/wire), is mistyped, or has been retired. Prompt the user to re-check the number or contact the receiving bank using an official source.

Does the United States use IBAN?
No. The USA does not use IBAN. For US domestic transfers, collect ABA routing number and account number; for international wires, you’ll usually need a SWIFT/BIC and a local account number format.

How should I cache routing validation results?
Cache by routingNumber and paymentType. Use data.lastUpdated as a signal and set a TTL consistent with your risk policy—refresh on schedule and on validation failures or beneficiary updates.

Get an API key and start validating ABA routing number 111000025 in minutes. The Starter plan includes a 7-day trial so you can plug the endpoint into your onboarding and payment flows without risk. Register

Ready to get started?

Get your API key and start validating bank data in minutes.

Get API Key