Free BIN Lookup API - Verify Credit Cards & Prevent Fraud Instantly

BINSearchLookup.com is a payment security platform launched in August 2025 and based in Montreal, Canada. We provide instant Bank Identification Number (BIN) and Issuer Identification Number (IIN) lookup services to verify credit cards, detect fraud, and enhance payment security — covering 200+ countries with a continuously updated database of BIN ranges.

What is BIN Lookup? (Complete Guide 2026)

A Bank Identification Number (BIN), also known as Issuer Identification Number (IIN), is the first 6-8 digits of a payment card (credit card, debit card, prepaid card, or gift card) that identifies the issuing financial institution. BIN lookup is the process of validating these digits to:

  • Identify the card brand (Visa, Mastercard, American Express, Discover, etc.)
  • Determine card type (Credit, Debit, Prepaid, Gift, Virtual)
  • Verify issuing bank and financial institution name
  • Detect card category (Classic, Gold, Platinum, Business, Corporate, Prepaid)
  • Identify issuing country with ISO codes (CA, US, UK, etc.)
  • Prevent fraud by detecting high-risk or stolen card patterns

Why it matters: BIN lookup gives merchants the card context they need to flag high-risk transactions before they become chargebacks — especially prepaid and virtual cards, which generate chargebacks at a significantly higher rate than standard credit cards.

Key Features & Capabilities

  • Real-Time BIN Validity Checking: While other services only check if a BIN *exists* in a static database, our API verifies if the BIN is *currently active and in-service today* directly through payment processors like Stripe.
  • Real-time credit card verification with sub-100ms response time
  • Advanced fraud detection - block prepaid, virtual, and disposable cards
  • Comprehensive card type identification (Credit, Debit, Prepaid, Charge, Deferred Debit)
  • Issuing bank and country detection with full bank details and phone numbers
  • Free API access - 500 requests/month on free tier, no credit card required
  • REST API - Easy integration with any programming language (PHP, Python, JavaScript, Ruby, Java, Go)
  • High availability — monitored 24/7 via UptimeRobot
  • GDPR & PCI DSS compliant - No sensitive card data stored
  • Global coverage - 200+ countries and 15,000+ banks in database

How BIN Numbers Work (Technical Explanation)

BIN numbers follow the ISO/IEC 7812 international standard for identification cards. The structure is:

  • First Digit (MII): Major Industry Identifier
    • 1-2: Airlines, Financial institutions
    • 3: Travel and entertainment (American Express, Diners Club)
    • 4: Banking and financial (Visa)
    • 5: Banking and financial (Mastercard)
    • 6: Merchandising and banking (Discover)
    • 7: Petroleum companies
    • 8: Healthcare, Telecommunications
    • 9: National assignment
  • Digits 2-6: Issuer Identification Number - Unique identifier for the specific issuing bank or financial institution
  • Digits 7-8: Extended BIN range for modern cards (8-digit BINs became standard in 2022)
  • Remaining digits: Account number and check digit (Luhn algorithm)

Example: BIN 559994 = Mastercard (5) + KOHO Financial (59994) + Debit Card + Prepaid Category + Canada (CA)

Common Use Cases

  1. E-commerce Fraud Prevention: Block high-risk prepaid cards on digital goods purchases
  2. Subscription Services: Prevent disposable card abuse where users sign up for free trials with Privacy.com/Revolut virtual cards to avoid recurring charges
  3. Payment Gateway Integration: Route transactions based on card type and issuing country
  4. KYC Compliance: Verify customer payment methods match stated locations
  5. Dynamic Pricing: Adjust fees based on card type (credit vs. debit)
  6. Risk Scoring: Assign fraud scores based on BIN data patterns
  7. International Payments: Verify cross-border transaction legitimacy
  8. Chargeback Prevention: Flag suspicious card types before processing

API Integration Example (curl)

curl -H "X-API-Key: bsl_your_api_key_here" \
     -H "X-User-ID: your-user-id-here" \
     "https://api.binsearchlookup.com/lookup?bin=559994"

# Response:
{
  "bin": "559994",
  "success": true,
  "data": {
    "BIN": "559994",
    "Brand": "MASTERCARD",
    "Type": "DEBIT",
    "Category": "PREPAID",
    "Issuer": "KOHO FINANCIAL INCORPORATED",
    "isoCode2": "CA",
    "isoCode3": "CAN",
    "CountryName": "CANADA"
  },
  "statusCode": 200
}

