
receipts
Your AI coding agent just billed you. Here's the receipt. Cost receipts for Claude Code, Codex, Cursor, Gemini & opencode — no account, no upload.
Install with your AI
Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.
Install and set up receipts (git-clone project) into my current project. Found on https://claudeers.com/receipts Repo: https://github.com/anandgupta42/receipts Homepage/docs: https://anandgupta42.github.io/receipts/ Detected install method: git-clone → git clone https://github.com/anandgupta42/receipts Category: devtools. Platforms: cli, api. Read the repo's README for exact setup and env vars, then install it and wire it into my project. Claudeers Health Verdict: unknown; community-verified: false. Confirm the source before running anything.
git clone https://github.com/anandgupta42/receipts
Your AI coding agent just billed you. Here's the receipt.
not a mockup — a real receipt on a merged PR of this repo: three sessions, $3.13. Read it live.
The meter runs while the agent drives · the receipt prints when the ride ends · and sticks with the PR
Why this exists. Your AI coding agent spends real money invisibly — you see the diff, never the bill. aireceipts is the bill: live in your status bar while the agent works, itemized when the session ends, attached to the PR. Local and deterministic — transcripts never leave your machine, and a shared receipt carries figures, never code (how).
Start here — the meter, the receipt, the PR
Try it in ten seconds: npx aireceipts-cli — no install, no account (--demo shows a bundled example if you have no sessions yet). Then let it run like a cab ride:
1 · While the agent works — the meter. One settings line (setup)
pins aireceipts statusline under Claude Code's input box — and tmux, starship, or
PowerShell give Codex and OpenCode the same bar — ticking up as the session runs:

