Credit is the most accounting-dense financial product that exists. Every installment generates interest on an accrual basis, amortization, occasional lateness, provisioning, and — when it comes to it — a write-off. All of it has to reconcile against the funding statement and the regulatory balance sheet. Without a ledger, closing the month inside the month is impossible.
The problem
Most BNPL platforms start by computing interest on demand: “when the customer pays, I’ll see how much it is.” That breaks at two moments. First, at month-end — interest revenue must be recognized on accrual, not cash basis. Second, at provisioning — expected loss has to be estimated and booked every day, not on the day of default.
Chart of accounts
| Account | Kind | Meaning |
|---|---|---|
loan:<id>:principal | Asset | Outstanding principal |
loan:<id>:interest:accrued | Asset | Accrued interest receivable |
loan:<id>:fees:accrued | Asset | Fees receivable |
ops:funding:equity | Liability | Equity funding |
ops:funding:fidc | Liability | Securitization funding (FIDC) |
ops:revenue:interest | Revenue | Interest revenue recognized |
ops:loss:provision | Expense | Loss provisioning |
ops:allowance:loss | Contra-asset | Loss allowance (offsets principal) |
Disbursing a loan
A R$ 1,000.00 loan over 10 installments at 3% monthly. On disbursement day, two entries:
| Account | Debit | Credit |
|---|---|---|
| loan:l_77:principal | 1000.00 | — |
| ops:pool:pix | — | 1000.00 |
| Totals | 1,000 | 1,000 |
Daily interest accrual
Every day, a job runs over every active loan and books interest on an accrual basis — even if the customer hasn’t paid yet. That is what lets you close the month on day 1: by day 30, revenue has already been recognized day by day.
| Account | Debit | Credit |
|---|---|---|
| loan:l_77:interest:accrued | 1.00 | — |
| ops:revenue:interest | — | 1.00 |
| Totals | 1 | 1 |
The value is simplified for the example. In production, the calculation uses the contract’s exact convention (business-day pro-rata, 360-day base, etc.), but the posting pattern is always the same: debit interest:accrued, credit revenue:interest. When the customer pays the following month, the receipt debits pool:pix and credits interest:accrued — no revenue is recognized twice.
Installment receipt
| Account | Debit | Credit |
|---|---|---|
| ops:pool:pix | 117.22 | — |
| loan:l_77:principal | — | 87.22 |
| loan:l_77:interest:accrued | — | 30.00 |
| Totals | 117.22 | 117.22 |
Daily provisioning
Expected loss (PD × LGD × EAD) is computed per loan and booked every day as expense. If the risk model revises downward, the reversal also goes into the ledger — and the history shows, day by day, what the portfolio’s loss expectation was.
| Account | Debit | Credit |
|---|---|---|
| ops:loss:provision | 2.30 | — |
| ops:allowance:loss | — | 2.30 |
| Totals | 2.3 | 2.3 |
Write-off
When a loan is deemed lost (typically after 180+ days overdue), two things happen in one transaction: principal is written off against the already-provisioned allowance, and the case enters collections. If part is recovered later, it becomes “recovery” revenue — it does not reverse the write-off.
Invariants
| Invariant | Why |
|---|---|
| Σ active principal = portfolio balance | Balance sheet matches the management report |
Σ interest:accrued = interest receivable | Accrual is never lost |
allowance:loss ≤ Σ principal | Provisioning never exceeds the asset |
Every payment references loan_id + installment | Traceability for collections and audit |
Every credit fintech that works out eventually turns into an asset manager. The ledger is the fund’s thesis.
FAQ
How do I handle renegotiations?
A renegotiation is a new transaction that extinguishes current balances and creates a new loan. The original loan’s history remains; the new one carries a renegotiated_from_loan_id. Audit can rebuild the chain.
What about securitization (FIDC) / portfolio assignment?
A cession moves principal + accrued interest from ops:funding:equity to ops:funding:fidc, recognizing the discount on the appropriate expense account. Nothing on the customer’s side changes.
Revenue over time or on payment?
Brazilian rule (and IFRS 9): accrual basis. Interest is revenue on the day it accrues, not on the day it hits cash. The ledger enforces this by construction.
When you need this
- 1 You lend your own money or a fund'sA balance sheet with a credit asset has to be defensible.
- 2 You have more than 10,000 active loansThat's exactly where spreadsheets stop scaling.
- 3 You need to close the month within two business daysWithout daily accrual, impossible.
- 4 You'll issue a securitization or sell part of the portfolioAuditors want entry-level history — or they don't sign.
A ledger that’s actually yours.
entrytarget.com →