Open this lesson in your favourite AI. It'll walk you through the why, explain the demo, and quiz you on the try-it list.
When you architect a money product, you're not really building 'an app that handles payments' — you're building a node in a global financial network with its own laws, partners, latency, and risk. The mental model that separates good fintech engineers from accidentally-built ones: every dollar in the system is a LIABILITY backed by an ASSET, every operation either moves a liability OR realizes risk.
How to think about a fintech product.
Use these three in order. Each builds on the one before.
In one paragraph, explain the asset/liability invariant of a money system.
Walk me through how a $50 deposit changes both ledgers and why both must increase by the same amount.
Given a marketplace platform holding seller funds before payout, design the asset/liability model and the daily reconciliation that catches drift.
MODEL: Your system is a ledger of LIABILITIES (what you owe to whom).
Backed by ASSETS (cash in your bank account, or processor balance).
Every operation either moves liabilities OR realizes risk events.
USER_BALANCES is the LIABILITY ledger:
alice: $100 ← you owe Alice $100
bob: $250 ← you owe Bob $250
Total liabilities to users: $350
YOUR_OPERATING_ACCOUNTS is your ASSET ledger:
Stripe balance: $300
Bank operating acct: $100
Total assets: $400
INVARIANT: Total assets ≥ total user liabilities + your operating funds
Failure = INSOLVENCY (regulatory violation; customer harm)
OPERATIONS:
Deposit ($50 from Alice via Stripe):
USER_BALANCES.alice += $50 (we owe her more)
Stripe balance += $50 (we have the funds)
Assets and liabilities both increase. Invariant preserved.
Withdraw ($30 from Bob via ACH):
USER_BALANCES.bob -= $30 (we owe him less)
Bank operating acct -= $30 (we sent the funds)
Assets and liabilities both decrease. Invariant preserved.
Internal transfer (Alice → Bob, $20):
USER_BALANCES.alice -= $20
USER_BALANCES.bob += $20
Total liabilities unchanged. Total assets unchanged. Invariant preserved.
Fees collected ($5 fee from Alice's $50 deposit):
USER_BALANCES.alice += $45
Stripe balance += $50
YOUR_REVENUE += $5
Total assets up $50; user liability up $45; your revenue (an asset!) up $5
Net: $50 = $45 + $5 ✓
NEVER VIOLATE THE INVARIANT:
Don't credit a user before funds clear (creates uncollateralized liability)
Don't ship a feature without thinking through this ledger model
Reconcile daily: do your ledgers match your processor + bank statements?
This is the foundational mental model. Modules 4-5 cover the technical
implementation (double-entry bookkeeping); Module 9 covers compliance
audits of this invariant.