Bring receipts from your Claude Code sessions
# Add to your Claude Code skills
git clone https://github.com/chrishutchinson/claude-receiptsGuides for using ai agents skills like claude-receipts.
Last scanned: 5/14/2026
{
"issues": [
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: Zero-step sequence causes process hang and memory exhaustion",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "geoip-lite: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "ip-address: ip-address has XSS in Address6 HTML-emitting methods",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "lodash: lodash vulnerable to Code Injection via `_.template` imports key names",
"severity": "high"
},
{
"type": "npm-audit",
"message": "minimatch: minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"severity": "high"
}
],
"status": "WARNING",
"scannedAt": "2026-05-14T06:46:25.721Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}claude-receipts is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by chrishutchinson. Bring receipts from your Claude Code sessions. It has 620 GitHub stars.
claude-receipts returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/chrishutchinson/claude-receipts" and add it to your Claude Code skills directory (see the Installation section above).
claude-receipts is primarily written in TypeScript. It is open-source under chrishutchinson on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh claude-receipts against similar tools.
No comments yet. Be the first to share your thoughts!
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
A note from the author:
This has been one of my favourite creative side projects yet (and just in time for Opus 4.6).
I picked up a second hand receipt printer and hooked it up to Claude Code's
SessionEndhook. With someccusagewrangling, a receipt is printed, showing a breakdown of that session's spend by model, along with token counts.It's dumb, the receipts are beautiful, and I love it so much.
I hope you enjoy it too.



npx claude-receipts setup
This will:
SessionEnd hook in your global ~/.claude/settings.json~/.claude-receipts.config.jsonFrom now on, every time you exit a Claude Code session, your receipt will be generated and opened in your browser.
Generate a receipt for your most recent session:
npx claude-receipts generate
generateGenerate a receipt for a Claude Code session.
# Generate for most recent session
npx claude-receipts generate
# Generate HTML (saved to ~/.claude-receipts/projects/)
npx claude-receipts generate --output html
# Print to thermal printer
npx claude-receipts generate --output printer --printer usb
# Multiple outputs (HTML + printer)
npx claude-receipts generate --output html,printer
# Specific session by UUID prefix
npx claude-receipts generate --session 9356d5e2
# Override location
npx claude-receipts generate --location "Paris, France"
Options:
-s, --session <id> - Generate for a specific session ID or UUID prefix-o, --output <format> - Output format: "html", "console", or "printer" (supports multiple, comma-separated)-l, --location <text> - Override location detection-p, --printer <name> - Printer interface (e.g., "usb", "tcp://192.168.1.100")Output Formats:
html - Beautiful styled receipt saved to ~/.claude-receipts/projects/console - ASCII art display in terminalprinter - Send to thermal printer (requires Epson TM-T88V or compatible)setupConfigure automatic receipt generation.
# Run interactive setup
npx claude-receipts setup
# Uninstall the hook
npx claude-receipts setup --uninstall
This modifies ~/.claude/settings.json to add a SessionEnd hook that automatically generates receipts.
configManage your receipt configuration.
# Show current configuration
npx claude-receipts config --show
# Set a configuration value
npx claude-receipts config --set location="Kuala Lumpur, Malaysia"
npx claude-receipts config --set timezone="Asia/Kuala_Lumpur"
npx claude-receipts config --set printer=usb
# Reset to defaults
npx claude-receipts config --reset
Available settings:
location - Default location (string)timezone - Timezone for dates (string, e.g., "Asia/Macau")printer - Default printer interface (string, e.g., "usb" or "tcp://192.168.1.100")Configuration is stored at ~/.claude-receipts.config.json.
Default configuration:
{
"version": "1.0.0"
}
Optional settings:
location - Custom location string (otherwise auto-detected)timezone - Custom timezone for date formattingprinter - Default printer interface for thermal printingLocation is determined in this order:
--location flag (if provided)location settingnpx claude-receipts generate --output html via stdin with the session IDccusage session --id <session-id> to get accurate session token/cost data--output html is specified, generates a styled HTML receipt with token breakdowns by model~/.claude-receipts/projects/[session-name].html and/or prints to thermal printer--output printer is specified, sends the receipt to a thermal receipt printerclaude-receipts supports printing to Epson TM-T88V thermal printers (and compatible models) via:
--printer usb (or config --set printer=usb)--printer tcp://192.168.1.100[!WARNING] Your mileage with printing may vary. I have tested with an Epson TM-T88V, printing from macOS and it works well, but other models may have different capabilities or require adjustments to the code. I am more than happy to accept PRs to improve printer compatibility.
The receipt includes:
This means you're trying to manually generate a receipt but the most recent session doesn't have a valid project path. Solutions:
setup command)ccusage couldn't find any sessions. Make sure you've used Claude Code recently and that ccusage is working:
npx ccusage session --json
Check that the hook is installed:
cat ~/.claude/settings.json
You should see a SessionEnd hook pointing to claude-receipts.
Very short sessions (e.g., just "hello world" + immediate exit) may not appear in ccusage yet. The hook will exit silently rather than printing a wrong receipt. For sessions that exist, the package now uses ccusage session --id to fetch accurate totals rather than sub-session slices.
If using --printer usb, ensure:
/dev/usb/lp*)For network printers, use --printer tcp://<ip-address> with port 9100 (default ESC/POS port).
ccusage --id)MIT