Skip to content
← ~/work

Rebuilding a remittance platform, then getting it licensed

Idempotency keys and saga orchestration across mobile money and bank rails, then ISO 27001 and a central bank licence led from inside the engineering team.

client
Fast Pace Transfer
period
2020 to 2023
track
#engineering#advisory
PHP (Laravel)JavaAzureDockerRedisMySQL

Context

Fast Pace Transfer is a remittance company. Money comes in from senders abroad and goes out over mobile money and bank rails in Ghana. I joined as Lead Developer in 2020, when the product suite and its API services were already in production and the transaction success rate was below where a payments business can live.

The problem

A transfer is a sequence of calls to systems I did not control. A mobile money provider, a bank rail, a compliance check. Any one of them could time out, and a timeout tells you nothing about whether the money moved. Retry, and you risk paying twice. Give up, and you risk paying nobody while the customer's balance says otherwise.

The codebase treated a transfer as one request that either worked or did not. Real transfers are neither.

What I did

  • Rebuilt the product suite and API services around idempotency keys. Every money-moving request carries a key. A replay returns the original result instead of a second payout, which turns retries from a risk into the default recovery strategy.
  • Modelled each transfer as a saga: an ordered set of steps, each with a compensating action. A provider timeout mid-transfer now ends in a known state with a known next move, instead of a support ticket.
  • Introduced Agile delivery, TDD and production monitoring, in that order of resistance. Monitoring was the one that changed the conversation, because the team saw failures before customers reported them.
  • Led ISO 27001 certification from inside the engineering team. The controls, the evidence, and the engineering practices the auditor needed to see were built into how we shipped, rather than bolted on before the audit.
  • Led the engineering side of Central Bank of Ghana licensing.

What it cost

  • Idempotency is a storage and discipline cost. Keys live somewhere, expire at some point, and every caller has to send them. Clients that did not were the long tail of the migration.
  • Sagas trade atomicity for explicitness. Every step needs a compensation, every compensation needs a test, and a compensation that fails is its own class of incident.
  • Certification pulls engineers into evidence and documentation work that does not ship features.

Outcome

  • Transaction success rate pushed past 95%.
  • Team velocity up 50% and production errors down 40% after the Agile, TDD and monitoring rollout.
  • ISO 27001 certification achieved.
  • Central Bank of Ghana licence achieved.