Give your agent a wallet you control.
Let your agents pay online using one-time-use cards or with machine payment protocols. You approve every request.
An open-source receipt inbox that runs in your own Cloudflare account. Search every receipt and invoice, and see which bank payments have no receipt.
FinanceTypeScript · MDXGitHub @bapspatilOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Self-hosted receipt and invoice reader on Cloudflare Workers: reads receipts with Workers AI, matches them to bank CSV exports and prepares a monthly CSV for your accountant.
Taken from the repository README
Loading the full README.
Read the full README ↗Every receipt and invoice, found in seconds.
A self-hosted receipt and invoice reader that runs on Cloudflare Workers. You deploy it into your own Cloudflare account. It:
You review everything; nothing is filed or submitted for you. It helps you close the month before you hand things to your accountant, and find any document again afterwards. Keep originals as your local law requires. Nuits Receipts keeps a copy in your own Cloudflare R2 bucket.
Nuits Receipts organises receipts and prepares a CSV for your accountant. It is not tax, VAT or accounting advice, and it does not do your bookkeeping. Figures are AI-extracted and you should check them.
Documentation: https://receipts.nuits.net/docs/. Start with the tutorials, find a task in the how-to guides, look things up in the reference, or read how it works.
No warranty. Not financial, tax or accounting advice. Nuits Receipts is free, open-source software provided "as is", without warranties or conditions of any kind, as set out in the Apache License 2.0 (sections 7 and 8). It reads documents with an AI extraction model (Cloudflare Workers AI "Clairic", currently a preview model), and it can misread or miss vendors, amounts, VAT, dates and currencies. Bank matching is a suggestion, not a reconciliation you can rely on without checking. You are responsible for checking every figure, for your own bookkeeping, tax and VAT filings, and for keeping your originals as your local law requires; Nuits Receipts keeps a copy in your own Cloudflare R2 bucket, and it is not a bookkeeping system. Ask your accountant or tax adviser about anything that matters. You run it in your own Cloudflare account. Nuits does not receive, store or have access to your documents or data. You are responsible for your deployment, its security, its costs and the personal data in your receipts. To the extent permitted by applicable law, Bapusaheb Shankaragouda Patil / Nuits is not liable for any loss arising from use of the software. Nothing in this notice limits liability that cannot be limited by law.
One Worker, server-rendered HTML, no cron jobs or queues:
@cf/cloudflare/clairic). Cloudflare labels it a preview model, so its availability, behaviour and price may change. VAT arithmetic is checked in code, and uncertain rows are marked for review.@cf/cloudflare/clef)./?in=year:2026 or /?in=vendor:Hetzner open one directly.42.50, >100, 100-200, march 2026, 2026-03, kind:sales, tag:travel or a quoted phrase.Cmd+K (Ctrl+K off a Mac) on any page opens a box with the first matches as you type.Files from before v2.0.0 are found by their details at once. To search the words inside them too, press Index older files in Settings, under Advanced, until none are left. Details: Find any document.
NUITS_PASSWORD, enter a password of at least 16 characters that you use nowhere else. Example values are refused.bun run deploy, which applies the database schema to the DB binding and then deploys. Open the workers.dev URL and sign in as owner (or the name you set).The button does not set up email. Uploads work without it; see Email to add it.
Requires Bun 1.4.2 or later (or Node 20+ for the scripts) and a Cloudflare account.
bun install --frozen-lockfile
bunx wrangler login
bun run setup # asks for names, senders and products, finds or creates D1, deploys, then asks for NUITS_PASSWORD
bun run setup writes your settings and resolved database ID to wrangler.production.jsonc, which is gitignored. Later deploys are bun run deploy. It refuses to reuse an existing database that holds other data, applies migrations before deploying, and stops if they fail. bun run deploy -- --dry-run checks and bundles without touching your account. Details: Deploy from the command line.
Email is optional. It needs a domain on Cloudflare DNS with Email Routing and a Send to a Worker rule for your receipt address; only the senders you allow are read, and mail from anyone else waits in Receipts To do until you allow or ignore the sender. Follow Set up email, and see Forward a copy of incoming mail and Keep sales invoices for the optional extras.
Add receipts, clear Receipts To do, import a bank statement, settle Bank To do, then download the month for your accountant and mark it as sent. Your first month walks through it once with sample files; the how-to guides cover each step.
j and k move between rows, x ticks one, Enter opens it, a approves a receipt, u undoes, / searches, Cmd+K or Ctrl+K opens quick find, and ? lists them all. In the PDF viewer, + and - zoom, 0 fits, r rotates, n and p change page, and f finds.The app installs as its own window with its own icon, and needs no app store.
The installed app still needs a connection: offline it only shows a "You're offline" page, and it keeps nothing on the device. On Android, you can also share receipt PDFs and photos to the installed app from other apps. They open on the Add page, and nothing is uploaded until you choose what they are and press Add.
The project's home page and /privacy/ live in site/, a static Vite build with its own package.json and an assets-only site/wrangler.jsonc that also serves the demo video. You do not need it to run the app. To preview it: cd site && bun install && bun run build && bun run preview. The routes in site/wrangler.jsonc are the maintainer's domain, so change or remove them before deploying your own copy.
The documentation is in docs-site/, a Nimbus (Astro) project served at https://receipts.nuits.net/docs/. cd docs-site && bun install && bun run dev; writing rules are in docs-site/WRITING.md.
https://<team>/cdn-cgi/access/certs. Nothing is sent.https://api.frankfurter.dev/v2/rates, ECB reference rates) receives a currency code and dates when a foreign-currency receipt needs a reference rate. No receipt content is sent.login.microsoftonline.com and uploads the month's receipt files and index spreadsheet to the OneDrive folder you chose, through graph.microsoft.com. Nothing is sent before you connect, and Disconnect deletes the stored sign-in. The month ZIP download makes no outside calls.wrangler.jsonc). Logs stay in your Cloudflare account and contain request metadata and short reason codes, never receipt content. Lower head_sampling_rate if you prefer.bun install --frozen-lockfile
cp .dev.vars.example .dev.vars # set any NUITS_PASSWORD for local use
bun run migrate # local D1 only
bun run dev # http://localhost:8787, user "owner"
bun run dev uses wrangler.local.jsonc: local D1 and R2, no AI binding, AI_MODE=mock, synthetic example.com senders. It needs no Cloudflare sign-in.
bun run typecheck
bun run lint
bun run test # Worker tests in workerd; AI and FX mocked, network forbidden
bun run test:scripts # setup, deploy, schema and release tooling (bun test)
bun run smoke # with `bun run dev` running: auth, upload, import, matching, export, email
scripts/sample-receipts/ holds synthetic receipts and a synthetic bank CSV; none of it is real financial data. bun run samples regenerates them. Releases follow Conventional Commits: docs/RELEASING.md, CHANGELOG.md. Architecture: docs/ARCHITECTURE.md and How it works.
Apache License 2.0; see LICENSE and NOTICE. The licence does not grant rights to the "Nuits" or "Nuits Receipts" names (section 6); forks should use their own name.
Holvi, Nordea, OP, Revolut, Wise, N26 and other bank names are trademarks of their respective owners. Nuits Receipts is not affiliated with or endorsed by any of them.
Cloudflare, the Cloudflare logo, and Cloudflare Workers are trademarks and/or registered trademarks of Cloudflare, Inc. in the United States and other jurisdictions. Nuits Receipts is an independent project and is not affiliated with or endorsed by Cloudflare.