Stillwaters Collective · Free guide

Receipt Bots

Drop a receipt in a folder. It shows up in your spreadsheet. No typing.


Hey friends,

Receipts pile up everywhere: in messy inbox folders, crumpled in your wallet, or sitting in your glovebox. Typing invoice numbers, tax amounts and dates into a spreadsheet line by line is repetitive busywork that nobody enjoys.

I know, because I always do this to myself. I lose a week every tax season going back and forth between folders, boxes and photos. But not anymore.

In this guide we'll set up your own receipt bot in 5 steps and about 15 minutes. After that, you just drop receipt photos into a Google Drive folder and watch your spreadsheet log every item by itself.

Let's get into it!

Overview of the 5 steps~15 minutes total
  1. 1
    Create your receipt folder and sheet
    Set up your Receipts Inbox folder and Receipt Log sheet in Google Drive.
  2. 2
    Get your AI key
    Create your personal API key from Claude, Gemini, ChatGPT or DeepSeek.
  3. 3
    Personalise and copy your script
    Paste your folder link and grab your ready-made script.
  4. 4
    Paste it into your Google Sheet
    Open Extensions › Apps Script and paste the code.
  5. 5
    Switch it on and test it
    Give permission, enter your key and process your first receipt.
Prefer a hands-off setup?

If this is all too complicated, I can personalise and customise one for you, for your needs. Hit me up!

Hit me up →

How it works

Which AI do you want to use?

All of them work well. Pick whichever company you'd rather open an account with. The instructions and script below update for your pick.


1

Create your receipt folder and sheet

~2 mins
1. Receipts folder

In Google Drive, click New › New folder. Name it:

Receipts Inbox

Open the folder and copy the full link from your browser's address bar. You'll need it in Step 3.

2. Receipts sheet

In Google Drive, click New › Google Sheets › Blank spreadsheet. Name it:

Receipt Log

Leave it empty. The bot builds its own tabs and headers on the first run.

Keep both in your own Google Drive, not a restricted team folder. The script runs as you, so it can only read folders you can open.

💡 Malaysia only: make a second folder called MY Tax Receipts if you also want a Malaysian tax tab (LHDN categories, SST and e-Invoice details).

🔒drive.google.com/drive/folders/1AbCdEfGhIjKlMnOpQrStUv

Copy the whole link. The highlighted part is your folder ID.

Visual 1Your folder link, from the browser's address bar.
2

Get your AI key

~3 mins

Your bot needs an API key (a password that lets the bot use the AI). It sends each receipt to the AI with this key and gets the line items back.

Selected AI:

Switch any time. The link, instructions and script all update.

