IBANforge API
IBANforge checks IBAN structure and looks up available bank references: the bank, BIC and source of the information. Results distinguish a confirmed code, a code absent from a register that supports a conclusion, and insufficient or unavailable reference data. Coverage by source explains those differences.
Download the Postman getting-started collection
The service confirms neither account existence nor the account holder. Sanctions indicators concern the institution and country, not the named payee. A valid response is not payment authorisation.
Choose a path for your use case
| Your need | Start here |
|---|---|
| Add a check to accounting or ERP software | First call and result interpretation |
| Prepare a supplier file for migration | File review with separate proposals |
| Check an IBAN extracted by OCR | Use cases, limits and review cases |
| Automate without building a complete client | Python, SDK, Sheets and n8n recipes |
| Give an agent access to tools | MCP and access by transport |
The playground lets you inspect a response in your browser. For a complete file without an integration, the audit page provides a sample report and a free preview before any purchase.
First call without a key
curl --silent --show-error --include \
--request POST https://api.ibanforge.com/v1/iban/validate \
--header 'Content-Type: application/json' \
--data '{"iban":"CH10 0023 0000 0000 1234 5"}'This IBAN is a documentation example, not a payment instruction. The REST trial serves 25 validations per ISO UTC week per source address, on this route only. The trial response states the remaining allowance and reset time. On a shared network, that allowance may already be used; 402 trial_exhausted is not an IBAN finding.
See an example of the trial counters
Fictional, reproducible example: the first call from an address on 24 September 2026. The reset date below belongs to that historical example; for your call, read the values actually returned. This block describes the contract, not a real account balance.
{
"trial": {
"calls_used_this_week": 1,
"calls_left_this_week": 24,
"weekly_limit": 25,
"resets": "Monday 00:00 UTC",
"resets_at": "2026-09-28T00:00:00Z",
"free_key": "POST https://api.ibanforge.com/v1/keys/generate with {\"source\":\"api-trial\"} — no e-mail, no card, nothing to confirm: it returns an ifk_ key that works on every endpoint, good for 200 requests a month once claimed (POST /v1/keys/claim, key in the Authorization header, with a code mailed to an address you read). Unclaimed, the key starts at 25 requests a month",
"docs": "https://ibanforge.com/docs/api-keys?src=api-trial"
}
}The onboarding guide covers a reusable key, the first batch and errors. A free key claimed through a code sent by email provides 200 requests a month. Without an address, it normally starts with 25 monthly requests; always read monthly_limit and any notice.
Read the result at several levels
- HTTP: was the request processed? A quota refusal is not an invalid IBAN.
validandchecks: format, checksum and checks actually performed.not_checkedis notpass.bank_code_checkandbic: register finding, authority, source and date. Absence from a partial source does not prove that a code is unallocated.- Account limits: these bank references do not verify account existence, ownership or payee sanctions.
The validation reference explains the fields; the error reference explains refusals. Keep original bank details separate from proposals in your integration.
Main routes
HTTPS base: https://api.ibanforge.com. The complete contract is available in the OpenAPI reference and Postman collection.
The x402 prices below apply only when you choose payment per call. They are not charges added to the REST trial or calls covered by a key’s quota or prepaid credits. See x402 for payment and pricing for the current offers.
| Route | Purpose | Access | x402 |
|---|---|---|---|
POST /v1/iban/validate | Structure and references for one IBAN | Keyless trial on this route, then a key or authorised paid access | 0.005 USDC |
POST /v1/iban/batch | Up to 100 IBANs, one result per input | One quota unit per IBAN | 0.002 USDC / IBAN |
GET /v1/bic/:code | BIC lookup | Key or authorised paid access | 0.003 USDC |
GET /v1/ch/clearing/:iid | Swiss clearing reference | Key or authorised paid access | 0.003 USDC |
POST /v1/iban/compliance | Institution and country indicators | Key or authorised paid access; no payee screening | 0.02 USDC |
GET or POST /v1/iban/format | Structure and checksum without bank lookup | Free, no key | 0 |
GET or POST /v1/reference/validate | Checksum of supported payment references | Free, no key | 0 |
POST /v1/address/check | Address format under the requested scheme and its sourced rules | Free, no key | 0 |
POST /v1/ch/qr-bill/check | Swiss QR-bill payload structure | Free, no key | 0 |
POST /v1/audit/upload | CSV or Excel file review | Free preview; full report at the displayed price | Separate file price |
GET /v1/demo | Public response examples | Free; does not test a key | 0 |
GET /health | Public service status | Free | 0 |
Prepaid packs: 1,000 credits = $4; 5,000 = $20; 25,000 = $80. Credits do not expire; a validation or lookup uses one credit, and a batch uses one per IBAN. Card checkout and USDC options are described on pricing. The file audit has its own price based on file size, shown with the free preview; it is not included in these per-call prices.
Pricing and access limits describe the plans. A 402 response explains available options; it does not give an automation permission to buy credits or make a payment.