Ernest Yoyowah
Fintech Engineering12 min readJul 2026

How Money Actually Moves: Why Every Software Engineer Should Understand This

A successful API response doesn't mean money has moved. Behind every payment tap lies authentication, authorization, ledger commits, settlement, and reconciliation — a distributed system where every step must be correct and recoverable.

"I tapped Send. The API returned 200 OK. The payment was successful... right?"

Not necessarily.

One of the biggest misconceptions in software engineering is believing that a successful API response means money has moved. It doesn't.

Behind every successful payment lies a carefully orchestrated sequence of authentication, authorization, ledger updates, notifications, settlement, and reconciliation. What appears to users as a simple tap on a screen is, in reality, a distributed system where every step must be correct, secure, and recoverable.

This is where finance meets software engineering.

Cloud infrastructureAPIEncrypted databaseAPIAuthenticationVerifies identityApproves transactionAuthorizationLedgerImmutable & sharedEach block verifiedTransfers fundsSettlementNotifyConfirms completion
From authentication to settlement — how every payment moves through the system

A Simple Payment

Imagine this. Kwame wants to send GHS 100 from his MTN Mobile Money wallet to Ama's Vodafone Cash wallet. For Kwame, it's effortless.

  1. 1.Open the app.
  2. 2.Enter Ama's number.
  3. 3.Enter GHS 100.
  4. 4.Confirm with his PIN.
  5. 5.Done.

The entire interaction takes less than a minute. But underneath that simple experience, dozens of events occur before a single cedi changes hands.

01

The User Initiates the Payment

Kwame enters the recipient's phone number, the amount, and his PIN.

Nothing has moved yet

At this point, the application has simply received an instruction. Think of it like submitting an online form — the request has been made, but nothing has been processed.

02

Authentication

Before anything else, the platform answers one question: Is this really Kwame?

The system verifies things such as:

  • Is the PIN correct?
  • Is the SIM active?
  • Is the wallet active?
  • Has the account been blocked?
  • Has suspicious activity been detected?

Only after successfully verifying the customer's identity does the payment continue.

03

Authorization

Now comes a different question: Should this payment be allowed?

Notice the distinction.

Authentication

Proves who you are

Authorization

Determines what you're allowed to do

Typical checks include whether Kwame has sufficient balance, whether he's exceeded his daily limit, whether Ama's wallet is valid, and whether any fraud rules are triggered.

Critical distinction

Authorization does not mean money has moved. It simply means the system has decided that the payment may proceed.

04

Recording the Transaction

Before updating any balances, the platform creates a transaction record.

Transaction IDSenderReceiverAmountStatus
TXN001KwameAmaGHS 100Pending

Why create this record before moving money? Because distributed systems fail. Servers crash. Networks disconnect. Databases restart.

If something goes wrong halfway through, engineers need an immutable record of what was attempted. Without this record, recovery becomes significantly more difficult — and "recovery" in payment systems means the difference between a refund and a loss.

05

Updating the Ledger

This is the moment where value actually changes. Contrary to popular belief, payment systems don't simply subtract money from one balance and add it to another. They update a ledger using double-entry accounting.

AccountDebitCredit
Kwame WalletGHS 100
Ama WalletGHS 100

Every debit has a corresponding credit. Money doesn't disappear. Money doesn't magically appear. It simply moves from one account to another.

Source of truth

The ledger is the source of truth. Every balance is derived from the ledger. Everything else — the UI, the notification, the receipt — is derived from the ledger.

06

Customer Notifications

Only after the ledger has been updated do customers typically receive notifications.

Kwame receives:

"Payment Successful"

Ama receives:

"You have received GHS 100"

Surprising to most engineers

The SMS or push notification is one of the least important parts of the payment. If the notification service fails, the payment may still have completed successfully. This is why financial systems separate payment processing from customer notifications entirely.

07

Settlement

Now suppose Kwame uses MTN Mobile Money while Ama uses Vodafone Cash. The payment may already appear complete to both customers — but behind the scenes, another process begins.

The two institutions must eventually settle their obligations through the national payment infrastructure. Depending on the payment scheme, settlement may happen immediately, in batches, or at scheduled intervals.

The biggest misconception

Payment is not the same as settlement. A customer may see "Payment Successful" long before financial institutions complete settlement between themselves. Understanding this gap is essential for building correct reconciliation systems.

What This Means for Software Engineers

Imagine your frontend immediately displays "Payment Successful." A few seconds later, the backend discovers that settlement failed.

Now what? Should the customer be refunded? Should the payment be reversed? Should the merchant still deliver the product? Should operations investigate?

Great payment systems answer these questions before anyone writes code. The failure modes aren't edge cases — they're design inputs.

Thinking Like an Architect

Many frontend engineers naturally think: "Did the API return 200 OK?"

Payment engineers think differently. They ask:

  • Did the ledger commit successfully?
  • Is this transaction idempotent?
  • Can this request be safely retried?
  • What happens if the customer taps Pay twice?
  • What if the notification service is unavailable?
  • Can tomorrow's reconciliation prove this transaction occurred?
  • Can the system recover from failure without losing money?

These aren't edge cases. They're everyday design considerations when building financial systems. This is the difference between building user interfaces and designing financial infrastructure.

Architecture Principle

Money should only move when the ledger says it moved — not when the UI says it moved.

Everything else — buttons, animations, loading indicators, receipts, notifications, emails, and success screens — is built around that single source of truth. The ledger decides reality. The user interface merely reflects it.

Final Thoughts

Every time someone taps Send, they see a simple interaction. What they don't see is the authentication, authorization, ledger updates, settlement workflows, fraud checks, audit logs, retries, reconciliation, and distributed systems working together to ensure every cedi is accounted for.

That's the beauty of financial software. When it's designed well, complexity becomes invisible. And perhaps that's the greatest compliment a payment system can receive.