Automate UK Monthly Financial Summaries in Google Sheets with Apps Script
Tired of manual UK financial summaries? Automate reporting in Google Sheets with Apps Script to save hours and get instant insights.
Audio Overview
Overview: Automate UK Monthly Financial Summaries in Google Sheets with Apps Script. The UK Freelancer's and SMB's Guide to Automated Monthly Financial Summaries in Google Sheets with Apps Script If you’re running a business in the UK, whether you're a busy freelancer or an ambitious small to medium-sized business (SMB), you know the drill. Each month, the same ritual: pulling financial data, categorising transactions, and painstakingly piecing together a summary. It's often tedious, prone to human error, and frankly, a massive drain on your valuable time.
The UK Freelancer's and SMB's Guide to Automated Monthly Financial Summaries in Google Sheets with Apps Script

If you’re running a business in the UK, whether you're a busy freelancer or an ambitious small to medium-sized business (SMB), you know the drill. Each month, the same ritual: pulling financial data, categorising transactions, and painstakingly piecing together a summary. It's often tedious, prone to human error, and frankly, a massive drain on your valuable time. What if I told you there’s a much smarter way? A way to automate your UK financial summaries directly within Google Sheets, giving you instant, accurate insights without the monthly headache.
That's exactly what we're going to explore today. We're going to dive into how Google Sheets, combined with a bit of Google Apps Script magic, can transform your financial tracking. Forget manual updates; you're about to discover how to set up a robust system for monthly reports in Google Sheets that practically runs itself.
Why Bother Automating Your Financial Summaries?
I've seen countless UK businesses, from sole traders to small teams, get bogged down in the minutiae of their finances. It’s not just about compliance for HMRC; it’s about understanding your business's health. You need to know where your money's coming from and, more importantly, where it's going.
- Save Time: This is the big one. Imagine reclaiming hours each month that you currently spend on data entry and compilation. You could be focusing on growing your business, serving clients, or even just enjoying a well-deserved break.
- Increase Accuracy: Manual data handling is a breeding ground for mistakes. Automation drastically reduces the chance of typos or miscalculations, giving you reliable data.
- Gain Faster Insights: With automated summaries, your financial data is always up-to-date. You can spot trends, identify areas of overspending, and make quicker, more informed decisions about your cash flow and profitability.
- Better Prepared for Tax Time: When your monthly summaries are consistent and accurate, preparing for your Self Assessment or corporation tax becomes significantly less stressful. It's excellent for HMRC-ready expense tracking too.
- Scalability: As your business grows, your automated system can easily handle increased transaction volumes without a corresponding increase in your workload.
This isn't just about making life easier (though it certainly does). It's about empowering you with better financial visibility, which is crucial for any successful UK business.
The Core Components: What We're Building
Before we jump into the technical bits, let's visualise the system. Our goal is to create a dynamic financial tracking automation setup with three main parts:
- The Transaction Log: This is your raw data input. Every income and expense item will be entered here. Think of it as your digital bank statement or expense tracker.
- The Categories List: A simple, consistent list of all your income and expense categories. This is vital for accurate reporting.
- The Summary Dashboard: This is the output. A beautifully organised sheet showing your total income and expenses, broken down by category, for each month. This is where you'll see your monthly reports in Google Sheets come to life.
The magic happens when Apps Script takes your raw transactions, processes them against your categories, and then populates your summary dashboard automatically.
Setting Up Your Google Sheet: The Foundation of Your System
Let's get practical. Open a new Google Sheet. We'll need at least three distinct sheets within that workbook. Give them clear names – I find it makes navigating much easier.
Sheet 1: 'Transactions'
This will be your primary input sheet. Set up these columns:
- Date: The date of the transaction (e.g.,
DD/MM/YYYY). Consistency here is key for the script to correctly identify months. - Description: A brief note about the transaction (e.g.,
Client A Invoice,Utilities Bill - British Gas). - Category: This is perhaps the most crucial column. This needs to match exactly with your categories list. For instance,
Revenue - ServicesorExpenses - Office Supplies. - Amount: The value of the transaction. Use positive numbers for income and negative numbers for expenses. This simplifies the script later on.
- Bank Account (Optional but Recommended): If you manage multiple accounts, this can be useful for further analysis.
Keep this sheet tidy. When you add new transactions, simply add them to the next available row. Don't leave blank rows in between.
Sheet 2: 'Categories'
This is a simple reference sheet. Create two columns:
- Category Name: Your exact category names (e.g.,
Revenue - Consulting,Expenses - Software Subscriptions). - Type: Indicate whether it's an
IncomeorExpensecategory. This helps the script summarise correctly.
I recommend using a data validation dropdown in your 'Transactions' sheet's 'Category' column, pulling from this list. It vastly reduces typos and ensures consistency, which is vital for any automated system. Remember, a mistyped category is an uncategorised transaction as far as the script is concerned!
Sheet 3: 'Summary'
This sheet will house your beautiful, automated reports. We'll structure it like this:
- Column A: List all your categories from your 'Categories' sheet, perhaps with a row for 'Total Income', 'Total Expenses', and 'Net Profit' at the bottom.
- Row 1: Start from Column B onwards with the months you want to summarise (e.g.,
Jan 2023,Feb 2023,Mar 2023). The script will automatically add new months as needed, so you don't have to pre-fill them all.
The layout is quite flexible, but this structure works well for a clear month-on-month comparison of your income and expenditure categories.
Introducing Apps Script: Your Coding Assistant

