aeat.core._iban module¶
Shared ISO 13616 IBAN shape and checksum primitives.
One canonical home for the IBAN_SHAPE_RE pattern and
iban_mod_97() check residue, consumed by
domain.calculations.registry._schema.IbanString for registry
casillas declaring data_type = "iban" and by the secure-storage
RefundAccount model. Keeping the primitives in
core lets each domain validate an IBAN without importing the other.
This module does not canonicalise operator input, decide whether a blank IBAN is
allowed, or choose the public error type. Registry casilla validation rejects
blank IBAN data, while the refund-account model treats None and blank input
as “no account on file”; both call these primitives after applying their own
boundary policy.
- IBAN_SHAPE_RE¶
ISO 13616 IBAN shape shared by registry and refund-account validators.
The pattern checks uppercase canonical text only: country code, two check digits, and an alphanumeric BBAN for a total length of 15-34 characters. It is only the structural gate; callers must also run
iban_mod_97().
- iban_mod_97(canonical)[source]¶
Compute the ISO 13616 IBAN mod-97 check residue for an already-canonical IBAN.
Callers normalize separators and case before matching
IBAN_SHAPE_RE; seedomain.calculations.registry._schema._validate_iban_string()anddomain.deadlines.RefundAccount._validate_iban(). This helper moves the leading four characters to the tail, replaces each letter with itsA=10 ... Z=35numeric form, and returns the integer modulo 97. A valid IBAN yields a residue of 1.- Parameters:
canonical (
str) – Uppercase, separator-free IBAN text that has already matchedIBAN_SHAPE_RE.- Return type:
- Returns:
The ISO 13616 check residue.
1means the check digits are valid.