OmniBankingEx — One Kernel. Many rails. Multi-provider banking integrations in Elixir
A multi-provider banking integration lab built on the Support and Kernel architecture: an immutable Kernel, a shared Support layer, and shared-nothing plugins.
The proof: the same Kernel.Plugin contract (init/1 + call/2) serves five providers with radically different auth mechanisms and domain models — with zero breaking changes to the Kernel across every phase.
Providers integrated:
Provider Domain Auth Pismo Issuer-processing (BR) OAuth2 Client Credentials Pomelo Card-issuing (LatAm) OAuth2 Client Credentials Asaas Payment institution (BR) Static API Key Pluggy Open Finance (BR) API Key via POST /auth bunq Neobank (EU) RSA handshake Architectural rules, enforced at build time:
Plugins never import plugins — not siblings, not other providers. Cross-domain data travels through the context.
Plugins depend only on Kernel + Support.
mix plugins.check and a phased compiler fail the build on violation.
Five providers. Five auth mechanisms. Two opposite money-flow models (money-out vs. money-in). One Kernel.
Read next Build a persistent workspace with Phoenix and SmolBox
