Ledger Operations
Double-entry ledger - every value movement is a balanced journal entry - Rwanda (RWF)
Samuel Nsengimana - Ledger Operator
2 entries awaiting checker
Ledger invariant: entries are immutable and always balanced (sum of debits equals sum of credits). Nothing here is ever edited. A mistake is corrected only by posting a new compensating entry, and eMoney issuance and liquidation require a checker distinct from the maker.
Entries posted today
18,442
100% balanced
Open suspense items
3
1 over 24h
Suspense balance
RWF 64,500
target: clear to 0
eMoney float in issue
RWF 1.284B
control vs current reconciled
| Entry | Posted | Type | Account leg | Debit | Credit | Balance before | Balance after | Check |
|---|---|---|---|---|---|---|---|---|
| JE-99341 | 11:42:07 | P2P transfer | Customer current W-1102 Dr 2010 - Current |
25,000 | - | 210,000 | 185,000 | Balanced |
| Customer current W-2231 Cr 2010 - Current |
- | 25,000 | 48,000 | 73,000 | ||||
| JE-99340 | 11:38:51 | Escrow capture | Customer current W-1102 Dr 2010 - Current |
189,000 | - | 399,000 | 210,000 | Balanced |
| Escrow holding - orders Cr 2400 - Escrow |
- | 189,000 | 14,204,000 | 14,393,000 | ||||
| JE-99338 | 11:30:12 | CICO cash-in | Agent float SB-4471 Dr 2600 - Holding |
60,000 | - | 1,240,000 | 1,180,000 | Balanced |
| Customer current W-3390 Cr 2010 - Current |
- | 60,000 | 12,500 | 72,500 | ||||
| JE-99335 | 11:22:44 | Commission accrual | Escrow holding - orders Dr 2400 - Escrow |
15,120 | - | 14,219,120 | 14,204,000 | Balanced |
| Commission income Cr 4100 - Commission |
- | 15,120 | 2,411,880 | 2,427,000 |
Suspense and clearing queue
3 open| Item | Source | Amount | Age | Action |
|---|---|---|---|---|
| SUS-3312 Unmatched MTN callback |
Collections | RWF 40,000 | 31h | Resolve |
| SUS-3309 Partial reversal residue |
Wallet | RWF 18,500 | 9h | Resolve |
| SUS-3307 Airtel timeout, funds parked |
Collections | RWF 6,000 | 2h | Resolve |
Rule: a suspense item is resolved only by a compensating entry that clears it to zero. An item cannot be closed while a residual balance remains (WAL-2003).
Compensating entry
Corrections onlyReference the original entry. This posts a new, balanced, immutable reversal or adjustment. The original entry is never edited or deleted.
RWF
Debits must equal credits. Suspense must clear to exactly 0.Maker-checker: you post as maker; a distinct checker approves before the entry becomes final and the suspense item closes.
Issuance awaiting checker
SubmittedISS-7741 - from statement entry STMT-2290 - maker Samuel Nsengimana - 20 Jul 11:02
| Leg | Account | Amount |
|---|---|---|
| Dr | Control - eMoney in issue 1900 - Control | RWF 5,000,000 |
| Cr | Customer current W-8801 2010 - Current | RWF 5,000,000 |
Bank evidence: matched to a deposit statement entry at Bank of Kigali trust account. Confirming posts Dr control, Cr current and creates float.
Segregation of duties: Samuel raised this issuance, so it must be confirmed by a different operator.
Liquidation (two-leg)
Removes float and pays out to a service-provider deposit account captured at Tier 3. Original leg posts Dr current, Cr holding; the derivative leg settles to the bank and can be retried.
RWF
| Leg | Account | Amount |
|---|---|---|
| Dr | Customer current W-1102 2010 - Current | RWF 120,000 |
| Cr | Holding - liquidation 2600 - Holding | RWF 120,000 |
Recent issuance and liquidation activity
maker-checker trail| Reference | Kind | Amount | Maker | Checker | State | Posted entry |
|---|---|---|---|---|---|---|
| ISS-7741 | Issuance | RWF 5,000,000 | Samuel Nsengimana | awaiting | Submitted | - |
| ISS-7738 | Issuance | RWF 2,500,000 | Samuel Nsengimana | Patrick Habimana | Confirmed | JE-99201 |
| LIQ-4402 | Liquidation | RWF 120,000 | Samuel Nsengimana | Patrick Habimana | Derivative leg retrying | JE-99180 |
| ISS-7730 | Issuance | RWF 1,000,000 | Grace Umutoni | Samuel Nsengimana | Rejected | no float |
Ledger Operations
Why there is no edit button on this screen
A journal entry cannot be edited, by anyone, ever. Not by an operator, not by an administrator, not by an engineer with database access, because the entry is part of a hash chain and editing it would break every hash after it. A mistake is corrected by posting a new balanced entry that reverses it.
| Entry | JE-99310 |
| Posted | 19 July 2026, 09:04:11.882 |
| Type | Marketplace escrow capture |
| Debits | RWF 220,700 |
| Credits | RWF 220,700 |
| Balanced | Yes, invariant held |
| Hash | sha256:7f2a...c41b |
| Previous hash | sha256:1e88...90d2 |
| Editable | No. There is no code path that mutates a posted entry. |
| If the entry is wrong | What you do | What the ledger ends up with |
|---|---|---|
| Wrong amount | Post a compensating entry for the difference | Three entries: the original, the correction, and both visible |
| Wrong account | Post a full reversal, then post it correctly | Three entries, net effect correct, the mistake still visible |
| Duplicate | Reverse the later one and record why the first stands | Two entries, one reversed, both visible |
| Genuinely unexplained | Park it in suspense and investigate | The entry plus a suspense posting, cleared when you find the answer |
This is why an audit can be trusted. A ledger where a wrong number can be quietly fixed is a ledger where any number might have been.
Ledger Operations
This correction does not balance, so it cannot be submitted
Debits RWF 84,200, credits RWF 74,200. Out by RWF 10,000. Submit is blocked here rather than at the checker, because a checker should never be asked to look at something that cannot post. The balanced-postings invariant is enforced before the entry exists, not after.
| Account | Class | Debit | Credit |
|---|---|---|---|
| 3100 Agent float, Agent 4471 | Asset | 84,200 | |
| 2100 eMoney liability | Liability | 74,200 | |
| Total | 84,200 | 74,200 | |
| Difference | 10,000 |
The likely cause. A RWF 10,000 leg is missing, probably the fee account. Add the missing line and the invariant holds; do not adjust one side to make the numbers meet, because that hides the real error.
Ledger Operations
Your correction is with a checker
Nothing has posted. A correction and an eMoney issuance both need a second operator, because both change what the trust account has to back. Until a checker confirms, this is a draft with a reason attached.
| Draft reference | JE-DRAFT-2026-0221 |
| Type | Compensating entry, agent float correction |
| Amount | RWF 84,200 both sides |
| Maker | j.mukama, today 10:12 |
| Reason given | Agent 4471 float short after a provider timeout on 18 July |
| Waiting on | Any operator with the finance checker role |
| Notified | 3 finance checkers |
| If nobody confirms | It stays a draft. Nothing expires into being posted. |
| Step | Who | When | State |
|---|---|---|---|
| Drafted and balanced | j.mukama | Today 10:12 | Done |
| Reason recorded | j.mukama | Today 10:12 | Done |
| Checker confirms | Any finance checker | Pending | Waiting |
| Posted to the ledger and hashed | The platform | After confirmation | Not yet |