Receipt Extraction
MCP serverDev toolsTurns receipts into structured data with Australian GST and ABN details worked out for you. Instead of just reading the text, it assigns entertainment and input tax credit codes to each line, so your AI can sort receipts for tax purposes.
Use Receipt Extraction in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Receipt Extraction and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use Receipt Extraction to extract receipt
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Details
Available today. Use it from your connected AI after setup.
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Add it from the repository at github.com/acjlabs/receipt-extraction, then share a receipt and ask your AI to extract and code it.
What your AI can do with it
- Extract line items from receipts
- Assign entertainment tax codes to eligible lines
- Assign input tax credit (ITC) codes per line
- Recognise GST amounts and ABN details
- Prepare receipts for tax reporting
Install Receipt Extraction
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user receipt-extraction 'https://receipt-extraction.acjlabs.com/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://receipt-extraction.acjlabs.com/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=receipt-extraction&config=eyJ1cmwiOiJodHRwczovL3JlY2VpcHQtZXh0cmFjdGlvbi5hY2psYWJzLmNvbS9tY3AifQ==Open the link and Cursor adds the server at that address.
ChatGPT
https://receipt-extraction.acjlabs.com/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add receipt-extraction --url 'https://receipt-extraction.acjlabs.com/mcp'Run it once, then sign in with codex mcp login receipt-extraction if the server asks for an account.
From the project's README
As published by acjlabs/receipt-extraction in README.md.
AU GST/ABN-aware receipt & invoice extraction — applies documented AU entertainment/ITC tax-code
rules per line item, returning a tax_code, a confidence, and a one-line rationale for each, not
just OCR text. You supply the document; get validated structured JSON: vendor, line items, tax, totals —
with Australian GST and ABN checksum validation built in from day one. One API call, no hand-rolled
vision-LLM prompts, no re-deriving ABN/GST rules from the ATO's own documentation.
What it does
- Accepts a receipt/invoice image or PDF (base64), returns a clean, versioned
ReceiptJSON object. - Validates the vendor's ABN (11-digit modulus-89 checksum) and cross-checks GST across line items and totals, excluding non-creditable GST on entertainment-coded expenses per the documented rule set.
- Each line item carries its
tax_codeplus aconfidence(0–1) and a one-linerationalenaming the actual rule applied (e.g. "entertainment ITC denied, no exception context", or the incidental-to-travel exception that flips a restaurant-style meal back to claimable) — so you can check the call, not just trust it. - Works as an MCP server (
extract_receipttool) or a plain HTTPS API — usable from Claude, Cursor, or any HTTP client.
GST handling reflects publicly documented Australian tax law and is provided as software output, not tax advice.
Example (MCP tool call)
{
"tool": "extract_receipt",
"input": { "document_base64": "<base64 image or PDF>", "mime_type": "image/jpeg" }
}
{
"vendor": { "name": "Acme Pty Ltd", "abn": "51824753556", "abn_valid": true },
"date": "2026-07-14",
"line_items": [
{
"description": "Widget",
"qty": 2,
"unit_price": 12.5,
"gst": 2.5,
"tax_code": "taxable",
"confidence": 0.95,
"rationale": "Standard-rated retail good; 10% GST applies."
}
],
"totals": { "subtotal": 25.0, "gst": 2.5, "total": 27.5 },
"schema_version": "1.0"
}
Pricing
The free tier is self-serve today; paid plans are opening soon.
- Free — 20 documents/month, no card required. Self-serve today.
- Pay-as-you-go (opening soon) — $0.02/document, no minimum.
- Pro (opening soon) — $19/month for 1,500 documents (~$0.013/doc effective), with priority support.
Want a paid plan now? Register your interest and we'll set you up first.
Getting a key
The MCP server is live at https://receipt-extraction.acjlabs.com/mcp (the alternate
https://acjlabs-receipt-extraction.acjlabs.workers.dev/mcp address reaches the same deployment and
keeps working, so existing configurations need no change). Free-tier keys
self-serve — POST /v1/signup with { "email": "you@example.com" } returns your key directly in the
response, good for 20 documents/month, no card required. Store it immediately — it is shown once and
cannot be recovered if lost (re-signup for a new one). Paid keys provision the same way via a
one-time claim link once Pro/pay-as-you-go billing is live. See
https://acjlabs-receipts.pages.dev for the same steps plus pricing and a comparison against
alternatives.
Connecting it to an MCP client
With Claude Code:
claude mcp add --transport http receipt-extraction \
https://receipt-extraction.acjlabs.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Any other MCP client that supports a remote HTTP server with a custom header (Cursor, Cline, VS Code,
etc.) works the same way: point it at the URL above with an Authorization: Bearer YOUR_API_KEY
header. A gateway or scanner that can only forward the raw key value (no Bearer prefix) also works —
both forms authenticate. Tool discovery (initialize/tools/list) doesn't require a key at all; only
calling extract_receipt does.
See docs/quickstart.md for a full copy-paste walkthrough (getting a key, per-client
configs, confirming the connection with curl) if you'd rather follow one linear guide.
How accurate is it?
Validated 4/4 against hand-built (but genuinely readable) test documents covering net-priced, GST-inclusive-only, checksum-invalid-ABN, and unreadable-document cases. Real production accuracy across more document formats will be tracked once live traffic exists.
npm client
Prefer a typed function over hand-rolling MCP JSON-RPC calls?
@acjlabs/receipt-extraction-client
(live on npm) wraps the extract_receipt tool call:
npm install @acjlabs/receipt-extraction-client
import { createReceiptExtractionClient } from "@acjlabs/receipt-extraction-client";
const client = createReceiptExtractionClient({
baseUrl: "https://receipt-extraction.acjlabs.com",
apiKey: "...",
});
const receipt = await client.extractReceipt(base64EncodedImageOrPdf, "image/png");
Why not just use generic OCR?
Generic OCR extraction APIs return raw fields. None of them apply the AU layer on top: that an Australian ABN carries an 11-digit modulus-89 checksum, or that GST apportionment differs for entertainment-coded expenses. You'd build and maintain that yourself, against someone else's schema that can change under you. See the full comparison, or read why AU GST rules break most receipt-extraction tools (the ABN checksum, the three real GST cases, and how to test any tool against them).
Source availability & support
This repository hosts the documentation for the hosted service. The service implementation is not open source. Bug reports and feature requests are welcome in this repo's Issues; you can also reach us at contact@acjlabs.com.
Tools it offers (1)
What this server listed when Ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.
extract_receipt
Signals
- GitHub stars
- 2
- Last commit
- Aug 2026
Advanced
- Delivery
- receipt-extraction MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
com-acjlabs-receipt-extraction- Source
- github.com/acjlabs/receipt-extraction
- Hosted endpoint
https://receipt-extraction.acjlabs.com/mcp
github.com/acjlabs/receipt-extraction