Google Apps Script is a cloud-based JavaScript platform that lets you extend Google Workspace applications. In simple terms, it's a way to write little programmes that run *inside* your Google Sheets, Docs, or Calendar. Don't worry if you're not a coder; you don't need to be a developer to make this work. We're going to use a pre-written script and configure it.
To access the Apps Script editor, go to Extensions > Apps Script from your Google Sheet. This will open a new browser tab with the script editor. You'll see an empty project called `Untitled project` or `Code.gs`.
The Apps Script Code Explained (Conceptually)
While I won't provide the raw code here (you'd typically copy and paste it from a reliable source or a template), understanding its logic is helpful. Our script will essentially do this:
- Define Settings: It'll first look for your sheet names (
Transactions,Categories,Summary) and the column numbers where your dates, categories, and amounts are. This is where you customise it for your setup. - Fetch Data: It will read every row from your
Transactionssheet, ignoring the header row. - Process Each Transaction: For each transaction, it will:
- Extract the month and year from the date.
- Look up the category.
- Add the amount to a running total for that specific category and month.
- Structure Summary Data: It builds a temporary structure (like a big mental table) that holds all your categorised monthly totals.
- Update Summary Sheet: Finally, it clears the previous summary data (or just the relevant cells) on your
Summarysheet and writes the newly calculated totals into the correct month and category cells. It will also add new month columns if your transactions extend beyond what's currently on your summary sheet.
It's an efficient way to crunch through hundreds or thousands of transactions in seconds. If you ever need to tweak or debug your script, general-purpose AI models like ChatGPT, Claude, or Gemini can be incredibly useful. You can paste snippets of code and ask for explanations or suggestions for improvements. They're excellent AI tools for understanding the underlying logic even if you're not a seasoned developer.
Writing (or Pasting) Your Apps Script: A Step-by-Step Guide
Let's get this script into your Google Sheet.
Step 1: Open Apps Script Editor
In your Google Sheet, click Extensions > Apps Script. This opens the editor in a new tab.
Step 2: Paste the Script
You'll see a file named Code.gs. Replace any existing default code with the script. For the purpose of this article, I'll describe the key functions you'd typically find.
You'll likely have a main function, let's call it generateMonthlySummary(). This function will be the orchestrator. It will call other helper functions:
getTransactionsData(): Reads everything from yourTransactionssheet.getCategoriesData(): Reads your income/expense categories.processAllTransactions(transactions, categories): The core logic that iterates through each transaction, calculates monthly totals for each category.updateSummarySheet(summaryData): Takes the processed data and writes it neatly into yourSummarysheet, ensuring new month columns are created if needed.
You might also have a simple function to add a custom menu item to your Google Sheet, so you can run the script with a single click (e.g., onOpen()).
Step 3: Configure Settings
At the top of the script, there will be a section for settings. This is where you tell the script the names of your sheets and the column indices for your data.
// --- Configuration Settings --- const TRANSACTIONS_SHEET_NAME = "Transactions"; const CATEGORIES_SHEET_NAME = "Categories"; const SUMMARY_SHEET_NAME = "Summary"; // Column indices (0-indexed) const DATE_COL = 0; // Column A const CATEGORY_COL = 2; // Column C const AMOUNT_COL = 3; // Column D // Summary Sheet layout const SUMMARY_START_ROW = 2; // Where category listing starts const SUMMARY_CATEGORY_COL = 0; // Column A const SUMMARY_START_MONTH_COL = 1; // Column B Adjust these values to match your exact sheet names and column positions. This is a critical step for your specific setup.
Step 4: Save and Authorise the Script
Click the floppy disk icon (save) in the Apps Script editor. The first time you try to run any script that interacts with your Google Sheet, it will ask for authorisation. This is a standard security measure. Follow the prompts: choose your Google account, click 'Advanced' (if it appears), and then 'Go to [Project Name] (unsafe)' (it's safe, just Google's warning for third-party scripts). Grant the necessary permissions.
Step 5: Run for the First Time
In the Apps Script editor, select your main function (e.g., generateMonthlySummary) from the dropdown menu at the top, then click the 'Run' button (play icon). Watch your Summary sheet populate!
Step 6: Set Up a Time-Driven Trigger
This is where the 'automation' really kicks in. You don't want to manually run the script every month.
- In the Apps Script editor, look for the 'Triggers' icon on the left sidebar (it looks like an alarm clock).
- Click 'Add Trigger' in the bottom right.
- Choose which function to run: Select your main function (e.g.,
generateMonthlySummary). - Choose deployment where function is at: Leave as 'Head'.
- Select event source: Choose 'Time-driven'.
- Select type of time-based trigger: 'Month timer' is ideal for monthly summaries. You can also choose 'Day timer' or 'Hour timer' if you want more frequent updates.
- Select day of the month: Choose a day, perhaps the 1st or 2nd, for your monthly report to run.
- Select time of day: Pick a quiet time, like
1am - 2am. - Click 'Save'.
Now, your script will run automatically at your specified interval, keeping your financial summaries up-to-date without you lifting a finger. This frees you up for more important things, like strategising your next business move or perfecting your AI prompts for small business bookkeeping.
Refining Your Summary and Adding More Value
Once your basic automation is running smoothly, you can expand its utility.
- Visualisations: Google Sheets is excellent for charts. Select your summary data and insert various charts (bar charts for monthly income/expenses, pie charts for expense breakdown). Visuals make data far easier to digest.
- Budgeting: Add a column next to each month on your
Summarysheet for your budgeted amount for that category. Then, create a simple formula to show the variance (Actual vs. Budget). This is a powerful tool for financial control. - Reporting for HMRC: While this automated summary isn't a direct submission tool, it provides the backbone of the data you need. The consistent categorisation means your figures for turnover and allowable expenses are readily available. Just remember to keep detailed records (receipts, invoices) for everything, as HMRC can ask for proof. For detailed guidance on what expenses are allowable, always refer to the official GOV.UK website.
- Custom Alerts: You could extend the Apps Script to send you an email if, for example, your net profit drops below a certain threshold, or a specific expense category goes over budget.
Practical Tips and Common Pitfalls

