{"id":"iban-compute-from-bban","version":"1.0.0","description":"Compute the MOD 97-10 check digits and full IBAN for a country code and BBAN, using the pinned IBAN registry.","supported_operations":["build an iban from a bban","compute iban check digits from account number","generate an iban for this domestic bank account","convert a local bank account and sort code to an iban","create a swift-ready iban from bank and branch codes","חישוב ספרות ביקורת מחשבון בנק מקומי"],"unsupported_operations":["validating a full IBAN that may already be wrong (use iban-validate)","countries not in the pinned IBAN registry","case-folding or space-stripping the input (country and bban must already be normalized)"],"semantics":["country and bban are taken exactly as given; this tool does not case-fold or strip spaces. country must already match ^[A-Z]{2}$ and bban must already match ^[A-Z0-9]+$, 1-30 characters, or the call throws invalid_input.","spec = the pinned IBAN registry entry for country (getIbanSpec, the same table iban-validate uses). If spec is null, throw unsupported_input with details {country}.","If bban does not match the registry BBAN notation for country (bbanMatches, which also enforces the exact expected length spec.length - 4), throw invalid_input with details {reason: 'bban_format'}.","MOD 97-10 check: rearranged = bban + country + '00'. digits = alnum_to_digits(rearranged). r = digits mod 97. check_digits = 98 - r (range 02-98; r = 0 gives '98', never '00'), zero-padded to 2 decimal digits.","iban = country + check_digits + bban (electronic form, no spaces). print = iban split into groups of 4 characters joined by a single space. data_version is the same pinned IBAN registry version iban-validate reports."],"limits":{"max_bban_bytes":30},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["country","bban"],"properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$"},"bban":{"type":"string","minLength":1,"maxLength":30,"pattern":"^[A-Z0-9]+$"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["iban","check_digits","print","data_version"],"properties":{"iban":{"type":"string","minLength":5,"maxLength":34},"check_digits":{"type":"string","pattern":"^[0-9]{2}$"},"print":{"type":"string","minLength":5,"maxLength":42},"data_version":{"type":"string"}}},"examples":[{"input":{"country":"GB","bban":"NWBK60161331926819"},"output":{"iban":"GB29NWBK60161331926819","check_digits":"29","print":"GB29 NWBK 6016 1331 9268 19","data_version":"swift-iban-registry-103-2026-09.subset-80"}},{"input":{"country":"DE","bban":"370400440532013000"},"output":{"iban":"DE89370400440532013000","check_digits":"89","print":"DE89 3704 0044 0532 0130 00","data_version":"swift-iban-registry-103-2026-09.subset-80"}},{"input":{"country":"NL","bban":"ABNA0417164300"},"output":{"iban":"NL91ABNA0417164300","check_digits":"91","print":"NL91 ABNA 0417 1643 00","data_version":"swift-iban-registry-103-2026-09.subset-80"}}],"execute_url":"/v1/tools/iban-compute-from-bban/versions/1.0.0/execute"}