# Financial ID Validator API
> Validate the bank and provider identifiers that move money and records — all checked locally, with no lookups. The bic endpoint validates and parses a SWIFT/BIC code (ISO 9362): it confirms the 8- or 11-character format, splits out the bank, country, location and branch codes, checks the country against ISO 3166, and flags test and passive-participant codes. The aba endpoint validates a US ABA routing number by its checksum (the 3-7-1 weighting) and names the Federal Reserve district from the prefix. The npi endpoint validates a US National Provider Identifier by its Luhn check digit over the 80840 prefix and reports whether it is an individual or organization NPI. Everything is computed locally and deterministically, so it is instant and private — it checks the structure and check digits, not whether the institution actually exists. Ideal for payments and banking, fintech onboarding and KYC forms, healthcare billing and clearinghouses, and form and data validation. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 4 endpoints. This validates BIC, ABA and NPI; for IBAN use an IBAN API and for payment-card numbers use a credit-card API.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/financialid-api/..."
```

## Pricing
- **Free** (Free) — 7,335 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 16,850 calls/Mo, 8 req/s
- **Pro** ($29/Mo) — 219,500 calls/Mo, 20 req/s
- **Mega** ($67/Mo) — 1,140,000 calls/Mo, 50 req/s

## Endpoints

### Identifiers

#### `GET /v1/aba` — Validate a US ABA routing number

**Parameters:**
- `routing` (query, required, string) — A 9-digit ABA number Example: `021000021`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/financialid-api/v1/aba?routing=021000021"
```

**Response:**
```json
{
    "data": {
        "valid": true,
        "routing": "021000021",
        "checksum_ok": true,
        "federal_reserve": "Federal Reserve Bank #2"
    },
    "meta": {
        "timestamp": "2026-06-03T17:42:09.088Z",
        "request_id": "e6a3aaa9-8872-4bb1-8812-6a35c9a0b50d"
    },
    "status": "ok",
    "message": "ABA",
    "success": true
}
```

#### `GET /v1/bic` — Validate & parse a SWIFT/BIC

**Parameters:**
- `bic` (query, required, string) — A SWIFT/BIC code Example: `DEUTDEFF`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/financialid-api/v1/bic?bic=DEUTDEFF"
```

**Response:**
```json
{
    "data": {
        "bic": "DEUTDEFF",
        "type": "primary office (BIC8)",
        "valid": true,
        "length": 8,
        "passive": false,
        "test_bic": false,
        "bank_code": "DEUT",
        "connected": true,
        "branch_code": null,
        "country_code": "DE",
        "location_code": "FF"
    },
    "meta": {
        "timestamp": "2026-06-03T17:42:09.191Z",
        "request_id": "3d26226c-a433-4274-9dad-9761145bbc14"
    },
    "status": "ok",
    "message": "BIC",
    "success": true
}
```

#### `GET /v1/npi` — Validate a US NPI

**Parameters:**
- `npi` (query, required, string) — A 10-digit NPI Example: `1234567893`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/financialid-api/v1/npi?npi=1234567893"
```

**Response:**
```json
{
    "data": {
        "npi": "1234567893",
        "type": "individual provider (Type 1)",
        "valid": true
    },
    "meta": {
        "timestamp": "2026-06-03T17:42:09.304Z",
        "request_id": "c7967b0d-a0e4-4aab-8b3a-e25cc5e79cec"
    },
    "status": "ok",
    "message": "NPI",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/financialid-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "name": "Financial ID Validator API",
        "notes": "Structural and check-digit validation only — not a registry lookup. BIC per ISO 9362; ABA 3-7-1 checksum; NPI Luhn over the 80840 prefix. Nothing is stored.",
        "version": "v1",
        "endpoints": [
            {
                "path": "/v1/bic",
                "params": {
                    "bic": "a SWIFT/BIC code, e.g. DEUTDEFF"
                },
                "returns": "validity and the parsed bank/country/location/branch"
            },
            {
                "path": "/v1/aba",
                "params": {
                    "routing": "a 9-digit US ABA routing number"
                },
                "returns": "checksum validity and Federal Reserve district"
            },
            {
                "path": "/v1/npi",
                "params": {
                    "npi": "a 10-digit US National Provider Identifier"
                },
                "returns": "Luhn validity and provider type"
            },
            {
                "path": "/v1/meta",
                "params": [],
                "returns": "this document"
            }
        ],
        "description": "Validate the bank and provider identifiers that move money and records — all checked locally, no lookups. The bic endpoint validates and parses a SWIFT/BIC code (ISO 9362): it confirms the 8- or 11-character format, splits out the bank, country, location and branch codes, checks the cou
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/financialid-api
OpenAPI spec: https://www.oanor.com/api/financialid-api/openapi.json
