← Analysis / Análisis
UNCTAD · Easy Accounts · Uganda analysis · counterpart accounts

The user never picks the other side of an entry: two plain questions decide it

Every entry needs a counterpart: a sale is revenue on one side and where the money went on the other. The user answers what they know: paid now or later? and how? The system turns that into the account. The admin configures it once in the chart. This ladder already exists in the code; for Uganda it needs mobile money and a few movement types that are neither income nor expense.

How the counterpart is chosen

“Sold for 118,000” sale, VAT included 1 · Paid later (on credit)?yes → Receivables / Payables 2 · How was it paid?cash · bank · mobile money 3 · The user’s usual oneremembered per account 4 · Only one allowed pairset by the admin in the chart 5 · Ask once, then remember first match wins The entry the system writes (paid by mobile money) AccountDebitCredit 1150 Mobile money118,000 4100 Sales of goods100,000 2200 VAT to pay18,000 Balanced: 118,000 = 100,000 + 18,000 Sales from the user’s choice · VAT from the chart’s role · mobile money from step 2

Examples

What the user saysDebitCreditDecided by
Sold goods, cashCashSalesStep 2: payment method
Sold goods, pays next monthReceivablesSalesStep 1: on credit
Paid rent by bankRentBankStep 2
Bought stock from a supplier, to pay laterGoods boughtPayablesStep 1
Customer pays what they owedMobile moneyReceivables“Mark as paid” on the original sale
Monthly questionnaire: “March sales 3,000,000”Cash (usual one)SalesStep 3, else asked once

Who configures what

Admin, once per chartThe special accounts (roles): receivables, payables, VAT to pay and to recover, withholding, opening balances, grants. The allowed pairs between accounts, with checks that block odd combinations.
User, onceTheir payment methods (cash, a bank, MTN or Airtel mobile money), each linked to an account. Their usual account per type of income or expense, remembered the first time they answer.
System, every timeSplits VAT and withholding to their accounts, checks that debit equals credit, and refuses an entry that does not balance.

What is built and what Uganda needs

PieceStatus
The five-step ladderbuilt resolveCounterpart, used by daily entry and the monthly questionnaire
Chart roles (receivables, payables, VAT, withholding…)built One setting per chart; the default chart has them
Allowed pairs, suggested by AI and checkedbuilt Admin import with blockers (self-pair, duplicate) and warnings (unusual type pair)
Mobile money as an accountadd Not in the default chart. In Uganda it is how most small businesses get paid: add “Mobile money” under cash, and MTN / Airtel as payment methods
Movements that are not income or expensemissing Daily entry only knows income and expense. Needed for a real balance sheet: cash ↔ bank transfer, loan received or repaid, owner puts money in or takes it out, buying equipment
Monthly questionnaire defaultdecide For micro businesses pre-set “Cash” as the usual account, so the questionnaire never asks

Read from Accounting-Next main @ 69b3aa41: src/lib/ledger/resolve-counterpart.ts, CounterpartPair, UserSettlementDefault, PaymentMethod, prisma/seed-data/default-chart.json.

Nelson Pérez · nelson.perez@unctad.orgWorking note · 24 Sep 2026