AG

Case study · Government payments infrastructure

A payments building block any government can reuse

GovStack set out to specify government payments once, so any country could implement them. I led solution architecture for Fynarfin's delivery of the reference implementation: from an open specification to open-source code, a shared sandbox and a published test record.

Client
GovStack (convened by ITU, GIZ, Estonia and DIAL)
Delivered through
Fynarfin, implementation partner to the Mifos Initiative
When
2022 – 2024
My role
Solution architecture lead for Fynarfin's team; designed the shared G2P sandbox
Stack
Mifos Payment Hub EE, Zeebe (BPMN), Kafka, Kong, Keycloak, Kubernetes and Helm

The problem

Governments pay people through a patchwork: a pension scheme here, a cash-transfer programme there, school grants somewhere else, each with its own beneficiary list and bank arrangement. GovStack's 2023 webinar series showed the scale: India reported 318 direct-benefit programmes moving about USD 80 billion to 1.78 billion beneficiaries in a year, Senegal said 92% of its government payments were already digital, and Nigeria had issued 97.5 million national ID numbers.

GovStack's bet was that payments could be specified once, as a reusable "building block", and implemented by any conforming vendor. Governments, international bodies and banking working groups had tried to define a generic government payments API before and not got there, because the constraints pull against each other:

Delivery was a second problem of the same size: 219 must-have requirements, a five-organisation consortium, acceptance gated by independent reviewers, and other building blocks, such as Information Mediation (X-Road), being built at the same time.

The outcome

What shipped, when

WhenMilestone
Mar 2022Payments building block specification v1.1.0 signed off
Apr 2023Six-level G2P sandbox model published for other teams and country assessors
Jul 2023Account Mapper specification v2.4 and the test strategy (BDD suites, mocked banks, CI, load tests)
Aug 2023Person-to-government (P2G) bill-payment blueprint and data model
Dec 2023G2P technical integration guide
Mar 2024Live P2G demo: bill inquiry, bill payment and request-to-pay with asynchronous callbacks
Aug 2024Closure on Payment Hub EE v1.12.0 with the sandbox, training and security handover

How it worked

Instead of starting a new product, we extended Mifos Payment Hub EE, an open-source payment orchestrator. Every payment flow is a BPMN process run by Zeebe, small stateless connectors do the work, and every event streams through Kafka for audit. Adding a new rail means adding a connector and a diagram, not changing the core, which is what "generic across schemes" needs in practice.

Identity Account Mapper: privacy as an API

Government systems send a functional ID and never handle account numbers. The functional ID combines a foundational ID with an agency code and a programme code, so one person gets a separate, unlinkable identity in each programme. The mapper resolves it to a bank account, wallet or voucher at payment time, and the paying bank never sees the full identity record.

Bulk Processor: reject bad rows before money moves

A government batch is split into individual payments, each payee is checked against the mapper, valid rows are regrouped by destination bank, treasury approves, and results flow back to the programme.

Voucher Engine and Bill Pay

Vouchers serve programmes where cash is the wrong instrument, such as seed or food, and issuance is all-or-none so a programme never ends up with a half-issued run. Bill Pay handles money flowing back to government (bill lookup, payment and request-to-pay) on the same platform.

Tradeoffs worth keeping

Public references: GovStack Payments specification · Mifos on GitHub

← All case studies