#Backend

Engineers get a field guide for fintech systems

Marta Kowalska
Marta Kowalska
7 min read

The Fintech Engineering Handbook gives software teams a practical map for building systems that move, record, and audit money without inventing or losing value.

The Fintech Engineering Handbook lays out a practical set of patterns for engineers who build software around money, from ledger design and idempotency to webhooks, reconciliation, access controls, and production testing.

The handbook serves engineers who join fintech from other software fields. A social app can recover from a duplicate notification. A money system cannot shrug off a duplicate withdrawal, a rounded-away fee, or a missing settlement record. The guide frames that work around three rules: do not invent data, do not lose data, and do not trust external or internal systems without checks.

The first lesson starts with representation. Money needs an amount and a currency, stored with enough precision for the job. The handbook warns against floating-point types for financial amounts because common parsers and runtimes can introduce rounding errors at the edge of an otherwise careful system. It points teams toward fixed minor units, arbitrary precision decimals, rational numbers, or a mix of those approaches, depending on whether the system stores balances, computes rates, or handles crypto assets.

That distinction matters. A $12.34 fiat balance may fit as 1,234 cents under the currency metadata in ISO 4217. A crypto token may use 18 decimals and overflow a 64-bit integer. A bare JSON number can undo careful internal design if a client parses it as an IEEE 754 double. The handbook pushes engineers to send money as strings or smallest-unit integers instead.

The guide treats rounding as a business decision, not a formatting concern. Fee calculations, currency conversions, interest, and rate applications can all create fractions that the system must allocate. Teams need to choose who receives or loses the remainder, record the residual, and avoid rounding until a boundary such as persistence or display. If a platform splits one payment into several parts, the rounded parts may no longer add back to the original amount. The handbook urges teams to track that gap instead of hiding it.

The ledger section gives the handbook its center of gravity. The guide explains double-entry bookkeeping as an engineering pattern: each movement credits one account and debits another, so money has a source and destination. External providers get accounts too. User balances come from postings rather than mutable balance fields. Corrections happen through new linked entries, not edits to posted records.

That approach gives auditors a trail. A financial system needs to explain what happened, who triggered it, when the system booked it, why it happened, and which source data supported the decision. The handbook separates value time, booking time, and settlement time because those dates answer different questions. A card transaction may occur Monday, enter the company’s system Tuesday, and settle to the bank Friday. Collapsing those dates into one created_at field loses facts the team cannot reconstruct later.

The handbook also treats event sourcing with care. Event sourcing can give teams a strong audit trail because the event log becomes the source for derived state. The guide does not sell it as a universal answer. Engineers still need projections, snapshots, schema evolution, and tools for old events that must survive for years. For many surrounding domains, the handbook says a conventional model with a reliable change log can meet the need with less operational cost.

Execution patterns take up another large part of the guide. Idempotency gets special attention because fintech systems retry calls by design. A withdrawal request may time out after the provider receives it. The client may retry. The server must collapse those deliveries into one effect. The handbook favors explicit idempotency keys scoped to a client and operation, plus atomic barriers that handle two duplicate requests arriving at the same time.

Funds reservation handles a different race. Before a platform sends money out or calls a compliance provider, it reserves the required amount against the user’s available balance. The user still owns the funds, but the system prevents another transaction from spending the same amount. The guide makes one hard requirement clear: checking the balance and recording the reservation need strong consistency. A stale read can let two withdrawals pass against the same funds.

The handbook does not pretend reservations remove overdrafts. External systems can force negative balances through higher-than-expected settlement, reversals, chargebacks, or delayed fees. The guide warns engineers against encoding nonnegative balances as an unsigned type or a database constraint that rejects reality. A system that cannot represent a negative balance may crash, clamp the value to zero, or mint money through a bad repair path. The handbook tells teams to book the overdraft, investigate it, and recover through future deposits, repayment, or a loss account.

External integrations receive the same distrust. Payment processors, banks, custodians, KYC vendors, AML vendors, blockchain nodes, and internal services can return malformed payloads, stale records, duplicated messages, or silence. The handbook advises teams to validate the fields they rely on, store requests and responses in queryable form, and run napkin math against provider quotas before traffic exposes a limit.

Webhooks get a blunt treatment. A webhook should trigger a check, not settle a fact. The guide recommends verifying signatures over raw bytes, saving the raw payload, acknowledging fast, and processing work outside the request path. Teams should query the provider’s API for current state and build reconciliation jobs for the webhooks that never arrive. The same event may arrive twice or out of order, so webhook handlers need idempotency and state checks.

The handbook connects that pattern to reliable publishing. A system that updates its database and sends a Kafka event or outbound webhook in a separate step can fail between the two. The guide describes the outbox pattern, change data capture, and event sourcing as practical answers. Tools such as Debezium, AWS Database Migration Service, Temporal, Camunda, and AWS Step Functions cover pieces of that space, though each brings its own model and operations burden.

Reconciliation acts as the backstop. The handbook urges teams to compare their ledger with processors, banks, custodians, blockchains, and other independent sources. A mismatch can mean missing data, different amounts, stale settlement, or one-to-many batch transfers. The guide warns against overwriting one side to make a report green. Engineers need first-class corrections, reprocessing paths, and matching logic that respects settlement timing.

The controls section broadens the idea of distrust to employees and systems inside the company. Sensitive money operations, fee changes, production deployments, and infrastructure changes may require segregation of duties or maker-checker approval. The approval itself needs a record: requester, approver, reason, timestamp, and proof that the same person did not perform both roles. Access control receives the same treatment through least privilege, role-based access, change trails, and periodic reviews.

Testing closes the handbook with techniques that fit financial state better than example-based checks alone. Property-based testing can generate operation sequences and assert that books balance after each step. Crash injection can kill a long-running flow between each pair of steps and prove that a worker can resume it. Golden tests can pin fee breakdowns or statements to reviewed outputs. Backward-compatibility tests can keep old event payloads readable after schema changes.

The handbook’s end-to-end examples make the patterns concrete. A crypto withdrawal combines idempotent submission, funds reservation, compliance checks, on-chain broadcast, confirmation depth, ledger postings, fee settlement, and chain reconciliation. A card deposit shows why a platform should treat a capture webhook as a signal, credit through a clearing account, wait for settlement, and handle chargebacks through linked reversals. An in-app conversion with cashback shows why spread, rounding, reference rates, and promotional money all need ledger entries.

The project does not announce funding, investors, or a commercial launch. Its market position comes from a different gap: many engineers enter fintech with strong distributed systems skills but little exposure to accounting, settlement, custody, sanctions checks, chargebacks, and audit evidence. The handbook packages those concerns as software patterns instead of finance folklore.

That makes the guide useful beyond fintech startups. Any team that stores balances, moves assets, credits promotional funds, emits financial reports, or integrates with payment providers faces the same pressure. Money software fails in the cracks between services, timestamps, retries, and human overrides. The handbook gives engineers a vocabulary for those cracks and a set of controls they can turn into code.

Comments

Loading comments...