Stop chasing hours in spreadsheets and building invoices by hand. Consultancy Billing System (CBS) turns a single Google Sheet into a professional billing dashboard — log your time, manage multiple clients with different day rates, and generate branded PDF timesheets and invoices with automatic VAT calculations. All from a clean, modern web app that lives inside your own Google Workspace.
It runs 100% inside Google Apps Script. No external services, no monthly SaaS fees, no data leaving your Google account. You install it once, and it is yours forever.
What You Get
- Time tracking — log hours against clients with descriptions and categories (Design, Development, Meeting, Travel, Admin)
- Multi-client management — each client gets a unique day rate, VAT percentage, contract type, and NEC status
- One-click PDF generation — branded timesheets and invoices with auto-calculated VAT, bank details, and company registration info
- Revenue dashboard — active clients, monthly hours, outstanding amounts, revenue trends, and overdue invoice tracking
- Reports & analytics — invoiced vs. paid breakdowns, revenue by client, hours by client charts, CSV export
- Settings panel — company name, email, bank details, VAT number, payment terms, and currency configuration
- Dark & light mode — a modern interface that remembers your theme preference
- Full data ownership — timesheets, invoices, and client records live in your own Google Sheet
Consultancy Billing System
Skip the manual setup. Get the complete script and start using it instantly in your Google Workspace.
Before You Start
- A Google account (free — you already have one)
- That's it. No Twilio, no OpenAI, no API keys, no external services.
CBS is self-contained. Everything it needs comes from Google — you will never be asked to sign up for a third-party service.
Step 1: Create a New Google Sheet
Open Google Sheets and create a blank spreadsheet. Name it "Consultancy Billing System" (or anything you prefer — the name is only for you).
This spreadsheet will become your billing database. CBS will automatically create sheets for Clients, Time Entries, Timesheets, Invoices, and Settings on first launch. You do not need to set up any columns yourself.
Step 2: Open Apps Script
In your new spreadsheet, click Extensions → Apps Script from the top menu. This opens the built-in script editor in a new tab.
You will see a default file called Code.gs with empty content — keep it open, we will replace its content in the next step.
Step 3: Paste the Files
CBS is delivered as two code files plus a manifest. In the Apps Script editor, create and fill them as follows:
- Replace the content of Code.gs with the file from the download
- Create an HTML file named index (click + → HTML) and paste index.html
- Open Project Settings (gear icon) → tick “Show ‘appsscript.json’ manifest file” → paste appsscript.json into the file that appears
That is everything — two content files plus one manifest. No command-line tools, no package installs.
Step 4: Deploy as a Web App
- Click Deploy → New Deployment (top right of the Apps Script editor)
- Click the gear icon and select Web app
- Set these options:
- Description:
Consultancy Billing System - Execute as: Me
- Who has access: Anyone
- Description:
- Click Deploy
- Google will ask you to authorize the app. Click Review Permissions, pick your Google account, and click Allow
- Copy the Web App URL — this is your billing dashboard link
Bookmark this URL. You will open it every time you use CBS. You can also pin it as a Chrome shortcut so it feels like a native desktop app.
First Launch
Open your Web App URL. CBS will automatically create the necessary sheets and set up the default configuration. You should see the onboarding wizard on your first visit — follow it to enter your company name, bank details, and billing preferences.
Try it right here — this is the actual app UI. Click any tab, log time, explore invoices:
Using CBS
Dashboard
See your financial health at a glance:
- Active Clients — number of clients you are currently billing
- This Month Hours — total hours logged in the current month
- Outstanding — total value of sent but unpaid invoices
- Total Paid — total revenue received across all clients
- Overdue Invoices — a dedicated red-bordered panel that flags invoices past their due date, showing the reference, client, amount, and days overdue
- Monthly Revenue Chart — bar chart showing invoiced vs. paid amounts over the last 6 months
- Hours by Client — progress bars showing how your time breaks down across clients
- Recent Invoices & Timesheets — quick-glance tables of your latest documents
Time Entry
Log your working hours quickly:
- Select the date and client from the dropdown
- Enter the number of hours (supports half-hour increments)
- Choose a category — General, Design, Development, Meeting, Travel, or Admin
- Add a description of what you worked on
- Click Add Entry
Each entry is marked as unbilled by default. When you generate a timesheet, the system automatically marks the included entries as billed so you never double-count hours.
You can edit unbilled entries (change hours, description, or category) and delete entries you no longer need — all from the entries table.
Timesheets
Timesheets group your daily time entries into weekly summaries for each client:
- Click Generate to create a new timesheet
- The system pulls all unbilled entries for the selected client and week
- A professional PDF is created with line items, hourly totals, and the client's day rate applied
- The PDF is saved directly to a client-specific folder in your Google Drive
You can also email timesheets directly to clients and export the register as CSV for your records.
Timesheet statuses: Submitted → Approved → Invoiced
Invoices
Generate professional PDF invoices from approved timesheets:
- Click Create Invoice to start a new invoice
- Select the client and associated timesheets
- The system automatically calculates:
- Net value — total hours × day rate
- VAT amount — based on the client's individual VAT rate
- Gross value — net + VAT
- Bank details, company registration number, and payment terms are auto-populated from your Settings
- The PDF is saved to the client's Google Drive folder
Invoice statuses: Draft → Sent → Paid
You can Mark Sent to track when you email the invoice, and Mark Paid when payment arrives. Overdue invoices (past their payment term date) are automatically flagged on the dashboard.
Reports & Analytics
A dedicated analytics page with:
- Summary stats — total invoiced, total paid, outstanding, total hours worked
- Monthly Revenue Trend — visual bar chart showing invoiced vs. paid amounts per month
- Revenue by Client — table showing how much each client has been invoiced and how much has been paid
- Hours by Client — progress bar breakdown of hours worked per client
- CSV Export — download any report for your accountant or year-end filing
Clients
Manage your client database:
- Search clients by name or code
- Add new clients with all billing details: code, name, type (A/B), day rate, VAT rate, NEC requirement
- Edit existing client profiles — change rates, VAT percentages, or any field
- Deactivate clients you are no longer working with (they are hidden from dropdowns but preserved in records)
Each client profile controls how their timesheets and invoices are calculated — set it once, and the system applies the correct rate every time.
Settings
Configure your billing identity from the Settings page:
- Company Name — appears on all generated PDFs
- Email — your billing contact email
- Currency — GBP, USD, or EUR (all documents and reports update immediately)
- Payment Terms — e.g. "30 days" (used for overdue tracking)
- Bank Name, Account Number, Sort Code — pre-filled on every invoice PDF
- VAT Registration Number — displayed on invoices for tax compliance
Who Can Access Your App
CBS is deployed as a public web app — anyone with your Web App URL can open it and has full read/write access. This is the standard Google Apps Script configuration and keeps setup fast.
For solo consultants this is perfect — only you use the URL . For teams, treat the URL like a password and share it only with authorised staff.
If you need stricter access:
- Change Who has access to
Anyone with a Google accountduring deployment — users must be logged into Google - For team-only access, use Google Workspace: change Who has access to
Anyone within [your workspace]
You can change the access level anytime: Deploy → Manage Deployments → Edit the existing deployment.
Frequently Asked Questions
Do I need any paid services? No. CBS runs entirely inside Google Sheets and Apps Script. Both are free for personal Google accounts. There is nothing to subscribe to and no usage fees.
Can I track time for multiple clients in one day? Yes. You can log multiple entries per day, each against a different client. The system keeps everything separated by client when generating timesheets and invoices.
Does it handle different VAT rates per client? Yes. Each client profile has its own VAT percentage. When you generate an invoice, the system calculates the correct VAT automatically — including zero-rated or VAT-exempt clients.
Can I customise the PDF invoice template? Yes. The PDF is generated in Apps Script code, so you can change fonts, layout, logo placement, colours, and add custom fields. If you are not comfortable editing code, our Custom+ tier covers design changes.
What happens if I accidentally delete a sheet? Re-deploy the web app and on first load, CBS will recreate any missing sheets with the correct headers. Data in deleted sheets cannot be recovered beyond Google's standard version history — so we recommend not deleting sheets manually.
Can multiple people use it at the same time? Yes. Since the backend is Google Sheets, Google handles concurrent reads and writes. CBS works best for teams of 1–5 active users. For larger teams, consider the Custom+ plan for additional concurrency handling.
How do I update to a new version?
When we release an update, you receive new Code.gs and index.html files. Replace the existing files in your Apps Script editor and create a new deployment version. Your data in the spreadsheet is untouched — updates never overwrite your billing records.
Can I use this for multiple currencies simultaneously? Currently, CBS displays all amounts in a single configured currency (GBP, USD, or EUR). If you need to invoice different clients in different currencies at the same time, that is a straightforward Custom+ addition.
Is my data private? Yes. Everything lives in your own Google Sheet, inside your own Google account. We never see or touch your financial data. The app has no external API calls and no analytics — we could not see your data even if we tried.
Can you build custom features on top of this? Absolutely. Since you get 100% unobfuscated source code, you can modify anything yourself — or choose our Custom+ tier for features like recurring invoices, automated payment reminders, multi-currency support, or accounting software integrations. Everything is delivered via Upwork (escrow-protected) and you keep full source code ownership.