Instant Transfer Switch
A real-time interbank payment switch in the style of Malaysia's DuitNow. Banks send each other money in seconds, addressed by a phone or IC number, using ISO 20022 messages, and settle what they owe each other once a day. A Go bank simulator plays every bank.
- Net debit caps: one atomic SQL update, so concurrent transfers can never overshoot
- Timeouts handled safely: reject after 5 seconds, then camt.056 until the credit is reversed
- End-of-day settlement with net positions per bank, reconciled by each bank
- Operations view: Prometheus metrics, a Grafana dashboard and a live switch dashboard
- Java 21
- Spring Boot 3.5
- Go
- ISO 20022
- PostgreSQL
- Testcontainers
- Prometheus
- Grafana