ExpenseCheck

Know what you can claim
without the admin.

Upload your bank transactions and calendar. ExpenseCheck shows what is claimable, what needs a second look, and what to ignore.

Find my missing expenses No card required to start
Why it happens

Reviewing transactions takes longer than they are worth.

You go back through statements, try to remember what each transaction was for, and match it to meetings or client work. For small amounts, the time it takes often outweighs the value. So you skip it. The costs accumulate quietly.

22%
of UK workers do not claim all expenses they are entitled to. Finestra estimates £890 million goes unclaimed each year, averaging £18.71 per person per month. Source: The Workers Union, Finestra

How it works

Connect. Review. Export.

01

Upload your data

Export a CSV from your bank and your calendar as an ICS file. No open banking connection required. Any bank, any calendar.

02

Context is attached automatically

Every transaction is matched against your calendar activity and working patterns. Business context is attached before you review.

03

Review only what is uncertain

Clear cases are handled without input. You only see what needs a decision, typically a fraction of the full statement.

04

Export clean records

Download a submission-ready file with every classification, confidence level, and supporting context included.

Built for people who earn outside a payslip.

Freelancers Multiple clients, blurred lines between personal and professional spend.
Contractors IR35 complexity and HMRC scrutiny require defensible, clean records.
Landlords Property expenses that are claimable but easy to miss or misattribute.
Employees with expenses Reimbursable spend that goes unclaimed because the admin is not worth the effort.
Find my missing expenses

No card required to start

Cost: £0  ·  Time: ~15 minutes

This guide takes you from the downloaded index.html file to expensecheck.co.uk serving the live landing page. Your DNS is already managed in Cloudflare, so the custom domain step is near-instant.

What you need before starting

  • Your existing Cloudflare account (the one managing expensecheck.co.uk)
  • A GitHub account at github.com — free tier is sufficient
  • The index.html file downloaded from this session

Step 1 — Create a GitHub repository

  1. Go to github.com and sign in. Create a free account if you do not have one.
  2. Click the green "New" button in the top-left sidebar.
  3. Name the repository exactly: expensecheck-landing
  4. Set visibility to Private.
  5. Leave all other settings as default and click "Create repository".
  6. On the next screen, click "uploading an existing file".
  7. Drag your index.html file into the upload area.
  8. Scroll down and click "Commit changes".
You only need the one file. Nothing else is required in the repository.

Step 2 — Connect GitHub to Cloudflare Pages

  1. Go to dash.cloudflare.com and sign in.
  2. In the left sidebar, click "Workers and Pages".
  3. Click "Create" in the top right.
  4. Select the "Pages" tab.
  5. Click "Connect to Git".
  6. Click "Connect GitHub" and authorise Cloudflare when the browser prompts you.
  7. Select the expensecheck-landing repository from the list.
  8. Click "Begin setup".

Step 3 — Configure build settings

On the "Set up builds and deployments" screen, enter exactly the following:

  • Project name: expensecheck-landing
  • Production branch: main
  • Framework preset: None
  • Build command: leave this blank
  • Build output directory: / (a single forward slash)

Click "Save and Deploy". Cloudflare will build and deploy in under 60 seconds. A temporary URL ending in .pages.dev will appear. The page is live at that address immediately.

Step 4 — Connect your custom domain

  1. Inside the Cloudflare Pages project, click the "Custom domains" tab.
  2. Click "Set up a custom domain".
  3. Enter: expensecheck.co.uk and click "Continue".
  4. Cloudflare detects that your DNS is already managed there and adds the required CNAME record automatically.
  5. Click "Activate domain".
Because your DNS is already on Cloudflare, propagation typically completes in under 2 minutes rather than the usual 24 to 48 hours you would see elsewhere.

Step 5 — Verify

  1. Visit expensecheck.co.uk in a browser.
  2. The landing page should load.
  3. Click "Log in" and confirm it routes to your Bubble app.
  4. Click "Get started" and confirm it routes to your Bubble app.

Making changes later

  1. Edit your local copy of index.html.
  2. Go to the repository on GitHub and click on index.html.
  3. Click the pencil icon to edit, paste the updated content, and click "Commit changes".

Cloudflare detects the commit and redeploys automatically within 60 seconds. No manual action required.

Updating the Bubble URL

All buttons currently point to justin-93767.bubbleapps.io/version-test/. When you move to a custom domain such as app.expensecheck.co.uk, search the file for bubbleapps.io and replace all four occurrences. Those are the only links in the file.

Cost summary

  • Cloudflare Pages free tier: 500 deployments per month, unlimited requests, unlimited bandwidth
  • GitHub free tier: unlimited private repositories
  • Total monthly cost: £0