How NGOs Can Track Donor Funds Properly
A practical system for tracking restricted funds from grant agreement to donor report — fund segregation, budget lines, burn rates, and the audit trail that keeps donors funding you.
Donor confidence is an NGO's real currency. Programs get refunded when reports are accurate, on time, and boring — no surprises, no unexplained variances, no co-mingled funds. Yet most fund-tracking problems are not caused by dishonesty; they are caused by structure. Money arrives into one bank account, gets spent from one cashbook, and someone reconstructs "which donor paid for this" at report time.
This guide lays out the structure that makes donor fund tracking automatic instead of forensic.
The core principle: tag money at entry, not at reporting
Every fund-tracking failure traces back to the same root: transactions recorded without their grant identity, then classified weeks later from memory, receipts, and WhatsApp threads. The fix is procedural — every transaction (expense, advance, purchase order, payroll allocation) must carry three tags the moment it is created:
- The donor/grant it is funded by (e.g. "EU Resilience Grant 2026").
- The budget line within that grant (e.g. "2.3 Community trainings — venue costs").
- The restriction status — restricted program funds vs unrestricted core funds.
When tagging happens at entry, a donor report is a filter, not a project. When it happens at reporting time, every report is an archaeology dig.
Restricted vs unrestricted: keep the wall visible
Restricted funds may only be spent on what the grant agreement specifies. Unrestricted funds (membership fees, local fundraising, some core grants) keep the lights on. The two must never blur, because "we borrowed program money for rent and returned it" is a finding, even with good intentions.
The overspend trap
The most common co-mingling isn't theft — it's a budget line that ran out. Fuel under Grant A is exhausted, the vehicle still needs to move, so fuel quietly books to Grant B. Three months later neither grant's report reconciles. A system that shows line-level burn rates before spending prevents this; a cashbook only reveals it after.
What to track per grant
| What | Why donors ask for it | Where it usually breaks |
|---|---|---|
| Budget vs actual per line | Proves spending followed the approved budget | Actuals classified at report time, not entry time |
| Burn rate vs time elapsed | Flags under/over-spending while it is still fixable | Nobody sees it until the mid-term report |
| Procurement trail per purchase | Proves value for money on program purchases | Quotes and approvals live in email, not with the transaction |
| Advances and liquidations | Field advances are the #1 audit finding | Advances issued via mobile money with no liquidation deadline |
| Asset register per grant | Donor-funded equipment must be handed over or accounted for | Assets recorded in a separate file that never meets the ledger |
| Exchange gains/losses | Grants in USD/EUR spent in KES create differences | Rates applied inconsistently across the grant period |
Field advances: where fund tracking goes to die
Program officers receive advances — often via M-Pesa — spend them across activities, and liquidate with a mix of receipts and explanations. Uncontrolled, this creates a growing pool of "money in the field" that belongs to no budget line. The discipline that works:
Advance rules that survive audits
- Every advance is tagged to a grant and activity before it is paid.
- No second advance while one is unliquidated.
- Liquidation deadline (e.g. 7 days after the activity) is enforced by the system, not by reminders.
- Receipts are captured by phone at the point of spending — mobile workflows beat shoebox receipts.
- Unspent balances are returned and receipted, not rolled into the next activity.
The monthly rhythm that keeps you audit-ready
- Weekly: review new transactions with missing grant/line tags — the number should be zero.
- Monthly: produce budget-vs-actual per active grant; investigate any line above 90% with time remaining.
- Monthly: age all open advances; anything past its liquidation deadline goes to management.
- Quarterly: reconcile the donor-funded asset register against physical checks.
- Per report: the donor report should come from the system's numbers directly — if you are adjusting figures in Excel afterwards, the system is not the source of truth yet.
For the procurement side of donor compliance — committees, quotations, and documentation — see our companion guide on procurement challenges in NGOs. If you are still choosing a system, start with what to look for in an NGO ERP, or see how this structure works in practice in AWRA's donor fund tracking software.
Track every grant to the shilling
AWRA OpsHub tags spending, procurement, advances, and assets by grant and budget line at entry — so donor reports become exports, not projects.
Talk to us about donor fund trackingFrequently asked questions
Can we track donor funds properly in QuickBooks or Excel?
Up to a point — classes in QuickBooks or disciplined spreadsheet structures can represent grants. The gaps appear where accounting tools stop: procurement approvals, quotation trails, field advances, and asset custody are not ledger entries, and that is where audit findings come from.
What is a burn rate and why do donors care?
Burn rate compares money spent against time elapsed in the grant period. If 70% of the timeline has passed but only 30% of funds are spent, the program is behind and the donor may claw back funds; the reverse means you will run out early. Tracking it monthly per budget line lets you request realignments while there is still time.
How should we handle a grant received in USD but spent in KES?
Record the grant at the receipt-date rate, book expenses in KES as incurred, and let the system report the exchange difference explicitly. The mistake to avoid is re-translating expenses at different rates per report — pick a policy the donor accepts and apply it consistently.
What if a donor requires a separate bank account per grant?
Comply — but a separate account alone does not give line-level tracking. You still need every payment out of that account tagged to a budget line, or you will have clean banking and unreconcilable reports.