Home › Bank code verification

Bank code verification

A valid checksum doesn’t mean the bank code is assigned.

The checksum is arithmetic on the digits. AsterPay takes the bank code out of the IBAN and asks the national register whether it is currently allocated — and refuses settlement when it isn’t.

35 seconds, real API responses.

Two IBANs. Two answers.

Both pass the checksum. Only one carries a bank code that is currently allocated.

Refused

DE44 9999 9999 0532 0130 00

Bank code 99999999, no current allocation · HTTP 400

{
  "success": false,
  "bank_code_check": {
    "status": "not_in_register",
    "authoritative": true,
    "value": "99999999",
    "register": "Deutsche Bundesbank
                  Bankleitzahlendatei"
  }
}
Allocated

FI… · NDEAFIHH

Registered bank code, this check passed · HTTP 200

{
  "iban_checksum": "valid",
  "bank_code_check": {
    "status": "verified",
    "authoritative": true,
    "value": "1",
    "register": "Finance Finland monetary
                  institution codes"
  }
}

Register data sources

A national register is authoritative: if the code is absent from it, the code has no current allocation.

These are data sources, not partners or endorsers of AsterPay. The German file is published quarterly and carries the Bundesbank’s own non-binding disclaimer. Everywhere else falls back to a composite BIC map, which is informational only and never blocks a payout — absence of knowledge is not proof. Register data via IBANforge.

What this is, and what it isn’t

This does not

Confirm that the account exists.
Confirm who controls it.
Detect scams or fraud.

This does

Validate the IBAN checksum.
Check the bank code against the national register.
Refuse settlement on an authoritative no-match.

A register match does not confirm that the account exists or who controls it. A currently allocated bank code combined with a nonexistent account number will still pass this check. The check also fails open by design: a timeout or an unreachable register returns unavailable and never blocks a payout on its own.

Try it

Free, no key, live right now.

curl -s "https://api.asterpay.io/v1/mpe/merchants/resolve?merchant_id=mpe-demo-0001"

Every resolved IBAN carries a bank_code_check object. The same verdict gates POST /v1/mpe/settle.

More than the checksum. Before money moves.

Put a register check in front of every euro your agents pay out.

Talk to us