In most products a bug is an annoyance. In fintech it is a double charge, a ledger that no longer balances, or a question from an auditor you cannot answer. The discipline that prevents that differs in kind, not just in degree.
Interfaces are the visible tenth of a fintech product. The rest is state machines, reconciliation and the record of what happened, which is also where the expensive mistakes live.
Double-entry ledgers, daily reconciliation against provider statements, and exception queues for the breaks. Built in from the start it is a feature; bolted on later it becomes a permanent project.
Every money-moving endpoint keyed, replay-safe and tested against duplicate delivery, because networks retry and webhooks arrive twice. Most double-charge incidents are an idempotency key nobody designed.
Identity verification, document capture, sanctions and PEP screening through your chosen providers, with manual review queues for the cases that do not clear automatically. The unhappy path is most of the work.
Append-only history covering who did what, to which record, under what authority. Built so an audit is a query rather than a forensics exercise conducted under time pressure.
Card acquiring, open banking, UPI, ACH, SEPA, wallets and card issuing, with the settlement, chargeback and refund flows that come attached and never appear in the sales deck.
Document extraction in onboarding, anomaly detection on transaction patterns, and support agents with read access and no ability to move money. Autonomy stops well before the ledger.
Idempotency where it matters, and reconciliation to catch the case where it did not hold. We assume the network will misbehave, because it does.
Every state change traceable to an actor, a time and a reason. If you cannot reconstruct what happened, you cannot answer the question you will eventually be asked.
Payment paths designed to degrade rather than fail, queued writes, provider failover, and a message to the customer that is true instead of a generic error.
Access control, encryption, key handling, logging and change management documented as we go, so a security questionnaire or audit does not turn into a two-month scramble.
Before any interface, we agree the ledger model, the states a transaction can occupy, and what happens at each failure point. This is the part that is genuinely expensive to change later.
Reversals, partial failures, duplicate webhooks, timeouts and disputes get built alongside the happy path rather than scheduled after launch. In fintech, they are the launch.
Reconciliation tested against real provider data in sandbox, load and failure testing on the payment path, and a documented runbook before the first live transaction.