A public accounting book that anyone can open. Not a charity website,
not a government portal, not an opinion blog — just the evidence, and the honest gaps.
What is this?
The Afghan Aid Ledger keeps track of international aid to Afghanistan — money
promised, money actually paid, who handled it, where it went, and where the paper
trail simply stops. Every number on the site links back to an official source you can
check yourself.
Why was it created?
Since the Taliban took over in August 2021, the international community has
reported billions of dollars in aid for Afghans. Three uncomfortable
questions kept coming up with no good answer:
- How much actually reached ordinary Afghans — and how much
stopped somewhere along the way?
- How much ended up benefiting the Taliban — through taxes,
fees, forced payments, or interference?
- How much was absorbed by the aid system itself — consultants,
headquarters, security, travel — and is that cost ever disclosed?
The honest answer to all three is: nobody fully knows, because
the institutions involved don't publish enough data. That is exactly what this
ledger makes visible. Where the data exists, we show it. Where it doesn't, we show
the hole — because “we are not allowed to know” is itself a finding worth publishing.
Who is it for?
| You are… | The ledger helps you… |
| An Afghan citizen or in the diaspora | see what was funded in your name, where, by whom — and ask why your province got less |
| A journalist | trace a claim to original documents, download the data, embed a verified chart in your article |
| A researcher or student | get clean, cited, machine-readable data instead of scraping PDFs |
| A donor official or parliamentarian | see which channels disclose their spending and which do not |
| An aid organization | check how your disclosure compares to peers — and improve your score by publishing better data |
| An auditor or investigator | start from documented, hash-preserved evidence with clear scope limits |
The rules that make it trustworthy
- Never mix money stages. A pledge (promise), a
commitment (signed deal), a payment, and a transfer down the
chain can all describe the same dollars. Adding them together
produces an impressive, meaningless number. Every figure on the site says which
stage it is.
- Confirmed minimums, never guesses. The “money to the Taliban”
figure only counts events proven by published audits. We never extrapolate — the
headline says “at least this much, documented”, not “probably this
much”.
- Missing data is a finding, not a zero. If an agency doesn't
reveal where money went next, we don't pretend it was delivered — we count it as
undisclosed and say so.
- No accusations without evidence. Organizations are ranked by
how much they disclose, never by rumor. Anyone named has a right of
reply before publication.
A tour of the website
The page reads top to bottom like a document of record, in twelve numbered sections:
- I. The Account
- The headline numbers: promised vs actually paid, year by
year, plus the funding-gap bars — in 2021 the humanitarian plan was ~96% funded;
in 2026 it is ~21%. Year buttons filter everything.
- II. Who Gives
- Donors ranked by what they actually paid (not what they announced).
- III. Who Receives & Passes On
- The first stop for the money — and how
much each recipient reports passing onward. The difference is usually
undisclosed, and we label it exactly that.
- IV. The Money Trail
- Type any organization's name and see money flowing in
and out. Example: Afghanistan Humanitarian Fund — $808M in, $476M reported
onward, every counterparty listed.
- V. Disclosure Scorecards
- Each major recipient scored 0–100 on five
published criteria. Low score ≠ corruption. Low score = we can't see.
- VI. What Reaches the Taliban
- The register of documented benefit: the
US$10.9M minimum confirmed by the US inspector-general (SIGAR), documented
interference, and what remains unresolved — each entry links to the audit itself.
- VII. The Cost of Delivery
- Currently an honest empty box: no agency
publishes programme-level costs in usable form. The empty box is the finding.
- VIII. Where It Goes, By Sector
- Food, health, education… including the
embarrassingly large “(not reported)” category.
- IX. Geographic Equity
- People in need vs aid organizations present,
province by province.
- X. Requests for Accountability
- Specific questions to specific
institutions, each grounded in a finding, with deadlines and response status.
“Prepared” means drafted and not yet sent — this tracker never claims
correspondence that didn't happen.
- XI. Sources & Freshness
- Where every number comes from and when we
last checked. “Real time” honestly means “as current as the source allows”.
- XII. Reuse This Data
- Embeddable charts, CSV downloads, a free open API,
and an RSS feed of changes.
How to work with it — three everyday workflows
If you just want answers (no technical skills needed)
- Open the site. Read section I for the big picture.
- Curious about one organization? Type its name in section IV.
- Want your article or post to carry a chart? Section XII → copy the iframe →
paste into your CMS. The chart stays live and cites its source automatically.
- Want updates? Subscribe to the RSS feed (section XII).
If you are a journalist or researcher
- Download the dataset you need from section XII (CSV opens in Excel).
- Every row keeps the original FTS flow ID — click through to the UN's own record.
- Quote the scorecards or the traceability figure; the criteria are published,
so your fact-checkers can reproduce the number.
- Found an error? Every correction is logged publicly — nothing is silently edited.
If you operate the ledger (the team)
- Refresh the data: run
python -m app.ingest_fts
(money flows) and python -m app.ingest_hdx (needs & presence).
Each run saves raw snapshots so every number stays reproducible.
- Send an accountability request: send the prepared request from
section X through an official channel, then update its status to
sent
with a deadline. When the deadline passes: answered,
refused, or no_response_by_deadline — all public.
- Add evidence: new audits are entered as cited events with scope
limits — never as extrapolations.
- Never bypass the review rules: nothing naming an organization
goes public without evidence and right of reply.
What the data already reveals
- The money is drying up. Humanitarian plan funding fell from 96%
covered (2021) to 21% (2026 so far) — a gap of about $1.4 billion this year.
- The paper trail stops at the first stop. Less than 1% of paid
contributions have an officially linked onward transfer. After the money reaches a
UN agency or large NGO, the public record effectively goes dark.
- Hundreds of millions are anonymous. Large sums are reported only
as going to “UN Agencies (Confidential)” or “International NGOs (Confidential)” —
with zero onward reporting.
- A large share of aid has no declared purpose. “(not reported)”
competes with food and health among the biggest sector categories.
- Taliban benefit is documented but understated. US$10.9M in taxes
and fees is the confirmed minimum from one audit sample — the auditors
themselves say the real figure is higher because UN subrecipients never reported
their payments.
Each of these has a matching accountability request in section X of the ledger.
What we deliberately did NOT build
- A single big “total aid” number (it would be double-counted and wrong).
- An estimate of “how much the Taliban really got” (unprovable; we publish the
documented minimum and name the unresolved exposure separately).
- Invented “overhead percentages” (no reliable data exists yet — showing the
absence is more honest and more damning).
- Corruption rankings or an accusation wall (evidence rules protect both Afghans
and the project's credibility).
- Anonymous tip submission (dangerous to sources unless run professionally —
planned only with proper security review).
What's next
- Connect the IATI database (donor activity reports) to extend the money trail
below the first recipient.
- Automatic daily refresh with change alerts in the RSS feed.
- Actually send the prepared accountability requests and track responses publicly.
- Pashto and Dari versions — the interface is ready for
right-to-left text; translations await human review.
- Extract cost data from audit PDFs (with human review) to finally fill section VII.
Technical appendix (for developers)
- Stack: Python/FastAPI + SQLite, zero-dependency HTML/JS
frontend, no build step.
- Data: OCHA FTS API (~5,600 flows, 2021–2026, with parent-child
links), OCHA HPC plans, HDX HAPI (needs & presence, 34 provinces), SIGAR
audits (cited evidence).
- Provenance: every API response is stored as a raw snapshot with
a SHA-256 hash; every derived figure carries its methodology version.
- Run it:
pip install -r requirements.txt →
python -m uvicorn app.main:app → open
http://127.0.0.1:8000. Data ingests automatically on first start.
- API: 15 read-only JSON endpoints, 9 CSV datasets, RSS feed,
5 embed widgets — see /docs for the interactive reference.