Modular monolith with ports and adapters
Domain-driven design with clear module boundaries, anti-corruption layers and cloud-native deployment — built for auditability, scale and operational clarity.
Clean boundaries, clear responsibilities
Each domain module owns its data, exposes clear interfaces and communicates through well-defined ports.
Identity
Authentication, JWT tokens, session management and user identity.
Customer
Customer profile management, data model and lifecycle.
KYC
Know Your Customer workflows, verification states and compliance review.
Accounts
Account creation, management and lifecycle with core banking integration.
Payments
Payment initiation, lifecycle management and settlement tracking.
Beneficiaries
Beneficiary management for INTERNAL, SEPA and SWIFT payment types.
Ledger Orchestration
Transaction recording, ledger operations and reconciliation foundation.
Audit
Immutable audit event logging with JSONB context and correlation tracking.
FX
Foreign exchange quotes, confirmations and execution with rate provider abstraction.
SEPA payment lifecycle with full state tracking
Every payment transitions through well-defined states — from creation through screening, submission and settlement — with audit events at each transition.
Payment rails: INTERNAL, SEPA, SWIFT — each with rail-specific lifecycle extensions.
Clean domain isolation through adapter ports
Core banking integration is isolated behind a well-defined port boundary. The dolfin pay domain model remains clean and independent.
Cloud-native on Google Cloud Platform
Designed for GCP Cloud Run with managed PostgreSQL, secret management and CI/CD.
Want to understand the architecture in depth?
Book an architecture walkthrough with our engineering team.