Pricing Tiers (2026)

  • Free Tier: 500 requests/month, $0/month, 20 requests/minute rate limit, email support, full API access, no credit card required
  • Starter Plan: 10,000 requests/month, $29/month (USD/CAD/EUR), 60 requests/minute, email support
  • Pro Plan: 78,000 requests/month, $199/month, 280 requests/minute, priority support, dedicated account manager
  • Enterprise Plan: Unlimited requests, $999/month, 768 requests/minute, SSO authentication, phone support, custom integration assistance, SLA contracts, dedicated infrastructure

Getting Started (3 Simple Steps)

  1. Sign Up Free: Create your free account - No credit card required
  2. Get API Keys: Access your dashboard to retrieve API credentials
  3. Make Your First Request: Send a simple HTTP GET request to verify any BIN

Average integration time: 15 minutes

Last Updated: June 3, 2026 | Database Version: 2026.06.03 | API Version: v2.1

Start using our free BIN lookup service today to enhance your payment security, reduce fraudulent transactions, and protect your business from chargebacks.

Start now for free

The Smarter Way to Verify Cards

Instantly look up credit card BINs. Stop fraud before it starts. Simple, powerful, and built for your peace of mind.

1.4M+ BIN ranges, 100% accuracy & validity checks, 200+ countries

Start for free

Enter the first 6 to 8 digits

XXXX XXXX
Type: Card
Brand: Unknown
Category: Unknown
Card Validity: False
Issuer: Unknown Bank
Bank Phone: Not available
Country
Unknown
Bank website Not available

Other BIN/INN by the bank

•••••• •••••• •••••• •••••• •••••• •••••• •••••• •••••• ••••••

Sign up for free to unlock the full result

🆓
Free to Start

500 BIN lookups per month at no cost. No credit card required. Upgrade only when you need more volume.

Real-Time Lookups

Sub-100 ms API responses. Identify card brand, type, issuer, and country instantly at checkout.

🔒
Privacy-Safe by Design

Only the first 6–8 digits (BIN) are used — never the full card number. GDPR and CCPA compliant. No card data stored.

The Fraud Problem You're Facing Right Now

$340–$1,200

Cost per fraudulent order (2.5–3.5× multiplier including chargebacks, fees, lost merchandise)

5+ Chargebacks

Triggers merchant account review & 25 - 50% rate increases

8.4× Higher Risk

Prepaid cards generate chargebacks at 8.4× the rate of credit cards

Average merchant loses $50K–$200K annually to preventable fraud.

Calculate Your Potential Savings

See your exact ROI with your real business numbers

10,000
Adjust from 1,000 to 100,000
$
Your typical order value
3%
Typical fraud rate in your industry

Current Monthly Loss

Alert
$2,250

With BINLookup (estimated)

Protected
$810

Monthly Savings

$1,440

Per month, every month

ROI on Pro Plan ($99/mo)

14.5×

Start for Free. Pay Only When You Scale.

Free
  • 20 req/min
  • 500 requests/month
  • 1 API key
  • Encrypted data
  • SSO included
  • Format: CSV, JSON, or DB in a zip file

No credit card required

Starter
  • 60 req/min
  • 10,000 requests/month
  • 3 API keys
  • Encrypted data
  • SSO included
  • Format: CSV, JSON, or DB in a zip file
⭐ Most Popular - Best ROI
Pro
  • 280 req/min
  • 78,000 requests/month
  • 15 API keys
  • Encrypted data
  • SSO included
  • Format: CSV, JSON, or DB in a zip file

Avg merchant saves $1,440/month

Enterprise
  • 768 req/min
  • Unlimited requests/month
  • 190 API keys
  • Encrypted data
  • SSO included
  • Format: CSV, JSON, or DB in a zip file
  • Resell isn't allowed, contact us for discussion
  • Custom SLA Contracts
All plans, including Free, reset on the 1st of every month. Free is forever. Paid plans include SSO and advanced encryption.

What Happens After You Sign Up?

You'll be preventing fraud in 15 minutes. Here's exactly what to expect:

1

Instant Account Setup

Enter your email, create password. No credit card. Takes 30 seconds. You're immediately logged into your dashboard.

Time: 30 seconds
2

