API Documentation
Complete reference for BankData APIs - Routing Number, BIN Checker, and SWIFT/IBAN Validator
Introduction
Welcome to the BankData API documentation. Our comprehensive API platform provides complete banking data validation and search services:
Routing Number APIs
- Validation with ACH/wire support
- Search by bank, state, city, ZIP
- Smart pagination for large datasets
- Advanced multi-filter search
SWIFT & BIC APIs
- SWIFT code validation & lookup
- Search by bank, city, country
- BIC code validation
- Pagination support
BIN Checker API
- Card brand identification
- Card type detection
- Issuer information
- Fraud prevention
IBAN Validator API
- ISO 13616 compliance
- Checksum validation
- Format verification
- International coverage
Base URL: https://www.bankdatastack.com/api/v1
Data Coverage
US Routing Numbers
19,000+
US banks and credit unions with complete address, phone, and contact information
SWIFT/BIC Codes
3,000+
International banks across 200+ countries with branch details and code breakdowns
Card BINs
Worldwide
Credit and debit card issuers across 150+ countries with brand and type identification
IBAN Coverage
89+ Countries
All 36 SEPA zone countries plus Middle East, Caribbean, and Asia-Pacific regions
Authentication
All API requests require authentication using an API key. Include your API key in the X-API-Key header:
curl -H "X-API-Key: YOUR_API_KEY" \
https://www.bankdatastack.com/api/v1/routing/validate
Get your API key by signing up.
Pagination
All search and filter endpoints support pagination for efficient handling of large result sets. This allows you to retrieve results in manageable chunks and build scalable applications.
Pagination Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 10 | Results per page (1-10 maximum) |
| page | integer | 1 | Page number (starts at 1) |
Pagination Response
All paginated endpoints include a pagination object in the response:
{
"status": "success",
"message": "Found 10 results on page 2",
"data": [...],
"pagination": {
"current_page": 2,
"per_page": 10,
"total": 458,
"total_pages": 46,
"has_more": true
}
}
Example: Fetch Multiple Pages
// Page 1
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/state \
-H "X-API-Key: YOUR_KEY" \
-d '{"state":"TX","limit":10,"page":1}'
// Page 2
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/state \
-H "X-API-Key: YOUR_KEY" \
-d '{"state":"TX","limit":10,"page":2}'
Applies To These Endpoints:
- All Routing Number Database search endpoints (5 endpoints)
- All SWIFT Database search endpoints (4 endpoints)
Routing Number APIs
Comprehensive routing number validation, lookup, and search capabilities for US banks and credit unions. Validate routing numbers for ACH and wire transfers, and search by location or institution name.
Routing Number Validation
Verify the authenticity of U.S. bank routing numbers and retrieve comprehensive bank details. Supports both ACH and wire transfer validation for accurate and secure financial transactions.
What is a Routing Number?
A routing number (also called ABA routing number or routing transit number) is a 9-digit code used to identify financial institutions in the United States. It's used for processing checks, ACH transfers, direct deposits, wire transfers, and electronic payments.
Format: 9 digits (e.g., 026002532) assigned by the American Bankers Association (ABA)
Key Features
- Routing number validation to verify authenticity and prevent errors
- Bank information retrieval including name, address, city, state, zip code, and phone
- Payment method support - determine if bank supports ACH or wire transfers
- 18,000+ institutions covered - all U.S. banks and credit unions
- Federal Reserve data - regularly updated from official sources
- Real-time validation with instant response times
Use Cases
- Payment Processing: Validate routing numbers before processing ACH or wire transfers
- Direct Deposit Setup: Verify employee bank account details for payroll
- Customer Onboarding: Confirm bank account legitimacy during signup
- Check Processing: Validate routing numbers on paper and electronic checks
- Account Verification: Ensure bank details are correct before fund transfers
- Fraud Prevention: Detect invalid or inactive routing numbers
Payment Types Supported
ACH Transfers
Automated Clearing House transactions for direct deposits, bill payments, and electronic fund transfers between banks
Wire Transfers
Real-time electronic money transfers for same-day domestic and international transactions
Endpoint
POST /v1/routing/validate
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| routing_number | string | Yes | 9-digit routing number |
Example 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": "021000021", "payment_type": "ach"}'
Response Fields
| Field | Type | Description |
|---|---|---|
| routingNumber | string | The validated 9-digit routing number |
| paymentType | string | Payment type: "ach" or "wire" |
| name | string | Full bank name |
| addressFull | string | Full address (city, state) |
| city | string | Bank city |
| state | string | Bank state (2-letter code) |
| type | string | Office type (e.g., "Main Office") |
| phone | string | Bank phone number |
| active | boolean | Whether the routing number is active |
| lastUpdated | string | Date of last data update (YYYY-MM-DD) |
Example Response
{
"status": "success",
"data": {
"routingNumber": "021000021",
"paymentType": "ach",
"name": "Jpmorgan Chase Bank, Na",
"addressFull": "Tampa, FL",
"city": "Tampa",
"state": "FL",
"type": "Main Office",
"phone": "813-432-3700",
"active": true,
"lastUpdated": "2025-11-12"
}
}
Example Error Responses
422 - Format Validation Failed
{
"status": "error",
"message": "Validation failed",
"errors": {
"routing_number": [
"Routing number must be exactly 9 numeric digits. Example: \"021000021\"."
]
}
}
400 - Checksum Validation Failed
{
"status": "error",
"message": "Routing number 123456789 failed checksum validation. Please verify the routing number is correct."
}
404 - Not Found
{
"status": "error",
"message": "021000099 is not a valid bank routing number!",
"routing_number": "021000099",
"payment_type": null
}
Routing Number Search & Lookup
Search our comprehensive database of US banks and credit unions. Find institutions by name, location, state, or ZIP code with lightning-fast responses. Supports pagination for efficient handling of large result sets.
Endpoint: /api/v1/routing/database/lookup
Look up a single routing number from our comprehensive database with optional real-time refresh.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| routing_number | string | Yes | 9-digit routing number |
| refresh | boolean | No | Force real-time data update (default: false) |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/lookup \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"routing_number": "113110984"}'
Success Response
{
"status": "success",
"message": "Routing number 113110984 found",
"source": "database",
"data": {
"routingNumber": "113110984",
"bank": "CITIZENS NATIONAL BANK",
"address": "1320 LOOP 304 EAST",
"city": "CROCKETT",
"state": "TX",
"zip": "75835",
"phone": "(936) 544-9661",
"dateOfRevision": "042104",
"newRoutingNumber": "",
"active": true
}
}
Endpoint: /api/v1/routing/database/state
Find all banks in a specific US state with smart pagination.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| state | string | Yes | State code (TX, CA, NY) or full name (Texas, California). Note: ACH records often reflect the payment processing center, not HQ — e.g. Chase may appear under FL rather than NY. |
| limit | integer | No | Results per page (1-10, default: 10) |
| page | integer | No | Page number (default: 1) |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/state \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"state": "TX", "limit": 10, "page": 1}'
Success Response
{
"status": "success",
"message": "Found 10 routing number(s) for state: TX on page 1",
"state": "TX",
"data": [
{
"routingNumber": "113110984",
"bank": "CITIZENS NATIONAL BANK",
"city": "CROCKETT",
"state": "TX",
"zip": "75835",
"phone": "(936) 544-9661",
"active": true
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total": 458,
"total_pages": 46,
"has_more": true
}
}
Endpoint: /api/v1/routing/database/bank
Search routing numbers by bank name (partial matching supported).
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| bank | string | Yes | Bank name or partial name (e.g., "CHASE", "CITIZENS") |
| limit | integer | No | Results per page (1-10, default: 10) |
| page | integer | No | Page number (default: 1) |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/bank \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"bank": "CHASE", "limit": 10}'
Endpoint: /api/v1/routing/database/city
Find banks in a specific city with optional state filter.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| city | string | Yes | City name (e.g., "New York", "Los Angeles") |
| state | string | No | State code to narrow results (e.g., "NY", "CA") |
| limit | integer | No | Results per page (1-10, default: 10) |
| page | integer | No | Page number (default: 1) |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/city \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"city": "New York", "state": "NY", "limit": 10}'
Endpoint: /api/v1/routing/database/zip
Find banks in a specific ZIP code area.
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/zip \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"zip": "10005", "limit": 10}'
Endpoint: /api/v1/routing/database/search
Advanced multi-filter search combining bank name, city, state, and ZIP code.
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/routing/database/search \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"bank": "CHASE", "city": "New York", "state": "NY"}'
BIN Checker API
Validate credit card information instantly by analyzing the Bank Identification Number (BIN). The BIN (first 6-8 digits of a card) provides real-time information about the issuing institution, card type, brand, and country of origin.
What is a BIN?
The Bank Identification Number (BIN) is the first 6 to 8 digits on a payment card. It identifies which institution issued the card and helps prevent fraudulent transactions by verifying card details during payment processing.
Key Features
- Real-time validation of credit and debit card BINs
- Card brand identification (Visa, Mastercard, American Express, Discover, etc.)
- Card type detection (credit, debit, prepaid)
- Issuer information including bank name and country
- Fraud prevention integration for e-commerce platforms
- Easy integration with existing payment systems
Use Cases
- Fraud Prevention: Verify card legitimacy during e-commerce transactions
- Payment Routing: Route transactions to appropriate payment processors
- Card Verification: Validate card details in subscription services
- Security Enhancement: Add extra validation layer in payment gateways
- Compliance: Meet regulatory requirements for card validation
Global Coverage
Our BIN Checker API supports worldwide card issuers across 150+ countries, covering all major card brands including Visa, Mastercard, American Express, Discover, and more.
Note: For specific country coverage details, please contact [email protected].
Endpoint
POST /v1/bin/lookup
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| bin | string | Yes | First 6-8 digits of card |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/bin/validate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"bin": "424242"}'
Response Fields
| Field | Type | Description |
|---|---|---|
| bin | string | The validated BIN/IIN (first 6-8 digits) |
| valid | boolean | Whether the BIN is valid |
| cardBrand | string | Card brand (VISA, MASTERCARD, AMEX, DISCOVER, etc.) |
| cardType | string | Card type (CREDIT, DEBIT, PREPAID) |
| cardLevel | string|null | Card level (Classic, Gold, Platinum, Black, etc.) - optional |
| cardCategory | string|null | Card category (Consumer, Commercial, Corporate, Government) - optional |
| issuerName | string|null | Issuing bank name - optional |
| issuerWebsite | string|null | Issuer website URL - optional |
| issuerPhone | string|null | Issuer phone number - optional |
| countryName | string | Country name where card was issued |
| countryCode | string | ISO 3166-1 alpha-2 country code |
Example Response
{
"status": "success",
"data": {
"bin": "424242",
"valid": true,
"cardBrand": "VISA",
"cardType": "CREDIT",
"countryName": "UNITED KINGDOM",
"countryCode": "GB"
}
}
Example Error Responses
422 - Format Validation Failed
{
"status": "error",
"message": "Validation failed",
"errors": {
"bin": [
"The bin must be at least 6 characters.",
"The bin must not be greater than 8 characters."
]
}
}
400 - Invalid BIN
{
"status": "error",
"message": "BIN validation failed. The provided BIN may be invalid or the service is temporarily unavailable.",
"bin": "999999"
}
IBAN Validator API
Validate International Bank Account Numbers (IBAN) with ISO 13616 compliance. Access critical banking information to verify account details, reduce errors, and ensure efficient processing of international payments.
What is an IBAN?
The International Bank Account Number (IBAN) is a standardized alphanumeric code (up to 34 characters) following the ISO 13616 standard. It uniquely identifies bank accounts across national borders, facilitating efficient and error-reduced international transactions.
Structure: Country Code (2 letters) + Check Digits (2 digits) + BBAN (up to 30 characters with account number, bank code, and branch identifier)
Key Features
- ISO 13616 compliance for IBAN validation standards
- Checksum validation with mathematical error detection
- Format verification against strict international banking rules
- 89+ countries supported including all SEPA zones
- Real-time validation before transaction processing
Endpoint
POST /api/v1/iban/validate
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| iban | string | Yes | International bank account number |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/iban/validate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"iban": "GB82WEST12345698765432"}'
Response Fields
| Field | Type | Description |
|---|---|---|
| iban | string | The validated IBAN (normalized to uppercase, no spaces) |
| valid | boolean | Whether the IBAN passed MOD-97 checksum validation |
| countryCode | string | ISO 3166-1 alpha-2 country code (first 2 characters of IBAN) |
| checkDigits | string | IBAN check digits (characters 3-4) |
| bban | string | Basic Bank Account Number (characters 5 onwards) |
Example Response
{
"status": "success",
"data": {
"iban": "GB82WEST12345698765432",
"valid": true,
"countryCode": "GB",
"checkDigits": "82",
"bban": "WEST12345698765432"
}
}
Example Error Responses
422 - Format Validation Failed
{
"status": "error",
"message": "Validation failed",
"errors": {
"iban": [
"The iban must be at least 15 characters.",
"The iban must not be greater than 34 characters."
]
}
}
400 - Checksum Validation Failed
{
"status": "error",
"message": "IBAN checksum validation failed. The IBAN is mathematically invalid."
}
Country Coverage
Our IBAN Validator supports 89+ countries using the IBAN numbering system, including:
- All 36 SEPA zone countries (European Union + EEA)
- Middle East countries (UAE, Saudi Arabia, Kuwait, etc.)
- Caribbean nations
- Asia-Pacific markets
- Major global banking markets
Note: For a complete list of supported countries, please contact [email protected].
SWIFT & BIC Code APIs
Comprehensive SWIFT/BIC code validation, lookup, and search capabilities. Verify codes instantly and search by bank, city, or country with pagination support.
What is a SWIFT Code?
SWIFT (Society for Worldwide Interbank Financial Telecommunication) codes, also known as BIC (Bank Identifier Code), are unique identifiers used in international transactions. They consist of 8-11 characters identifying the bank, country, location, and optionally the branch.
Structure: Bank Code (4 letters) + Country Code (2 letters) + Location Code (2 alphanumeric) + Branch Code (3 alphanumeric, optional)
Example: CHASUS33 - CHAS (JPMorgan Chase Bank) + US (United States) + 33 (New York location)
Endpoint: /api/v1/swift/lookup
Look up a single SWIFT code from our database.
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/swift/lookup \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"swift": "CHASUS33"}'
Endpoint: /api/v1/swift/search
Multi-criteria search with pagination (bank, city, country).
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/swift/search \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"bank": "CHASE", "country_code": "US", "limit": 10, "page": 1}'
Endpoint: /api/v1/swift/bank
Find all SWIFT codes for a specific bank with pagination.
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/swift/bank \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"bank": "SILICON VALLEY BANK"}'
Endpoint: /api/v1/swift/country
Get all SWIFT codes in a specific country with pagination.
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/swift/country \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"country_code": "SG", "limit": 10}'
Endpoint: /api/v1/swift/city
Find all SWIFT codes in a specific city with pagination.
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/swift/city \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"city": "LONDON", "country_code": "GB"}'
BIC Validation
BIC (Bank Identifier Code) and SWIFT codes are identical. Validate BIC codes and get comprehensive bank information.
Endpoint: /api/v1/bic/validate
Validate a BIC code (same as SWIFT validation).
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/bic/validate \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"bic": "CHASUS33"}'
SWIFT Code Validation
Verify SWIFT/BIC codes and get comprehensive bank information. Provides detailed bank data including institution name, location, branch details, and code breakdown to ensure accurate international transfers.
Endpoint
POST /api/v1/swift/validate
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| swift | string | Yes | SWIFT/BIC code (8-11 alphanumeric characters). Example: "CHASUS33" or "ADTVBRDF" |
Example Request
curl -X POST https://www.bankdatastack.com/api/v1/swift/validate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"swift": "CHASUS33"}'
Example Response
{
"status": "success",
"message": "SWIFT code CHASUS33 is valid",
"data": {
"swiftCode": "CHASUS33",
"bank": "JPMORGAN CHASE BANK, N.A.",
"city": "NEW YORK",
"branch": "",
"address": "383 MADISON AVENUE",
"postCode": "10179",
"country": "United States",
"countryCode": "US",
"breakdown": {
"swiftCode": "CHASUS33 or CHASUS33XXX",
"bankCode": "CHAS - code assigned to JPMORGAN CHASE BANK, N.A.",
"countryCode": "US - code belongs to United States",
"locationCode": "33 - represents location, second digit '3' means active code",
"codeStatus": "Active",
"branchCode": "XXX or not assigned, indicating this is a head office"
}
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
| swiftCode | string | The validated SWIFT/BIC code |
| bank | string | Full name of the bank or financial institution |
| city | string | City where the bank is located |
| country | string | Full country name |
| countryCode | string | ISO 3166-1 alpha-2 country code |
| breakdown | object | Detailed breakdown of the SWIFT code components |
Example Error Responses
422 - Format Validation Failed
{
"status": "error",
"message": "Validation failed",
"errors": {
"swift": [
"The swift must be at least 8 characters.",
"The swift must not be greater than 11 characters."
]
}
}
400 - Invalid SWIFT Code
{
"status": "error",
"message": "SWIFT code validation failed. The provided SWIFT code may be invalid or the service is temporarily unavailable.",
"swift": "INVALID12"
}
💡 Pro Tip
SWIFT codes are case-insensitive. The API automatically converts input to uppercase. Codes can be 8 characters (head office) or 11 characters (specific branch). If a branch code is not provided, the API returns the head office information.
Error Handling
BankData uses conventional HTTP response codes to indicate success or failure. All error responses follow a consistent format with a status field set to "error" and a descriptive message.
HTTP Status Codes
| Code | Type | Description | Billed |
|---|---|---|---|
| 200 | Success | Request completed successfully | ✓ Yes |
| 400 | Bad Request | Checksum validation failed (routing number doesn't pass ABA algorithm, IBAN checksum invalid) or invalid data format. The request was processed but validation failed. | ✓ Yes |
| 422 | Unprocessable Entity | Format validation failed (e.g., routing number not 9 digits, IBAN format incorrect, missing required fields). The request format is invalid. | ✓ Yes |
| 401 | Unauthorized | Missing or invalid API key | ✗ No |
| 403 | Forbidden | Account does not have an active plan (subscription or trial required) | ✗ No |
| 404 | Not Found | Valid format but number/code doesn't exist in our database or doesn't support the requested payment type (e.g., routing number not found, SWIFT code invalid) | ✗ No |
| 429 | Too Many Requests | Rate limit exceeded (per-minute limit) or API quota exhausted | ✗ No |
| 500 | Internal Server Error | Unexpected server error occurred | ✗ No |
| 503 | Service Unavailable | External validation service temporarily unavailable | ✗ No |
Error Code Guidelines
- 422 Unprocessable Entity: Used when request format is invalid (wrong number of digits, missing required fields, invalid characters). The request was well-formed but semantically incorrect.
- 400 Bad Request: Used when the format is correct but the data fails validation algorithms (checksum validation, mathematical validation). Also used for malformed JSON or invalid parameter types.
- 404 Not Found: Used when the format and validation pass, but the number/code doesn't exist in our database or doesn't support the requested operation.
Example Error Responses
401 - Unauthorized
{
"status": 401,
"success": false,
"message": "Invalid or expired API key."
}
403 - Forbidden
{
"status": 403,
"success": false,
"message": "Please subscribe to a plan to use the API."
}
429 - Rate Limit Exceeded
{
"status": 429,
"success": false,
"message": "Rate limit exceeded. Maximum 60 requests per minute.",
"rate_limit": 60,
"retry_after": 45
}
Response Headers
Every API response includes usage and rate limit information in the response headers. These headers help you monitor your API usage and implement proper rate limiting in your application.
| Header | Type | Description |
|---|---|---|
| X-RateLimit-Limit | integer | Maximum number of requests allowed per minute based on your plan |
| X-RateLimit-Remaining | integer | Number of requests remaining in the current minute window |
| X-RateLimit-Reset | timestamp | Unix timestamp when the rate limit window resets |
| X-Quota-Limit | integer | Monthly request quota for your plan |
| X-Quota-Remaining | integer | Remaining requests in the current monthly quota |
| X-Quota-Reset | ISO8601 | When the monthly quota resets (start of next month) |
| Retry-After | integer | Number of seconds to wait before retrying (only present on 429 responses) |
Example Response Headers
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1735689600
X-Quota-Limit: 10000
X-Quota-Remaining: 9847
X-Quota-Reset: 2025-12-01T00:00:00+00:00
💡 Pro Tip
Monitor these headers to implement intelligent rate limiting in your application. When X-RateLimit-Remaining approaches 0, implement exponential backoff or queue requests to avoid hitting rate limits. You can also monitor your usage in real-time through the dashboard.
Rate Limits
Starter Plan
60
requests per minute
Pro Plan
120
requests per minute
Business Plan
240
requests per minute
Enterprise Plan
500
requests per minute
Usage & Billing
We believe in fair and transparent billing. You are only charged for API calls that provide value to your application.
How We Count API Calls
✓ Billable Requests (Counted Towards Quota)
| Status Code | Type | Description |
|---|---|---|
| 200 OK | Success | Valid request with successful response |
| 400 Bad Request | Client Error | Malformed request or invalid parameters |
| 422 Unprocessable | Validation Error | Data format is invalid (e.g., wrong IBAN format) |
✗ Non-Billable Requests (NOT Counted)
| Status Code | Type | Why Not Charged |
|---|---|---|
| 401 Unauthorized | Auth Error | Authentication issue - no processing done |
| 403 Forbidden | Auth Error | Authorization failure |
| 404 Not Found | Routing Error | Wrong endpoint - you haven't reached the API |
| 429 Too Many | Rate Limit | Quota already exceeded |
| 500/503 | Server Error | Our infrastructure problem, not your cost |
Why This Approach?
- ✓ Client errors count because we processed and validated your request
- ✗ Server errors don't count because that's our infrastructure problem
- ✗ Auth failures don't count because you never reached the API
- ✗ 404s don't count because it's a routing confusion
Example Scenarios
Scenario 1: Successful Validation
Request: POST /v1/iban/validate with valid IBAN
Response: 200 OK with bank details
Counted: YES - Successful API call
Scenario 2: Invalid Format
Request: POST /v1/iban/validate with poorly formatted IBAN
Response: 422 Unprocessable Entity
Counted: YES - We validated and detected the error
Scenario 3: Wrong Endpoint
Request: POST /v1/wrong-endpoint
Response: 404 Not Found
Counted: NO - Routing error, API not reached
Scenario 4: Server Error
Request: POST /v1/iban/validate during service disruption
Response: 500 Internal Server Error
Counted: NO - Our infrastructure problem
Important Notes
- • All requests are logged for analytics, regardless of billing status
- • Successful validations (200 OK) count even if the data doesn't exist
- • Monitor your usage in real-time via the dashboard
- • Enable Soft Limits to continue making requests beyond your quota at 2x the rate