The Hourly Invoice Sheet is a Google Sheets template with a small script attached. It is the exact tool Quorra Agency uses to bill its own hourly retainers, with the client names stripped out and a Setup tab put in their place. It was built because every timesheet app wanted a monthly fee to do three things a spreadsheet already does, and none of them put the time log where the client actually reads it: on the invoice.

$29 one time, per person, unlimited clients
  • The template sheet (Setup, Log, Invoices tabs) with the script already attached
  • Start and Stop buttons, quarter-hour rounding, a locked category dropdown
  • One review screen: hours, amount, due date, every log entry, and the checks that catch billing mistakes
  • Create, finalize and email the Stripe invoice, or create it and send the link yourself
  • Daily 7am check: paid alerts, invoice-day reminders, overdue flags, to you only
  • Written setup guide, 14-day refund
Get the sheet, $29 →

Paid through Stripe. You are redirected to the template and guide immediately after payment.

How it works

Four moments, all inside your own Google Sheet and your own Stripe account.

  1. 1

    Track your time

    Invoice menu, Start a work block. Stop when you finish. Hours fill in.

  2. 2

    Review on one screen

    On invoice day it totals the period and checks for mistakes before anything is created.

  3. 3

    Your client gets a Stripe invoice

    Sent from your Stripe account, with a Pay button and the full time log at the bottom.

  4. 4

    You hear when it is paid

    A daily check reads Stripe and emails you. It never sends anything to your client on its own.

Your Google Sheet→Your Stripe account→Your client pays you

What it does

You open the sheet when you start work and click Invoice, then Start a work block. It stamps the date and time and puts your cursor on the category. When you finish, Stop. Hours computes itself, rounded to the quarter hour if you want. That is the whole time-tracking habit.

On invoice day you click Review and send. One screen shows the period, the hours, the amount, the due date and every log entry. Above the table it lists anything that would embarrass you on an invoice: a block you forgot to stop, a duplicate row, a row with no category, hours over the cap in your contract. If it checks out, one button creates the invoice in Stripe, finalizes it and emails it to your client with the full time log in the footer. Click it once, click it again to confirm. Stripe handles the Pay button and the card or bank transfer.

Every morning at seven a small check reads Stripe and emails you if the client paid, if an invoice is due to go out today, or if one is past due. It never creates or sends anything on its own.

Who it is for

Anyone who bills by the hour to a small number of clients and already has, or is willing to open, a Stripe account: freelance marketers, designers, developers, consultants, fractional operators, virtual assistants, and one-person agencies. If you have one to five retainer clients and you are tired of paying a subscription for a timer and an invoice button, this is the version that costs $29 once.

It is not for teams who need multiple people logging time into one invoice, for fixed-fee billing, or for anyone who needs the invoice to add tax lines automatically. Those are different products.

Setup, about ten minutes

  1. File, Make a copy. Reload. Authorize the script from the Invoice menu.
  2. In Stripe, add your client as a customer and create a restricted key with Invoices: Write and Customers: Read. Paste the key into Invoice, Setup, Connect Stripe. It is stored in the script's properties, never in the sheet.
  3. Fill in your rate, client name and the customer id on the Setup tab. Add your first billing period.
  4. Optional and recommended: run one invoice in Stripe test mode first. The review screen shows a black TEST banner so you cannot confuse it with a real one.

The full setup guide is public, so you can read it before you buy.

Why the safety rules are in the code

The amount is never typed. It is always the logged hours in the period times the rate on the Setup tab. If you have a period cap or a term cap in your contract, the sheet refuses to invoice over it unless a row in that period is marked Approved overage, which forces you to have the conversation with the client before the hours are worked rather than after. If Stripe ever returns a total that does not equal hours times rate, the invoice is voided and nothing is sent. The restricted Stripe key cannot move money or touch payout settings, and there is no code path in the script that tries.

These rules exist because each one was learned the expensive way on a real engagement before they were written down.

Invoice amount = hours logged in the period × RATE. Refused if: zero hours · duplicate period · over cap without approved overage · Stripe total ≠ log total.

Questions people ask

Do I need a Stripe account?

Yes. Stripe is free to open and charges a fee per paid invoice. The sheet only needs a restricted key that can create invoices and read customers.

Does my client need anything?

No. They get an ordinary Stripe invoice email with a Pay button. Card or ACH, depending on what you enable on the Setup tab.

Why does Google say the app is unverified when I authorize it?

Because it is a script inside a sheet you copied, not an app in Google's marketplace. Google shows that screen for every copied script. Advanced, continue, Allow. The permissions are: edit this one spreadsheet, call Stripe, email you, run a daily timer. It does not read your Gmail or your other files.

Several clients?

One copy of the sheet per client. Each has its own Setup tab and Stripe customer. One restricted key can serve all of them.

Fixed fees? Taxes?

Not in this version. It bills hours times rate. Create fixed-fee invoices directly in Stripe. For sales tax or VAT, turn on Stripe Tax on the customer; the sheet does not add tax lines.

What if I change my rate?

Change RATE on the Setup tab. Invoices already sent keep the rate they were sent with.

Refund?

14 days, no questions. Email cayla@quorra.agency with your purchase email.

About the maker

Quorra Agency is Cayla Ridley's founder-led growth agency in Atlanta, Georgia. The sheet started as an internal tool for billing hourly retainers and is sold as-is with a written guide and email support. If you want the client-facing version, where your client sees a live page of hours, invoices and progress, that is a separate build; ask.