Back to Blog
Building the MW-JSON Fintech Interoperability Standard
ArchitectureFintechGoStandards
Building the MW-JSON Standard
Interoperability in the African fintech landscape is notoriously difficult. In Malawi, connecting a modern digital wallet to a legacy banking system often meant writing custom integration layers for every single partner.
This is why I built the MW-JSON Standard.
The Problem with Custom Integrations
When building malawi-pay-standard, we noticed a pattern:
- Bank A uses XML/SOAP.
- Telco B uses a proprietary REST API.
- Startup C uses GraphQL.
Every new connection scaled at $O(n^2)$ complexity.
// The old way: A tangled mess of custom parsers
func HandlePayment(provider string, payload []byte) error {
switch provider {
case "bank_a":
return parseSOAP(payload)
case "telco_b":
return parseREST(payload)
default:
return ErrUnknownProvider
}
}
The Solution: A Unified Protocol
MW-JSON provides a single, strongly-typed JSON schema for all financial transactions in the region. It handles currency conversion, KYC metadata, and asynchronous callbacks natively.
The goal wasn't to replace existing APIs, but to provide a translation layer that everyone could agree on.
Key Features
- Deterministic: Exactly-once semantics via idempotent transaction IDs.
- Fast: Built in Go, the translation layer adds less than 2ms of overhead.
- Secure: Native support for asymmetric payload signing.
Check out the GitHub repository to see the full specification.