Get Your API Keys

Dashboard shows your X-API-Key and X-User-ID. Click "Copy" button. These are your credentials to authenticate requests.

Time: 10 seconds
3

Copy/Paste Code

Choose your language (JS, Python, PHP, etc.). Copy pre-written code. Paste into your checkout flow. Change API keys to yours.

Time: 5 minutes
4

Test With Real BIN

Try BIN 559994 (KOHO prepaid). See it detect "PREPAID" in Category field. Verify your blocking logic works correctly.

Time: 2 minutes
5

Deploy to Production

Push to production. Monitor dashboard for real-time stats. Watch as prepaid cards get blocked automatically at checkout.

Time: 7 minutes

Start Saving Money

Fraud attempts blocked. Chargebacks prevented. Start seeing results immediately — upgrade only when you need higher volume.

Results in 30 days
Get Started Now - Free Forever Plan

Total setup time: 15 minutes • No credit card • Cancel anytime

All Countries Dataset

Single Country Dataset
  • Full dataset for one country
  • Personal or your e-commerce use only
  • No commercial resale or business use allowed
  • Format: CSV, JSON, or DB in a zip file
  • One-time purchase
Dataset Update
  • Receive the latest update for your purchased dataset
  • Price is per country
  • Format: CSV, JSON, or DB in a zip file
  • One-time update purchase
All Countries Dataset
  • Full dataset for all countries
  • Personal or your e-commerce use only
  • No commercial resale or business use allowed
  • Format: CSV, JSON, or DB in a zip file
  • One-time purchase
All Countries - Commercial License
  • Full dataset for all countries
  • Commercial resale and business use allowed
  • Sell data or build your own business
  • Format: CSV, JSON, or DB in a zip file
  • One-time purchase
You can purchase a dataset for a single country, but commercial use is not allowed. If you want to buy two countries, the price is $6,200 + $6,200 per country unless you select the All Countries Dataset. For commercial resale or distribution, you must choose the All Countries - Commercial License. Data is delivered in CSV, JSON, or DB format packed in a zip file.
Technical Documentation

How Do BIN / IIN Numbers Work?

Complete technical guide to Bank Identification Numbers and their role in payment security

A Bank Identification Number (BIN), also known as Issuer Identification Number (IIN), is the first 6 to 8 digits of a payment card number. These digits serve as a unique identifier that reveals critical information about the card: the issuing bank or financial institution, the card network (Visa, Mastercard, American Express, Discover), the card type (credit, debit, prepaid, or virtual), and the country of origin.

The Anatomy of a BIN Number

BIN numbers follow the international ISO/IEC 7812 standard for identification cards. Hover over each section to explore what each digit position reveals:

5599
9412
3456
7898
CARDHOLDER
JOHN DOE
EXPIRES
12/28

Hover over the card digits above to explore each section

Real-World Example

BIN 559994 (KOHO Mastercard)

BIN: 559994
Brand: MASTERCARD
Type: DEBIT
Category: PREPAID
Issuer: KOHO Financial Inc.
Country: Canada (CA)
Breakdown
5 = Mastercard (Banking/Financial MII)
59994 = KOHO Financial Incorporated
Canadian fintech offering prepaid debit cards with no credit check required

How BIN Lookup Prevents Fraud in Real-Time

When a customer enters their card details at checkout, instantly verify the BIN to detect high-risk transactions before processing the payment.

Prepaid Card Detection

Block prepaid, virtual, or disposable cards commonly used in fraud schemes and to avoid recurring charges.

Geographic Mismatch

Flag transactions where billing address doesn't match the card's issuing country—a common fraud indicator.

Card Type Verification

Verify if the card is credit, debit, or prepaid. Control which card types you accept for stronger protection.

Issuer Validation

Identify the issuing bank for tiered risk scoring based on historical fraud patterns and databases.

How BIN Lookup Protects Your Business

1.4M+
BIN Ranges in Database
200+
Countries Covered
<100ms
API Response Time
Free
500 Lookups/Month to Start

Why BIN Lookup Delivers Outsized ROI

Each prevented fraud case doesn't just save the transaction amount - it avoids multiple downstream costs that compound the financial impact:

Hidden Costs of a Single Fraudulent Transaction:

Chargeback fees: $15.00 per dispute (Stripe)
Lost merchandise: Full product cost
Processing fees: 2.9% + $0.30 (non-refundable)
Shipping costs: Unrecoverable
Staff time: $50-200 investigation hours
Risk penalties: Higher rates if >0.75% chargeback rate

Total cost per fraud case: Typically 2.5-3.5x the transaction amount

The Math: If BIN lookup prevents just 5 fraudulent $100 orders per month, you save $1,250-$1,750 monthly - while our Pro plan costs only $99/month. That's a 12-17x return on investment.

Common Use Cases Across Industries

E-Commerce & Digital Goods

Block prepaid cards on high-value digital purchases (software licenses, game codes, gift cards) where fraudsters can instantly resell stolen products.

SaaS & Subscription Services

Prevent virtual/disposable card abuse where users sign up for free trials with Privacy.com or Revolut virtual cards to avoid recurring charges.

Travel & Hospitality

Verify international bookings by matching billing country with card issuing country. Flag mismatches for manual review to prevent cross-border fraud.

Marketplace Platforms

Protect sellers by screening buyer payment methods. Implement seller protection policies that exclude high-risk card types from coverage disputes.

Payment Processors

Route transactions intelligently based on card type, apply dynamic risk scoring, and optimize approval rates while minimizing fraud exposure.

How to Implement BIN Lookup

STEP 1
Extract the BIN from Card Number
// JavaScript Example
const cardNumber = "5599941234567890";
const bin = cardNumber.slice(0, 8); // "559994"
STEP 2
Query BINSearchLookup API
curl -H "X-API-Key: your_key_here" \
     -H "X-User-ID: your_id_here" \
     "https://api.binsearchlookup.com/lookup?bin=559994"
STEP 3
Block High-Risk Cards
// Block if prepaid/virtual
if (response.data.Category.toUpperCase().includes('PREPAID')) {
  blockTransaction("Prepaid cards not accepted");
}

Ready to Stop Fraud Before It Starts?

Start with 500 free API requests per month. Create a free account - no credit card required.

No credit card required • 500 free requests/month • Full API access

How BIN Lookup Prevents Fraud

Four simple steps to integrate powerful fraud prevention into your payment flow

1

Extract BIN

Identify the first 6-8 digits of the payment card. Never use full card numbers for verification.

const bin = cardNumber.slice(0, 8);
2

API Lookup

Query our real-time API to get comprehensive card data including type, issuer, and country.

const response = await fetch(`/api/lookup?bin=${bin}`);
3

Analyze Data

Check card type, country, and issuer against your fraud prevention rules.

if (data.type === 'PREPAID') {
  blockTransaction();
}
4

Prevent Fraud

Automatically block high-risk transactions while allowing legitimate customers through.

return {
  blocked: isPrepaid,
  riskScore: calculateRisk(data)
};

Enterprise-Grade Implementation

Production-ready code with proper error handling, timeouts, and security best practices

prepaid-detection.js
async function checkBinAndBlockIfPrepaid(bin, opts = {}) {
  // Validate input parameters
  if (!bin || typeof bin !== 'string') {
    return { blocked: true, error: 'Invalid bin argument' };
  }

  const apiKey = opts.apiKey;
  const userId = opts.userId;
  const timeoutMs = typeof opts.timeoutMs === 'number' ? opts.timeoutMs : 5000;

  // Security: Never embed API keys in client-side code
  if (!apiKey) {
    return { blocked: true, error: 'Missing apiKey, do not place real keys in client-side code' };
  }

  const controller = new AbortController();
  const id = setTimeout(() => controller.abort(), timeoutMs);

  const url = 'https://api.binsearchlookup.com/lookup?bin=' + encodeURIComponent(bin);

  try {
    const res = await fetch(url, {
      method: 'GET',
      headers: {
        'X-API-Key': apiKey,
        'X-User-ID': userId
      },
      signal: controller.signal
    });

    clearTimeout(id);

    if (!res.ok) {
      return { blocked: true, error: 'Lookup failed, HTTP ' + res.status };
    }

    const body = await res.json();

    if (!body || !body.success || !body.data) {
      return { blocked: true, raw: body, error: 'Unexpected lookup response' };
    }

    const categoryRaw = body.data.Category;
    const category = typeof categoryRaw === 'string' ? categoryRaw.trim() : '';

    if (!category) {
      // Conservative blocking when category is missing
      return { blocked: true, category, raw: body, error: 'Missing category' };
    }

    // Check if category contains PREPAID (handles "PREPAID", "PREPAID CARD", "BUSINESS PREPAID", etc.)
    const normalized = category.toUpperCase();
    const isPrepaid = normalized.includes('PREPAID');

    return { blocked: !!isPrepaid, category, raw: body };
  } catch (err) {
    clearTimeout(id);
    const message = err && err.name === 'AbortError' ? 'Lookup timeout' : (err && err.message) || 'Network error';
    // Conservative blocking on network errors
    return { blocked: true, error: message };
  }
}