How to get your key in
    Open the console ↗ Opens in a new tab.

    Copy the key somewhere safe. Most sites only show it once. If you close the window first, you'll need to make a new one.

    ⚠️ Subscription notice: a ChatGPT Plus, Gemini or Claude Pro subscription does NOT include this. The bot needs a developer account (the link above), which is pay-as-you-go and usually costs a few cents per receipt.

    3

    Personalise and copy your script

    ~2 mins

    Paste your folder link below. This page builds your own copy of the bot, with your folder and your AI () already filled in.

    Never copy the script by highlighting it with your mouse. Always use the Copy button, so you don't miss lines hidden at the bottom.

    Paste your folder link above

    Your ready-to-use script appears here.

    Loading script…
    4

    Paste it into your Google Sheet

    ~3 mins

    Open your Receipt Log sheet. In the menu bar, click Extensions › Apps Script. A new tab opens with the Apps Script editor.

    Add-ons
    Macros
    Apps Script
    Visual 3The Google Sheet menu: Extensions › Apps Script.
    Keyboard shortcuts for your computer
    1. Select everythingCmd + A
    2. Delete itDelete
    3. Paste your scriptCmd + V

    Then save with Cmd + S, or click the save icon in the toolbar.

    Delete the sample function myFunction() text Google puts in the editor first. If you paste on top of it, you'll get an error when the script runs.

    ⚠️ Check the top line: the very first line must be /**. If you see anything else, you pasted the wrong thing. Go back to Step 3 and copy again.

    💡 Time zone: click the gear icon (Project Settings) on the left and set Time zone to where you are, so the timestamps are right.

    Code.gs💾 Save
    1  /**
    2   * Receipt Bots - drop receipts into a Google Drive folder…
    3   *   - Claims folder   -> "Claims Log" tab
    Visual 4The Apps Script editor after pasting. Line 1 is /**, then press Save.
    5

    Switch it on and test it

    ~3 mins

    Go back to your Google Sheet tab and reload the page. After a few seconds a new Receipt Bots menu appears at the top, next to Help.

    Click Receipt Bots › Set up (API key + auto-run). The first time, Google asks for your permission:

    4-click permission sequence
    Click 1Continue
    Click 2Pick your Google account
    Click 3Advanced › Go to … (unsafe)
    Click 4Allow
    Visual 5Click "Advanced", then "Go to … (unsafe)".

    Don't be alarmed by the "Google hasn't verified this app" warning. Google shows it for every personal script. It's your own copy, it lives in your Google account, and nobody else can see or run it.

    Now click Receipt Bots › Set up once more. A box asks for your API key. Paste the key you saved in Step 2.

    Key check: your key .

    Set up (API key + auto-run)
    Process new receipts now
    Re-read selected receipt
    Rebuild Relief Summary tab
    Stop auto-run
    Visual 6The Receipt Bots menu in your sheet.

    Now test it. Drop a receipt photo or PDF into your Receipts Inbox folder. Then in your sheet, click Receipt Bots › Process new receipts now. Rows appear in about 30 seconds.

    Hands-free from here: the bot checks the folder every 5 minutes by itself, even when your computer is off.

    What you'll see

    Your sheet gets a Claims Log tab with one row per item on each receipt: invoice number, item, price, quantity, discount, amount, total including tax, tax, total excluding tax, date, vendor, currency, a link to the original file, when it was processed, and a Needs Checking column.

    When the AI hits a blurry total, a missing date or line items that don't add up, the whole row turns soft yellow and the reason is written in Needs Checking. Yellow rows are the only ones you need to look at.

    Claims LogPreview
    Invoice No.ItemPriceQtyAmountTotal incl. TaxTaxDateVendorCurrencySource FileNeeds Checking
    00025091White coffee12.00112.0023.301.322026-09-12Underscore CoffeeMYRreceipt.jpg
    00025091Black coffee10.00110.002026-09-12Underscore CoffeeMYRreceipt.jpg
    Client lunch92.00192.00108.50?2026-10-05Harbour BistroMYRlunch.pdfTax line is unreadable; items add up to 92.00 but the total is 108.50
    Visual 7Rows fill in by themselves. Only the yellow one needs a look.

    If you added the Malaysian folder, you'll also get an MY Tax Claims tab (one row per receipt, with LHDN business categories, SST and e-Invoice details) and a Relief Summary tab with totals.

    Troubleshooting

    Here's how to fix the most common hiccups in under a minute:

    No "Receipt Bots" menu appears in the sheet
    Reload your sheet and wait 5 seconds. If it's still missing, open Extensions › Apps Script and check that you pressed Save.
    "Syntax error … line 1" in Apps Script
    Old code stayed in the editor, or the script was cut off. Go back to Step 3, press Copy again, delete everything in Code.gs and paste fresh.
    A yellow row mentions 401
    Your API key is wrong or was copied with a character missing. Click Receipt Bots › Set up and paste the key again carefully.
    A yellow row mentions 402, 429, "quota" or "billing"
    Your AI account has run out of credit or has no billing set up. Log into your AI's console and top up a few dollars. The bot retries by itself.
    Nothing appears after dropping a receipt
    Check the folder link you used in Step 3 is the folder you dropped the receipt into. Then click Receipt Bots › Process new receipts now.
    A receipt was read wrongly
    Click any cell in its row, then Receipt Bots › Re-read selected receipt. The bot deletes those rows and reads the file again.
    Switching to a different AI later
    Pick the new AI at the top of this page and copy the script again. Paste it over the old code in Apps Script, save, then run Receipt Bots › Set up with your new key.

    Your privacy

    This page never sees your API key or your receipts. The key is pasted straight into your own Google Sheet, and receipts go only from your Drive to the AI you picked. Your folder link stays in this browser tab and isn't sent anywhere.