Fintech Internals: Why Payment Systems Are Designed to Be Boring
Introduction:
Payment systems are not exciting engineering. They do not use the latest distributed systems research, they do not adopt new databases as soon as they appear, and they do not refactor toward cleaner abstractions when better ones emerge. They run on technology that is decades old, follow protocols that predate the modern internet, and change at a pace that would frustrate any engineer accustomed to moving fast.
This conservatism is not an accident or a failure of imagination. It is a deliberate engineering philosophy that emerges from the consequences of getting payment systems wrong. When a social media feed shows a post out of order, the consequence is a mildly confusing user experience. When a payment system processes a transaction twice, debits the wrong account, or loses a transaction entirely, the consequences are financial loss, regulatory penalties, and a destruction of user trust that is almost impossible to recover from.
Boring is not a limitation of payment system engineering. It is the design goal.
Money Requires Exactness That Other Domains Do Not:
Most software systems operate with tolerances. A recommendation engine that is right eighty percent of the time is useful. A search system that returns slightly different results for the same query on different days is acceptable. A content delivery system that serves a cached version of a page that is a few minutes old causes no meaningful harm.
Payment systems have no equivalent tolerance. A transaction either processed or it did not. The amount debited must exactly match the amount credited. The account that was charged must be exactly the account that was intended. Approximate correctness in a payment system is not a minor quality issue — it is a financial error with direct consequences for real people and real money.
This requirement for exactness drives engineering decisions at every level. Floating point arithmetic, which introduces rounding errors that are negligible in most contexts, is never used for monetary calculations — financial systems represent money as integers in the smallest currency unit to eliminate rounding entirely. Database transactions that provide atomicity guarantees are non-negotiable because partial updates — where a debit succeeds but the corresponding credit does not — are financially catastrophic.
Idempotency Is Not Optional:
Networks fail. Servers crash. Timeouts occur. In any distributed system, the same operation may be attempted multiple times because the initiating system cannot determine whether a previous attempt succeeded. Most systems handle this with retry logic and accept that occasional duplicate operations are an acceptable cost of reliability.
Payment systems cannot accept duplicate operations. A payment that is processed twice charges the customer twice. A refund that is applied twice credits the customer twice. The retry logic that improves reliability in other systems causes financial errors in payment systems without idempotency protection.
Every operation in a payment system must be idempotent — designed so that executing it multiple times produces exactly the same result as executing it once. This requires generating unique identifiers for every transaction attempt, storing those identifiers durably before attempting the operation, and checking for existing results before processing any new attempt. The engineering overhead of idempotency is significant. The alternative — allowing duplicate processing — is not acceptable.
The Existing Rails Are the Constraint:
Payment systems do not operate in isolation. They connect to banking networks, card schemes, and payment processors that were built decades ago and that change on timescales measured in years rather than months. SWIFT messages, ISO 8583 card transaction formats, and ACH batch file specifications are not modern protocols — they are legacy standards that the global financial system depends on and that payment engineers must implement correctly.
These protocols define what is possible. A payment system that wants to settle funds through the banking network must speak the language of that network regardless of how outdated that language is. A payment system that processes card transactions must implement the exact message formats that card schemes require, including fields that exist for historical reasons and carry no current meaning.
Engineering creativity in payment systems operates within these constraints rather than around them. The interesting engineering work is building modern, reliable systems that translate between the expectations of contemporary applications and the requirements of legacy financial infrastructure — not replacing that infrastructure with something newer.
Settlement and Reconciliation Are the Real Engineering:
The visible part of a payment — the moment a user taps their card or submits a payment form — is a small fraction of the engineering that makes payments work. The less visible work — settlement, reconciliation, and exception handling — is where most of the complexity lives and where most payment engineering effort is actually spent.
Settlement is the process by which money actually moves between financial institutions. A card payment that is authorised in milliseconds may not settle for one to three business days. During that period, the payment system must track the authorised but unsettled transaction, manage the settlement process through card scheme networks, and reconcile the settled amount against the authorised amount — which may differ due to currency conversion, fees, or partial settlements.
Reconciliation — verifying that every transaction the payment system recorded matches the transactions that financial counterparties recorded — runs continuously and handles exceptions when records do not match. Discrepancies between internal records and external records must be investigated and resolved, often manually, before the end of the business day. This operational work is not glamorous but it is what ensures that the numbers balance.
Regulatory Requirements Shape Engineering Decisions:
Payment systems operate under regulatory frameworks that impose technical requirements — PCI DSS for card data security, PSD2 for open banking in Europe, AML regulations for anti-money laundering, and jurisdiction-specific requirements that vary across every market a payment system operates in.
These regulations are not engineering guidelines — they are legal requirements with financial penalties for non-compliance. Engineering decisions that would be straightforward in unregulated domains require legal and compliance review in payment systems. Data retention policies, encryption requirements, audit logging specifications, and access control models are all shaped by regulatory requirements that change on legislative timescales rather than engineering timescales.
The result is payment systems that carry architectural decisions imposed by regulation rather than by technical preference — audit logs that are kept longer than engineering would choose, encryption schemes that are mandated rather than selected, and data handling practices that reflect compliance requirements rather than engineering elegance.
Conclusion:
Payment systems are designed to be boring because the cost of excitement — novel technology with unknown failure modes, architectural innovation that introduces unexpected edge cases, speed of change that outpaces thorough testing — is measured in financial loss, regulatory penalties, and user trust that once lost is almost impossible to rebuild.
The engineering discipline required to build boring payment systems well is genuine and demanding. Exactness in monetary calculation, idempotency across every operation, correct implementation of legacy protocols, reliable settlement and reconciliation, and compliance with regulatory requirements are all hard problems that require careful engineering. They are just hard problems that do not make for exciting conference talks — which is exactly as it should be when the alternative is an exciting payment system that occasionally loses money.
Enjoyed this post?
Stay in the loop
New posts + weekly digest, straight to your inbox.
Create a free account
- Save posts to your vault
- Like posts & build history
- New-post alerts
No comments yet. Be the first to comment!