Money, identity & time
Money types with rounding policy, IBAN and Czech account checks, identity numbers and a banking calendar that handles working days and Easter.
Explore libs-domain ↗OpenBank Labs / Shared banking intelligence
Every bank needs to count money, understand business days and speak payment rails. Those rules should be written once, tested deeply and shared.

From common logic to extraordinary banks.
Build on what matters.Inside openbank-libs
The domain core is plain Kotlin without framework dependencies. Shared types and rules help services agree at the source instead of reconciling differences later.
Money types with rounding policy, IBAN and Czech account checks, identity numbers and a banking calendar that handles working days and Easter.
Explore libs-domain ↗Amortization, APRC, IFRS 9 and delinquency calculations are shared building blocks rather than slightly different implementations in every service.
Explore libs-lending ↗Reusable messages for pacs.008, pacs.002, pacs.004 and camt.054/056 make payment flows speak the same language.
Explore libs-iso20022 ↗Transactional outbox, idempotency, audit and authorization primitives reduce the need to rebuild the same infrastructure service by service.
Explore libs-runtime ↗Shared temporal patterns help long-running banking work remain explicit and recoverable.
Explore libs-temporal ↗Testcontainers, money generators for property tests and conformance checks help prove outbox and authorization behavior.
Explore libs-testing ↗From OpenBank Labs · QRlessPay SDK
QRlessPay carries the same SPAYD payment descriptor a QR code would carry, directly from one phone to another over Bluetooth Low Energy. A bank-agnostic profile and public Swift/Kotlin SDK aim to let different banks and app platforms exchange a payment request with one tap.
The payer still sees the recipient and amount, confirms the proposal and authorizes the payment in their own bank app. Settlement stays on the bank's existing account-to-account rail.
Early reference SDK · public source and conformance tests; physical two-device interoperability has not yet been demonstrated.
Open source · open questions
The ambition is a reusable bank kernel: shared foundations that leave teams free to build their own customer experience.