export { checkBinAndBlockIfPrepaid };
ENTERPRISE INTEGRATION

Production-Ready in 15 Minutes

Follow our step-by-step implementation guide — from first API call to production in minutes

1

Install SDK & Configure

Add our battle-tested SDK to your project and configure with your API keys. Includes built-in retry logic, circuit breakers, and comprehensive error handling.

terminal

npm install @binsearchlookup/sdk
# or
yarn add @binsearchlookup/sdk

# Configure with environment variables (.env file)
export X_API_KEY=bsl_your_api_key_here
export X_USER_ID=your_user_id_here
export BIN_LOOKUP_ENV=production
                            
curl-example.sh
# Direct API call with curl
curl -H "X-API-Key: bsl_your_api_key_here" \
     -H "X-User-ID: your-user-id-here" \
     "https://api.binsearchlookup.com/lookup?bin=559994"

# Example response:
{
  "bin": "559994",
  "success": true,
  "data": {
    "BIN": "559994",
    "Brand": "MASTERCARD",
    "Type": "DEBIT",
    "Category": "PREPAID",
    "Issuer": "KOHO FINANCIAL INCORPORATED",
    "isoCode2": "CA",
    "isoCode3": "CAN",
    "CountryName": "CANADA",
    "similarBins": [],
    "cached": false,
    "responseTime": 2
  },
  "statusCode": 200,
  "responseTime": 15
}
                            

Complete API Documentation

For detailed integration guides, advanced features, SDKs, authentication methods, rate limits, and API reference, visit our comprehensive developer documentation.

2

Initialize Client

Create a configured client instance with automatic retries, timeout handling, and built-in monitoring.

binlookup-client.js

import { BinLookupClient } from '@binsearchlookup/sdk';

const client = new BinLookupClient({
  apiKey: process.env.X_API_KEY,  // e.g., bsl_6d8f0738da8fb792...
  userId: process.env.X_USER_ID,  // e.g., 0cceab85-bfe0-4267-990e-ba178d49658a
  timeout: 5000,
  maxRetries: 3,
  environment: 'production',
  // Enterprise features
  circuitBreaker: {
    threshold: 0.5,
    interval: 30000
  },
  monitoring: {
    enabled: true,
    sampleRate: 0.1
  }
});
                            
3

Implement Fraud Detection

Add real-time BIN verification to your payment flow with comprehensive fraud rules and risk scoring.

fraud-detection.js

async function validatePayment(paymentData) {
  try {
    const bin = paymentData.cardNumber.slice(0, 8);

    // Real-time BIN lookup with automatic retries
    const result = await client.lookup(bin, {
      includeRiskScore: true,
      includeIssuerDetails: true
    });

    // Enterprise fraud rules
    const riskRules = {
      blockPrepaid: result.cardType === 'PREPAID' && paymentData.amount > 1000,
      highRiskCountry: result.countryRiskLevel === 'HIGH',
      unknownIssuer: !result.issuer.verified,
      velocityCheck: await checkTransactionVelocity(paymentData)
    };

    return {
      approved: !Object.values(riskRules).includes(true),
      riskScore: result.riskScore,
      details: result,
      rulesTriggered: Object.keys(riskRules).filter(key => riskRules[key])
    };

  } catch (error) {
    // Fallback strategy for API failures
    return await handleFallbackValidation(paymentData);
  }
}
                            

BIN Lookup Frequently Asked Questions

Complete guide to Bank Identification Numbers, card verification, fraud prevention, and BINSearchLookup API integration - Updated June 2026

Any questions?

Talk to our sales team to learn more about how our pricing works.

By the numbers

1.4M+

BIN ranges in database

200+

Countries covered

TL;DR: Don't wait for the future. Build it.

Start Free with 500 Requests/Month