Card deposit with a fee
Why fees are not just 'subtracted from the user's balance'.
By Solomon Ajayi · Free to read, no signup
Your fintech is live. A user funds their wallet with ₦10,000 via card. Your provider (Flutterwave) charges you 1.5% (₦150). You charge the user a 1% platform fee (₦100). Five accounts move at once. This is the entry junior engineers always get wrong.
A card deposit looks like one thing happening (a user adds money) but it is really several economic events firing at the same instant. Money arrives from the card. Your payment provider takes a cut. You take your own cut. And you now owe the user whatever is left in their wallet. Four distinct movements, one swipe. The naive model collapses all of that into a single 'add money to wallet' operation and loses every fact that matters for running the business.
Each movement belongs in its own account, and the type of account is what makes the books useful later. What you owe the user is a liability. What the provider charges you is an expense. What you charge the user is revenue. The cash claim you gain from the provider is an asset. Keep them separate and you can answer, at any moment, how much you owe users, how much you earned, and how much you spent. Net them into one number and all three questions become unanswerable.
Watch the economics in this lesson closely. You charge the user a 1% platform fee but pay the provider 1.5%, so the business is actually underwater on every deposit. That is not a bug in the example. Plenty of fintechs run deposits at a loss to win users, then earn it back on float income (lesson 31) and card interchange (lesson 26). The ledger does not care whether you profit, it records the truth either way, and the truth here is a small loss you would never notice if you only tracked the wallet balance.
Worked example, step by step
User deposits ₦10,000 via card
The user's card is charged ₦10,000. The provider keeps ₦150 (1.5% fee) and owes you ₦9,850. You credit the user's wallet with only ₦9,900, keeping ₦100 as your platform fee. Watch what happens to all five accounts.
| Account | Debit | Credit |
|---|---|---|
| Provider Receivable (1100) | ₦9,850.00 | |
| Processing Fee Expense (5000) | ₦150.00 | |
| User Wallet (2000) | ₦9,900.00 | |
| Platform Fee Revenue (4000) | ₦100.00 |
Provider Receivable goes up by ₦9,850 (an asset, debit it). Processing Fee is an expense, debit it ₦150. User Wallet is what you owe the user, that's a liability, credit it ₦9,900. Your platform fee is income, credit it ₦100. Total debits ₦10,000, total credits ₦10,000. Now look at your own P&L on this one swipe: ₦100 of revenue against ₦150 of cost. This deposit LOSES you ₦50, and that is correct, not a bug. Your 1% platform fee simply does not cover the provider's 1.5% fee.
Takeaway
A fee is not 'subtracted from the user', it is its own movement, with its own income or expense account. The user's wallet (a liability you owe them) is one number; your revenue is another; your costs are another. Five accounts can move from one card swipe. And notice the business runs this deposit at a loss: ₦100 earned, ₦150 spent. That is deliberate, not broken. Many fintechs treat deposits as a loss leader to win users, then earn it back on float income (lesson 31) and card interchange (lesson 26). The ledger does not care whether you profit; it records the truth either way.
Practice this on a real ledger
Reading is half of it. Open this lesson in the lab to post the entries yourself against a real Postgres-backed double-entry ledger, with the validation on. Free, your sandbox is yours.