No system is foolproof from day one, but a few pointers can smooth the journey.
- Consistency is King: I can't stress this enough. If you type 'Software Subs' one day and 'Software Subscriptions' the next, the script will treat them as two different categories. Stick to your 'Categories' sheet religiously.
- Regular Input: The automation works on the data you provide. Make it a habit to log your transactions frequently – daily or weekly is better than a mad scramble at month-end.
- Backups: Before making significant changes to your script or sheet structure, make a copy of your Google Sheet (
File > Make a copy). It's a lifesaver if something goes awry. - Error Checking: If the script isn't working as expected, go back to the Apps Script editor, click on the 'Executions' tab (looks like a list icon), and check the logs. They often give clear indications of what went wrong.
- Don't Overcomplicate: Start simple. Get the core income and expense tracking working. You can add layers of complexity later. Trying to automate everything at once can be overwhelming.
- Consider Other Automation: Once you're comfortable with Apps Script, you might explore other ways it can assist, like automatically sending invoice reminders to clients.
Automating your financial summaries might seem a bit daunting at first, especially if you're new to Apps Script. But the initial effort pays dividends quickly. You'll gain a deeper, more accurate understanding of your business finances, save precious time, and be better prepared for both proactive decision-making and those unavoidable HMRC deadlines. It’s a worthwhile investment in your business's future, giving you peace of mind and more time to focus on what you do best.
Want to see more automations?
Explore use cases or get in touch with questions.