The line, segment by segment:
[aireceipts] Opus · $4.20 · $9/hr · 128k · ctx 42% · 5h 24% ↺2h13m
│ │ │ │ │ └ how much of your 5-hour cap is gone · when it resets
│ │ │ │ └ how full the context window is
│ │ │ └ how many tokens the session has used
│ │ └ what you're paying the AI per hour
│ └ cost so far — cited prices, subagents included
└ which model is billing you right now
When money is being wasted — a stuck retry loop, say — a flag appears right on the line.
2 · When the session ends — the receipt. npx aireceipts-cli prints the itemized
receipt — every tool priced, waste flagged (loops, context thrash, trivial spans),
the cheaper-model line as arithmetic, not a prediction. The exact bytes:
- - - - - - - - - - - - - - - - - - - - - - - - -
AIRECEIPTS
“Add email format validation to the signup for…”
Claude Code · Jun 18 2026 09:30:30 UTC · 10m 30s
claude-opus-4-8 87% · claude-sonnet-5 13%
cache served 85% of input tokens
pre-edit: 11% of cost (1/10 turns)
(share before the first named edit tool)
Bash..............................$0.05 (3 calls)
Edit..............................$0.05 (2 calls)
(thinking/reply)..................$0.03 (2 turns)
Write.............................$0.03 (2 calls)
Read...............................$0.02 (1 call)
--------------------------------------------------
TOTAL........................................$0.18
same tokens on claude-haiku-4-5...$0.04 (78% less)
(arithmetic, not a prediction)
- - - - - - - - - - - - - - - - - - - - - - - - -
npx aireceipts-cli
github.com/anandgupta42/receipts
- - - - - - - - - - - - - - - - - - - - - - - - -
The final line identifies the open-source project that generated the receipt; the line above it is the install command. PR comments and their HTML artifacts make the same source-and-install destination clickable.
pre-edit is the share of cost spent before the first edit-tool call (reading a receipt).
3 · When the PR ships — the receipt sticks with it. npx aireceipts-cli pr --post
attaches the cost of the sessions behind a PR as a comment. Generation stays local; a
drop-in CI check can require every PR to
carry one — a real one, live:
PR #189.
What it tells you
- Which model is billing you, and what the session costs so far — on every prompt, before the session is over, with your 5-hour cap countdown next to it.
- Where the money went — every tool priced, waste flagged as it happens: stuck loops, context thrash, trivial turns a cheaper model could have taken.
- What a PR cost — attributed across the sessions that built it, with same-tokens-on-a-cheaper-model arithmetic.
Supported agents
| Agent | Depth |
|---|---|
| Claude Code | Full: per-turn models, tools, cache tiers |
| Codex CLI | Full per-turn parsing |
| Gemini CLI | Full: per-turn models, tools, cache tokens |
| OpenCode | Full: per-message models, tools, cache read/write; unknown models stay tokens-only |
| Cursor | Honest degraded mode: session totals only (its logs carry no per-turn usage) |
Model prices move. A daily advisory tripwire cross-checks data/prices/ against an
independent dataset and opens an issue when they disagree; every table change lands
as a cited price-table PR.
Install — or let your agent do it
npm i -g aireceipts-cli
No account, no API key. The command is then aireceipts; or skip the install
and prefix any command as npx aireceipts-cli. Full walkthrough:
getting started.
Easiest: let your agent do it
You already have an AI coding agent. In Claude Code, Codex, or any agent with shell access, paste:
Read https://raw.githubusercontent.com/anandgupta42/receipts/main/README.md
and follow the "Instructions for agents" section: install aireceipts globally
and set up the Claude Code statusline.
The agent handles the npm install and the settings edit, and shows you a receipt when it's done.
Instructions for agents
If you are an AI agent asked to install aireceipts, do the following:
-
Install the CLI globally. Run
npm install -g aireceipts-cli, then confirm withaireceipts --version. If global installs are not permitted on this machine, fall back tonpx aireceipts-cliin the steps below and tell the user why. -
Set up the Claude Code statusline (skip if Claude Code is not installed, and say so). Add a
statusLineentry to~/.claude/settings.json:{ "statusLine": { "type": "command", "command": "aireceipts statusline" } }Merge into the existing JSON; do not overwrite other settings. If a
statusLineentry already exists, show it to the user and ask before replacing it. Ifaireceiptsis not on thePATHthat GUI-launched apps see, use the absolute path fromwhich aireceiptsas thecommandvalue. -
Verify. Run
aireceiptsto print a receipt for the newest session (aireceipts --demoif the user has none yet) andaireceipts setupfor detected agents. The statusline appears on the next Claude Code prompt. -
Show the user the result. Print the receipt and tell them the statusline is active. Optional next steps:
aireceipts install-hook(consent-gated end-of-session mini-receipt) andaireceipts integrations(snippets for Codex, OpenCode, Cursor, and GitHub PR receipts).
Everything else it does
| Command | What it does |
|---|---|
aireceipts | Receipt for the newest session (--list to pick another) |
aireceipts --mini | Six-line mini-receipt for the newest session |
aireceipts --details | Adds a DETAILS section — token composition, session shape, per-model split (classic template) |
aireceipts --template <name> / templates | Render a receipt style (classic, grocery, datavis); templates previews each — guide |
aireceipts setup | Found sessions, latest cost, week total, and the integrations that fit your machine — guide |
aireceipts pr --post [--artifact] | Attach the receipt of the sessions behind a PR as a comment; --artifact also publishes a durable receipt page — guide |
aireceipts compare <a> <b> | Two sessions side by side — models, tools, waste, ratio — guide |
aireceipts week | Trailing-7-day digest: totals, per-agent split, top waste — guide |
aireceipts backfill [--out <dir>] | Bulk receipts across your existing session history; summary by default, one file per session with --out — guide |
aireceipts integrations [target] | Exact local snippets for Claude Code, Codex, OpenCode, Cursor, and GitHub — guide |
aireceipts --handoff | Paste-ready block that tells your agent what to do cheaper next time — guide |
aireceipts install-hook | Consent-gated Claude Code hook: every session ends with a mini-receipt — guide |
aireceipts statusline | Live cost line in Claude Code's status bar, or any terminal via --cwd (tmux/starship/pwsh) — setup |
aireceipts --quota / --check-budget | Claude Code rate-limit window, read from the statusline stdin payload (silent otherwise); --check-budget exits 1 when your local budget cap is exceeded |
aireceipts --json / --csv / --svg / --png | Versioned schema, RFC 4180 rows, shareable SVG/PNG image — schema |
aireceipts stats | Local usage counters — receipts generated on this machine |
The honesty rules
Every price is cited (vendor URL, date observed, a quoted excerpt — checked by CI). Every
receipt is deterministic: same transcript in, byte-identical receipt out, golden-tested on
every commit — including the receipts shown on this page. No model without a cited price
row ever shows a dollar figure — tokens-only instead of a guess. Comparisons re-price the identical tokens; they never predict. What a
receipt proves, and what it can't: docs/trust.md · aireceipts --methodology.
Telemetry
Anonymous diagnostics and usage signals, on by default (in CI too) — error classes,
duration buckets, parse-failure signatures, feature enums, and coarse buckets. Never
code, prompts, paths, titles, or dollar amounts. See exactly what a run would send:
aireceipts --telemetry-show. Kill it: AIRECEIPTS_TELEMETRY=off or
DO_NOT_TRACK=1. Schema and rationale: docs/telemetry.md.
Docs
User guide — get started, every command, pricing, troubleshooting (hosted docs · site). Also: FAQ · What a receipt proves · PR receipts · JSON schema · statusline.
Versioning & contributing
Pre-1.0 (0.x): minor versions may change behavior or output, patch versions
are fixes only. The receipt's byte-stability contract is the compatibility surface — a
change that breaks it is a major bump (changelog ·
releases). aireceipts is designed
and largely built by AI agents under a spec-driven harness — adversarially validated
specs, mutation-tested money paths, byte-golden outputs, and PRs that carry the receipt
of the session that built them (how and why). Human PRs are
welcome and run the same gates: CONTRIBUTING.md.
License
Apache-2.0.
Buy me a samosa
Every open-source project asks you to buy the maintainer a coffee. Not this one — buy me a samosa, and I'll explain.
// compatibility
| Platforms | cli, api |
|---|---|
| Operating systems | — |
| AI compatibility | claude |
| License | Apache-2.0 |
| Pricing | open-source |
| Language | TypeScript |
// faq
What is receipts?
Your AI coding agent just billed you. Here's the receipt. Cost receipts for Claude Code, Codex, Cursor, Gemini & opencode — no account, no upload.. It is open-source on GitHub.
Is receipts free to use?
receipts is open-source under the Apache-2.0 license, so it is free to use.
What category does receipts belong to?
receipts is listed under devtools in the Claudeers registry of Claude-compatible tools.
// embed badge
[](https://claudeers.com/receipts)
// retro hit counter
[](https://claudeers.com/receipts)
// reviews
// guestbook
// related in Developer Tools
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Curs…
Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA
AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs,…
🙌 OpenHands: AI-Driven Development