Skip to content
RepoQuarry

Build · Intermediate · A weekend

Build a receipt scanner with open-source software

Snap a receipt and it lands in your own books. A local AI model reads the photo; nothing goes to a paid service.

Instead of paying for ChatGPT Plus, Zapier, Make, QuickBooks Online, FreshBooks, Dropbox or Box.

What you'll build

A receipt scanner you own: photograph a receipt on your phone, and a minute later the date, shop, total and tax are sitting in your own accounting app as an expense, with the photo attached. It's the job apps like Expensify and QuickBooks' receipt capture charge for every month. Here an AI model on your own machine reads the photo, so your spending never leaves your hardware. Freelancers use it for tax-ready records; households use it to see where the money goes.

Blueprint

The photo goes into a Nextcloud folder. Activepieces sees it, asks Ollama to pull out the date, shop and total, then creates an expense in Bigcapital.

  1. You Receipt photo from your phone Nextcloud Server
  2. Nextcloud Server New file in the receipts folder Activepieces
  3. Activepieces The image, with a prompt asking for date, shop, total and tax Ollama
  4. Ollama The fields as JSON Activepieces
  5. Activepieces A new expense with the photo link Bigcapital

The repos

  1. 01 · Read the receipt Ollama

    Local model runner that downloads and serves open LLMs (Gemma, Qwen, DeepSeek, gpt-oss and more) with a CLI and local API.

    Setup
    Easy; one-line install script or installer, then ollama run source
    Hardware
    Apple M-series or x86 (CPU only) on Mac; 4GB for Windows binary; RAM not stated source
    Paid extras
    None for local use; Ollama Cloud plans optional (Pro $20/month)
    ★ 184k MIT Confirmed: 8/8 facts Official docsGitHubReplaces ChatGPT Plus
  2. 02 · Move the data Activepieces

    Self-hostable no-code automation builder with 280+ TypeScript integrations ("pieces") that are also exposed as MCP servers.

    Setup
    Medium, install script or a single docker run with embedded database source
    Hardware
    Not documented
    Paid extras
    None required; enterprise licence and Activepieces Cloud are optional
    ★ 25k MIT Partial: 7/8 facts Official docsGitHubReplaces Zapier, Make
  3. 03 · Keep the books Bigcapital

    Double-entry accounting and inventory app with invoices, estimates, Stripe payment links, expenses, Plaid bank sync and financial reports.

    Setup
    Medium; clone the repo, edit .env and start docker-compose.prod.yml, or use the setup script source
    Hardware
    2 CPU cores and 4 GB RAM minimum for up to 10 organizations; 5-10 GB for MariaDB source
    Paid extras
    Core needs nothing paid; automatic bank sync needs your own Plaid account; Stripe for card payments
    ★ 3.9k AGPL-3.0-only Confirmed: 8/8 facts Official docsGitHubReplaces QuickBooks Online, FreshBooks
  4. 04 · Store the photos Nextcloud Server

    Self-hosted file sync and share server with desktop and mobile clients, share links, file versions and an app store for calendar, contacts and more.

    Setup
    Medium; All-in-One Docker image, appliances, or manual PHP/web server/database install source
    Hardware
    At least 128 MB RAM per PHP process, 512 MB recommended source
    Paid extras
    None required; Nextcloud Enterprise (paid support) and hosted providers are optional
    ★ 37k AGPL-3.0-or-later Confirmed: 8/8 facts Official docsGitHubReplaces Dropbox, Box

Step by step

Install commands change, so each step links to the repo's own docs for the exact commands.

  1. Install Nextcloud and its phone app

    Set up Nextcloud Server, then install the Nextcloud app on your phone and create a folder called Receipts. Turn on auto-upload for that folder, or share photos into it by hand. This is the only thing you touch day to day.

    Uses Nextcloud Server · its docs

  2. Run a vision model in Ollama

    Install Ollama on the machine that will do the reading and pull a model that can read images (a "vision" model). Test it on one receipt photo by asking for the date, shop name, total and tax as JSON, and adjust the prompt until the answer is reliable.

    Uses Ollama · its docs

  3. Set up Bigcapital

    Install Bigcapital, create your organisation and an expense account for receipts. Create an API token so the automation can add expenses for you.

    Uses Bigcapital · its docs

  4. Connect them with Activepieces

    In Activepieces, build a flow that starts when a new file appears in the Receipts folder (on a schedule or a webhook from Nextcloud). Send the image to Ollama's local API with your prompt, parse the JSON reply, and call Bigcapital's API to create the expense with the photo's share link in the note.

    Uses Activepieces · its docs

  5. Test with ten real receipts

    Try faded till receipts, foreign currencies and handwritten totals. Add a check that sends anything with a missing total to a "needs review" folder instead of guessing.

Watch out

Bigcapital needs 4 GB RAM. Automatic bank sync needs your own Plaid account.

Take it further

  • Tag each expense with a tax category the model suggests, then review them once a month.
  • Forward email receipts to the same flow by saving attachments into the Receipts folder.
  • Add a weekly summary message of what you spent, by category.

Shared builds

Nobody has shared one yet. Be the first.

Built your own version and put it on GitHub as open source? Share your build

Questions

Do I need a graphics card?

No, but it helps. Vision models run on a CPU, just slower; one receipt taking a minute is fine for this job. Check Ollama's page for what your machine can run.

Can I use this for my tax return?

It gives you organised records and the original photos, which is what most tax authorities ask you to keep. Check the totals it reads; it is a helper, not an accountant.

Why not just use an AI chat app?

You could photograph receipts into a chat app, but the data then sits with that company and you still type it into your books. This keeps both the photos and the numbers on your own machines and files them for you.

Every repo here is open source, still maintained and checked against its own documentation. How we check →

Cookie preferences

Choose what we may store in your browser. You can change this any time from Cookie settings in the footer.

Essential

Security, and remembering this choice. rq-consent · 12 months

Always on