How to send a client an hours statement from HubSpot
By Kayabyte
Retainer clients want to see what their hours were spent on: date, who, what, and how many hours are left. This guide covers what you can pull out of HubSpot itself, what a good statement contains, and how an app can produce one. HubSpot facts last checked 10 November 2026 against HubSpot’s knowledge base.
What a good statement contains
- The client, the period and the retainer it draws on.
- Hours available at the start (including carried-over hours), hours used, hours remaining.
- Each time entry: date, who did the work, what was done, hours charged.
- Any overage, meaning hours beyond what was prepaid, and the rate.
- A note on rounding or multipliers if you apply them, so the numbers can be checked.
What HubSpot can export
- Records. You can export records such as companies, deals or tickets as CSV, XLS or XLSX with all HubSpot products and plans, if the user has export permission. The article says a records export does not include activities such as calls or notes (HubSpot: export records). So a statement of what was done is not in a records export.
- Reports. A custom report can be saved to a dashboard or exported, on Professional or Enterprise (HubSpot: custom reports). If you keep an Hours spent property on tickets, a ticket report filtered by company and date can be exported to a spreadsheet.
- Notes and logged activities. You can log activities and notes on a record manually (HubSpot: log activities), but the article describes no duration field you can rely on.
In practice: export the ticket report, paste it into a spreadsheet or document template, add the opening balance and send it as a PDF. It works if you do it for a few clients a month.
Making the manual version less painful
- Use one Hours spent property on tickets and a Billable yes/no property, so a report can filter on them.
- Add a text property for the work done only if you will actually fill it in; otherwise the ticket subject is the description.
- Keep the opening balance on the company, and write the closing balance down at month end, because properties are overwritten.
Full disclosure: we built an app for this
With Retainer Wallet on Pro, the company card has a Client statement section: choose a date range and the app creates a CSV and a printable page. The page lists, per retainer, hours available, used, remaining and overage with the rate, and then every time entry in the range with date, the name of the person who logged it, the record (shown as ticket, deal or company with its name), the description and hours charged, with a total of billable hours and how many were beyond the prepaid balance. You save it as a PDF with your browser’s Print. Things to know: the links work for 30 minutes and anyone holding the link can open the page, so send the file; long statements are built in the background, so the page may reload for a moment; there is no client portal and nothing is emailed for you; a statement holds at most 5,000 entries, so pick a shorter range for more. The CSV has columns for minutes logged, minutes rounded, multiplier and hours charged, so a client can follow the arithmetic.
Statements are part of Pro, USD 59 per month; Free is 1 user and 3 retainers and Starter is USD 29 per month, neither with statements. Every new account gets 14 days of Pro, no card. It installs from our site, not the HubSpot Marketplace.
More detail
- Prepaid hours and retainers in HubSpot
- Tracking a retainer balance per client
- Retainer rollover rules
FAQ
Can HubSpot export a list of time spent per client? Only if you store time as a property on records. HubSpot has no time entry object, and its records export does not include activities such as calls or notes.
Which plan do I need to export a report in HubSpot? The custom report builder needs Professional or Enterprise; a plain records export works on all plans for users with export permission.
Can I give my client a PDF? Yes: build the statement in a spreadsheet or document, or create the printable statement in Retainer Wallet (Pro) and save it as PDF from your browser.
Questions or corrections: support@kayabyte.dev. HubSpot is a registered trademark of HubSpot, Inc. Kayabyte is an independent developer and is not affiliated with HubSpot.
More guides
- How to audit and clean up HubSpot properties without breaking anything
- How to stop a HubSpot deal reaching Closed won until it is approved
- How to bulk create custom properties in HubSpot from a CSV or spreadsheet
- How to copy properties from one HubSpot account to another
- DealHub or a lightweight approval app for HubSpot deals?
- How to export all properties from HubSpot, with their dropdown options
- How to bulk add dropdown options (and properties) in HubSpot
- HubSpot deal approval options compared: native approvals, workflows, DealGuard and Deal Approvals & Stage Gate
- HubSpot deal approvals without Enterprise: what Free, Starter and Professional can do
- HubSpot discount approval on Sales Hub Professional or Starter
- How to set up discount approvals in HubSpot (deal desk)
- How to see what your HubSpot pipeline looked like last week
- Creating HubSpot properties in bulk: HubSpot import, the API, Lift and Bulk Property Import & Export compared
- HubSpot property naming conventions: a template for internal names, groups and labels
- Tracking retainer hours in HubSpot: StopWatch, PSOhub, a spreadsheet or Retainer Wallet
- A weekly stale-deal report in HubSpot, without Enterprise
- Time tracking on HubSpot tickets: what HubSpot has and the options
- Insycle or Bulk Property Import & Export for HubSpot properties?
- How to require approval before a deal moves stage in HubSpot
- How to require fields before a HubSpot deal moves to a stage
- RevOps Deal Desk & CPQ vs Deal Approvals & Stage Gate for HubSpot
- How to stop reps skipping deal stages or moving deals backward in HubSpot
- Export property history in HubSpot: who changed it and when