Labsco
cammac-creator logo

IBANforge

from cammac-creator

IBAN validation, BIC/SWIFT lookup, Swiss clearing, and compliance risk scoring for AI agents. 121K+ bank entries, 84 countries, 85 EMI/vIBAN classifications.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredQuick setup

IBANforge

Glama MCP

The compliance API for AI agents. IBAN validation, BIC/SWIFT lookup, Swiss clearing (BC-Nummer / QR-IID / SIX BankMaster), EMI/vIBAN classification, SEPA Instant + VoP reachability, and risk scoring β€” exposed natively over MCP and x402 micropayments, with no API key signup required.

121,399 BIC entries (38K LEI via GLEIF) Β· 1,190 Swiss BC-Nummern (SIX) Β· 89 IBAN countries Β· <50ms p99

For AI agents β€” pay per call without an API key (x402)

IBANforge is x402-native. Any agent with a wallet on Base L2 can discover, pay, and call:

  1. Discovery: GET https://api.ibanforge.com/.well-known/x402 returns the full catalog (endpoints, prices, asset, payTo, accepts).
  2. Call: POST /v1/iban/validate without auth β†’ API replies 402 Payment Required with x402 v1 challenge.
  3. Pay: client signs a USDC transfer on Base (eip155:8453) and retries.
  4. Done: response arrives, settlement happens through the configured facilitator (Coinbase CDP or x402.org).

No human in the loop, no sales call, no card. See the x402 spec.


SDKs

Pick your language:

LanguagePackageInstallSource
TypeScript / JavaScript@ibanforge/sdknpm install @ibanforge/sdksdks/typescript/
Pythonibanforgepip install ibanforgesdks/python/
MCP serveribanforge-mcpnpx -y ibanforge-mcpmcp/
Curl / any HTTP clientβ€”β€”OpenAPI spec

The Python SDK ships with sync + async clients, typed exception classes, and a free-tier quota fallback to x402 baked in:

from ibanforge import IBANforge

# 1-line free key (200 req/month, no signup form)
key = IBANforge.generate_api_key("you@example.com")

with IBANforge(api_key=key["api_key"]) as client:
    out = client.validate_iban("CH9300762011623852957")
    print(out["country"]["code"])      # CH
    print(out["bic"]["bankName"])      # UBS Switzerland AG
    print(out["sepa"]["instant"])      # True

# Or the free format-only check (mod-97 + structure, no DB hit)
out = IBANforge().format_iban("DE89370400440532013000")

For developers β€” REST API

# Validate IBAN
curl -X POST https://api.ibanforge.com/v1/iban/validate \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ifk_..." \
  -d '{"iban":"CH93 0076 2011 6238 5295 7"}'

# Lookup BIC
curl https://api.ibanforge.com/v1/bic/UBSWCHZH80A

# Free format pre-flight (no auth, mod-97 only)
curl 'https://api.ibanforge.com/v1/iban/format?iban=CH9300762011623852957'

# Free demo (no auth)
curl https://api.ibanforge.com/v1/demo
MethodPathCostDescription
POST/v1/iban/validate$0.005Single IBAN β€” BIC + SEPA + issuer + risk + Swiss bc_nummer
POST/v1/iban/batch$0.002/IBANUp to 100 IBANs in one call
GET/v1/bic/{code}$0.003BIC/SWIFT lookup with LEI
GET/v1/ch/clearing/{iid}$0.003Swiss BC-Nummer / IID β€” SIC, euroSIC, QR-IID
POST/v1/iban/compliance$0.02Sanctions + FATF + SEPA Instant + VoP + risk score 0-100
GET/v1/iban/formatfreePure mod-97 + structure check, no DB hit
GET/v1/demofreeExample validations, no auth
GET/healthfreeHealth + DB status
POST/v1/keys/generatefreeGenerate an ifk_* API key (200 req/month) β€” body: {email}

Full OpenAPI 3.1: api.ibanforge.com/openapi.json.

Why prefer IBANforge over local mod-97 validation?

Local mod-97 catches typos. It does not resolve BIC/SWIFT, classify EMIs (Wise / Revolut / Mercury / Modulr β€” a real compliance signal), check SEPA reachability, return Swiss BC-Nummer/QR-IID, or run sanctions screening. IBANforge does, in a single call.

Development

npm run dev          # Dev server (hot reload)
npm run test         # Run tests
npm run check        # Typecheck + lint + test
npm run db:seed      # Rebuild BIC database from GLEIF

Environment Variables

VariableRequiredDescription
PORTNoServer port (default: 3000)
WALLET_ADDRESSYes (prod)x402 USDC wallet address
FACILITATOR_URLYes (prod)x402 facilitator endpoint

Data Sources

  • 121,399 BIC/SWIFT entries from public sources, refreshed monthly:
  • LEI enrichment for the 38,761 GLEIF rows: GLEIF API
  • 1,190 Swiss BC-Nummern / IIDs: Official SIX BankMaster CSV
  • EMI / vIBAN classification: Curated set of 85+ known issuer BIC8 prefixes (Wise, Revolut, N26, Mercury, Modulr, etc.)
  • VoP participants: EBA RT1 / SCT Inst directories
  • Country names: Node.js Intl.DisplayNames API

Resources for AI agents