rikudou/iban
Validate, parse, and format International Bank Account Numbers in PHP with rikudou/iban. Country-aware checks, compact and electronic IBAN formatting, and simple integration for banking, payment, and Laravel validation workflows.
Architecture fit. rikudou/iban is a single-purpose utility library — IBAN parsing, validation (ISO 13616 / mod-97), and formatting — with no framework coupling. That's an easy fit for Laravel: it slots in as a pure domain primitive behind a service class or validation rule, with no service provider, config publishing, or migration surface implied. The risk isn't architectural, it's provenance.
Integration feasibility. Technically near-trivial: Composer install, PSR-4 autoload, use it inside a Rule object or a value object cast. The real friction is procurement and legal, not engineering.
Technical risk. Several signals compound:
Key questions for the maintainer / spike:
Stack fit. Good for a Laravel codebase: no globals, no facades of its own, no HTTP or DB coupling. It belongs in the domain layer, not controllers.
Recommended pattern — wrap, don't spread. Introduce our own IbanValidator / Iban value object interface, with a RikudouIbanAdapter implementation. Bind it in a service provider. Application code (form requests, jobs, payout services) depends only on the interface. This makes the library a swappable detail rather than a load-bearing dependency, which is the correct posture for a 4-star, 0-dependent package.
Migration path.
globalcitizen/php-iban or Symfony Validator's Iban constraint — the latter is already available transitively in many Laravel stacks) across a fixture set of real and malformed IBANs.Compatibility. Check PHP constraint against our runtime. If it requires an extension we can't guarantee across FPM/queue/CI images, the adapter approach lets us swap instead of blocking.
Sequencing. Do it in phases: interface and adapter first (vendor-neutral), parity harness second, enforcement third, formatting/display use last. Never let the library's types leak into serialized payloads or DB columns — store IBAN as a normalized string we own.
Maintenance. The single-maintainer, one-release-since-2023 profile means we should assume we may inherit maintenance. The adapter boundary plus our own fixture suite is what makes that a config change instead of a refactor. Budget a recurring quarterly check of upstream releases and the bundled registry vintage.
Support. No SLA, no vendor, WTFPL disclaims warranty. Escalation path is "we fix it ourselves." For a payments-adjacent validation path, that is acceptable only because the logic (mod-97, BBAN patterns) is well-specified and reimplementable.
Scaling. Negligible compute — string ops and integer arithmetic per request, no I/O, no external calls. Not a scaling concern even at high throughput; validation is microseconds. If bcmath is involved, keep it off hot batch loops only if profiling says so.
Failure modes to instrument:
Ramp-up. Engineering ramp-up is genuinely low: an afternoon to integrate, a day or two to build the adapter and fixtures properly. The non-obvious cost is the legal review and the parity harness — that's where the real hours go, and it's the same effort we'd spend vetting any replacement. Net recommendation: usable, but only behind an abstraction, and only after license clearance and parity evidence. If either is unfavorable, default to Symfony's IBAN constraint or php-iban, which have materially better adoption evidence.
How can I help you explore Laravel packages today?