BIC/SWIFT Lookup API: Find Bank Details by SWIFT Code Instantly
Look up bank details by BIC/SWIFT code with a single API call. Get bank name, address, country, and branch info for 3,000+ banks across 63 countries. Built for payment platforms, fintech apps, and banking integrations.
Edge Team
Every international wire transfer, every cross-border payment, every SEPA transaction relies on a single 8- or 11-character code to route funds to the correct bank. That code is the BIC — the Bank Identifier Code, more commonly known as the SWIFT code. If your application handles payments, onboarding financial institutions, or validating banking details, you need a reliable way to resolve these codes into actionable bank data.
Edge's BIC/SWIFT Lookup API lets you do exactly that: send a SWIFT code, get back the bank name, full address, country, and branch information in milliseconds. No maintaining your own database. No scraping registries. No stale data.
What Is a BIC/SWIFT Code?
BIC stands for Business Identifier Code, assigned and maintained by the Society for Worldwide Interbank Financial Telecommunication (SWIFT). It is the global standard (ISO 9362) for identifying financial institutions in international transactions. Every bank that participates in the SWIFT network has at least one BIC assigned to it.
The Structure of a BIC/SWIFT Code
A BIC is either 8 or 11 characters long, broken down into four components:
| Position | Length | Name | Example | Meaning |
|---|---|---|---|---|
| 1–4 | 4 chars | Bank code | DEUT |
Identifies the institution (Deutsche Bank) |
| 5–6 | 2 chars | Country code | DE |
ISO 3166-1 alpha-2 country (Germany) |
| 7–8 | 2 chars | Location code | FF |
City or region (Frankfurt) |
| 9–11 | 3 chars | Branch code | XXX |
Specific branch (optional — XXX or omitted means head office) |
So DEUTDEFF and DEUTDEFFXXX both refer to Deutsche Bank's head office in Frankfurt. The 8-character form is simply the 11-character form with the branch code omitted (implying head office). This distinction matters when you are routing payments — some systems require the full 11-character code, while others accept 8.
8-Character vs. 11-Character Codes
Understanding the difference between these two formats is critical for payment routing:
- 8-character BIC (e.g.,
DEUTDEFF): Refers to the institution's primary office. Used when the specific branch is irrelevant or when the bank's internal routing handles branch-level distribution. - 11-character BIC (e.g.,
DEUTDEFF500): Refers to a specific branch. Required by some payment networks and correspondent banking arrangements where branch-level precision matters.
When your users enter a BIC in a payment form, you should accept both formats. The Edge API handles both seamlessly — an 8-character lookup returns the head office details, while an 11-character lookup returns the specific branch.
Why BIC/SWIFT Lookup Matters
If you are building anything that touches international payments, there are several reasons you cannot skip BIC validation and lookup.
Payment Routing Accuracy
A single wrong character in a SWIFT code can route funds to the wrong bank — or cause the payment to fail entirely. SWIFT message fees, investigation fees for misdirected payments, and the operational overhead of manual corrections add up fast. By validating and resolving BIC codes before submitting a payment, you eliminate this category of errors at the source.
Bank Verification in Onboarding
When onboarding merchants, vendors, or partners, you often collect their banking details. Displaying the resolved bank name after the user enters their SWIFT code serves as a confirmation step: "You entered BNPAFRPP — is BNP Paribas, Paris the correct bank?" This reduces errors and builds trust in your platform.
Regulatory and Compliance Requirements
Financial regulations in many jurisdictions require that you verify the identity of counterparty financial institutions. Having structured, verified bank data tied to a BIC code supports your compliance processes, particularly for anti-money laundering (AML) record-keeping under the Financial Action Task Force (FATF) recommendations.
What the API Returns
A single call to the BIC/SWIFT Lookup endpoint returns structured data about the financial institution:
curl -X GET "https://api.edge.bh/v1/bic/BNPAFRPP" \
-H "X-Api-Key: your_api_key_here"
Response:
{
"success": true,
"data": {
"bic": "BNPAFRPP",
"bank_name": "BNP PARIBAS",
"country_code": "FR",
"country_name": "France",
"city": "PARIS",
"address": "16 BOULEVARD DES ITALIENS",
"branch": null,
"is_head_office": true
},
"credits_used": 1,
"credits_remaining": 4832
}
Every response includes the credit cost and your remaining balance, so you can monitor usage programmatically.
Branch-Level Lookup
When you pass an 11-character code with a specific branch suffix:
curl -X GET "https://api.edge.bh/v1/bic/DEUTDEFF500" \
-H "X-Api-Key: your_api_key_here"
{
"success": true,
"data": {
"bic": "DEUTDEFF500",
"bank_name": "DEUTSCHE BANK AG",
"country_code": "DE",
"country_name": "Germany",
"city": "FRANKFURT AM MAIN",
"address": "TAUNUSANLAGE 12",
"branch": "BAD HOMBURG V.D. HOEHE",
"is_head_office": false
},
"credits_used": 1,
"credits_remaining": 4831
}
Integration Examples
JavaScript / Node.js
Here is a practical example of integrating BIC lookup into a payment form validation flow:
async function lookupBIC(swiftCode) {
const response = await fetch(
`https://api.edge.bh/v1/bic/${encodeURIComponent(swiftCode)}`,
{
headers: {
"X-Api-Key": process.env.EDGE_API_KEY,
"Content-Type": "application/json",
},
}
);
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || "BIC lookup failed");
}
return response.json();
}
// Usage in a payment form handler
async function validatePaymentDetails(recipientBIC) {
try {
const result = await lookupBIC(recipientBIC);
const bank = result.data;
console.log(`Resolved bank: ${bank.bank_name}, ${bank.city}, ${bank.country_name}`);
// Show confirmation to user before proceeding
return {
valid: true,
bankName: bank.bank_name,
country: bank.country_name,
city: bank.city,
};
} catch (error) {
return { valid: false, error: error.message };
}
}
Python
import requests
import os
def lookup_bic(swift_code: str) -> dict:
response = requests.get(
f"https://api.edge.bh/v1/bic/{swift_code}",
headers={
"X-Api-Key": os.environ["EDGE_API_KEY"],
"Content-Type": "application/json",
},
)
response.raise_for_status()
return response.json()
# Validate before submitting a wire transfer
result = lookup_bic("COBADEFF")
bank = result["data"]
print(f"Bank: {bank['bank_name']} ({bank['country_name']})")
Combining BIC Lookup with IBAN Validation
For maximum payment accuracy, combine BIC/SWIFT lookup with IBAN validation. When a user provides both their IBAN and SWIFT code, you can cross-reference the country codes and bank identifiers to catch mismatches before the payment is submitted:
Try Edge for free
500 API credits, no credit card required. Start integrating in minutes.
Get free API keyasync function validateBankingDetails(iban, swiftCode) {
const [ibanResult, bicResult] = await Promise.all([
fetch(`https://api.edge.bh/v1/iban/validate/${iban}`, {
headers: { "X-Api-Key": process.env.EDGE_API_KEY },
}).then((r) => r.json()),
lookupBIC(swiftCode),
]);
// Cross-reference country codes
if (ibanResult.data.country_code !== bicResult.data.country_code) {
return {
valid: false,
error: "IBAN country does not match SWIFT code country",
};
}
return {
valid: true,
bankName: bicResult.data.bank_name,
country: bicResult.data.country_name,
ibanValid: ibanResult.data.is_valid,
};
}
Coverage: 63 Countries and 3,000+ Banks
The Edge BIC/SWIFT Lookup API covers financial institutions across 63 countries, spanning major financial centers and emerging markets alike. Coverage includes the full SEPA zone (36 countries), the GCC, North America, and key markets in Asia-Pacific and Africa.
This is not a static snapshot — the underlying bank directory is maintained and updated to reflect mergers, new branch openings, and institutional changes. When Deutsche Bank closes a branch or a new digital bank receives its SWIFT code, the data reflects those changes.
For a full list of supported countries and searchable bank records, see the Bank Directory API.
Real-World Use Cases
Payment Platforms and Neobanks
When your user initiates an international transfer, auto-resolving the SWIFT code into a bank name and location provides instant confirmation. This reduces form abandonment (users trust they have entered the right code) and eliminates costly payment investigations from misdirected wires.
Treasury and ERP Systems
Corporate treasury platforms that manage multi-bank relationships use BIC lookups to validate counterparty bank details during vendor onboarding and payment file generation. Instead of maintaining an internal SWIFT directory that goes stale, the API provides a single source of truth.
Correspondent Banking and FX Platforms
Foreign exchange and cross-border payment companies need to verify intermediary banks in multi-hop payment chains. Each leg of a correspondent banking transaction references a BIC — validating every code in the chain before submission prevents costly routing failures.
Banking-as-a-Service Providers
BaaS platforms that offer white-label payment infrastructure to their clients embed BIC lookup into their payment APIs. Rather than each client building their own SWIFT validation, the BaaS provider integrates once with Edge and passes the capability downstream.
Pricing and Credits
Each BIC/SWIFT lookup costs 1 credit. Credits are purchased in advance and deducted per API call. There are no monthly minimums, no per-request fees, and no tiered pricing gates. You pay for what you use.
Sign up at app.edge.bh to get started with free credits for testing. Your API key is generated instantly, and you can make your first lookup within minutes.
Error Handling
The API returns clear error codes so your application can handle edge cases gracefully:
{
"success": false,
"error": {
"code": "BIC_NOT_FOUND",
"message": "No bank found for BIC code 'INVALIDXX'"
}
}
Common error scenarios:
| HTTP Status | Error Code | Meaning |
|---|---|---|
| 200 | — | Successful lookup |
| 404 | BIC_NOT_FOUND |
No matching bank in the directory |
| 422 | INVALID_BIC_FORMAT |
Code does not match 8 or 11 character BIC format |
| 402 | INSUFFICIENT_CREDITS |
Your account has no remaining credits |
| 401 | UNAUTHORIZED |
Missing or invalid API key |
Build your integration to handle these cases explicitly. A 404 means the code is syntactically valid but not in the directory — this can happen with very new institutions or decommissioned codes.
Frequently Asked Questions
What is the difference between a BIC code and a SWIFT code?
They are the same thing. BIC (Business Identifier Code) is the official ISO 9362 designation, while SWIFT code is the colloquial name because SWIFT (the organization) assigns and maintains these codes. The Edge API uses "BIC" in its endpoints, but you can use either term — they refer to the identical code.
Do I need to send the full 11-character code, or is 8 characters enough?
Both formats work. An 8-character code returns the institution's head office details. An 11-character code returns the specific branch. If your use case is payment routing where branch precision matters, use the full 11-character code when available.
How current is the BIC data?
The bank directory that powers the BIC lookup is regularly maintained to reflect institutional changes — mergers, name changes, new branches, and decommissioned codes. This is not a one-time static export from the SWIFT registry.
Can I use the BIC lookup to validate that a SWIFT code is real?
Yes. If the API returns a 200 response with bank details, the BIC is valid and corresponds to a registered financial institution. A 404 response means the code is not found in the directory. Combined with format validation (the API returns 422 for malformed codes), you get full syntactic and registry validation.
How does BIC lookup relate to IBAN validation?
An IBAN contains embedded bank and branch identifiers, but not the SWIFT/BIC code directly. The two are complementary: IBAN validation confirms the account number structure is correct, while BIC lookup confirms the institution routing code is valid. For cross-border payments, you typically need both.
Is the API suitable for high-volume, real-time payment processing?
Yes. The API is designed for low-latency lookups suitable for inline payment validation. Each request is stateless and credit-based with no rate limiting tiers that would block legitimate production traffic. For high-volume needs, contact the Edge team to discuss dedicated capacity.
Ready to integrate BIC/SWIFT lookup into your application? Create your free Edge account and start making API calls in minutes. No contracts, no setup fees — just accurate bank data when you need it.
Related articles
Start building with Edge
Get 500 free API credits instantly. No credit card required. Full access to IBAN validation, sanctions screening, exchange rates, and all 12 services.
Trusted by fintechs and banks across the GCC.