Pulling Billable Time From SparkyProjects Straight Into an Invoice
If you track hours in SparkyProjects and bill for them in SparkyInvoices, you already know the annoying part isn't the tracking — it's the handoff. You finish a project phase, open a spreadsheet or a sticky note, copy hours and rates line by line into an invoice, and hope you didn't fat-finger a number or bill the same hour twice because you forgot you'd already invoiced it last month.
That handoff is exactly what the sync between SparkyProjects and SparkyInvoices is built to remove. On Plus and Max plans, a draft invoice can pull unbilled time entries directly from SparkyProjects as ready-made line items. You open a draft invoice, open the pull panel, see the unbilled hours logged against that client's projects, select the ones that belong on this invoice, and they land as line items with descriptions, quantities, and rates already filled in.
The part that matters more than the convenience is what happens right after you pull them in. Each entry you pull gets marked as invoiced at the source the moment it's added to your invoice. That's not a display flag — it's a real state change back in SparkyProjects. Which means the same hour can't get pulled into a second invoice next month because you forgot you'd already billed it, and it can't quietly get pulled by someone else on your team working from the same project. One hour, one invoice, and the system enforces that rather than trusting you to remember.
Why "marked as billed" matters more than it sounds like it should
It's easy to skim past "marked as invoiced at the source" as a minor implementation detail. In practice it's the whole point. Without it, the pull-time flow would just be a faster way to copy numbers — you'd still be relying on memory (or a second spreadsheet) to track what's already been billed. With it, SparkyProjects and SparkyInvoices agree on the state of every hour the moment it lands on an invoice, so "did I already bill this?" stops being a question you have to answer yourself.
That matters most in the exact situation where manual tracking tends to fail: a project that runs over several months, with multiple invoices going out along the way, maybe more than one person on the team logging time against it. Picture a small consultancy running a handful of concurrent client projects, billing monthly — the kind of setup where a spreadsheet works fine for the first invoice and quietly falls apart by the third, because nobody's sure anymore which hours from March already went out on an invoice and which didn't. The sync removes that ambiguity by construction: once an hour is pulled onto an invoice, it's gone from the "unbilled" list everywhere else in the product, for everyone on the team.
It also means you can pull time in smaller, more frequent batches without worrying about overlap. There's no need to wait until a project phase fully wraps up before invoicing — you can pull whatever's unbilled today, send that invoice, and pull the rest next time, without a spreadsheet reconciliation step in between.
How to do this in SparkyInvoices
To pull billable time into an invoice yourself: open the client's draft invoice (or start a new one and pick the client first — their details get copied onto the invoice automatically). From the draft, open the pull panel for billable items. If your plan includes cross-product sync, you'll see unbilled time entries logged against that client's SparkyProjects work, alongside unbilled expenses from SparkyExpenses if you use that too. Select the entries you want, and they're added as line items with the description, hours, and rate already filled in — and marked as billed at the source right away, so they can't be pulled again onto a future invoice by mistake.
From there it's a normal draft invoice: add or adjust any other line items, check the totals (GST splits into CGST/SGST/IGST automatically where applicable), and send it when it's ready. Sending locks the invoice from further edits and notifies the client through SparkyPay.
This kind of cross-product sync — clients from SparkyContacts, time from SparkyProjects, expenses from SparkyExpenses, all landing in one invoice without re-keying anything — is one of the bigger reasons people run more than one Sparky product together instead of stitching separate tools with a spreadsheet in between. You can see the full feature set, including what's available on which plan, at the SparkyInvoices features page.
If you're only using SparkyInvoices on its own right now, the pull-time flow is a genuinely good reason to look at SparkyProjects too — it turns "remember to invoice for that phase" from a monthly chore into a five-minute review of what's already sitting there, unbilled, waiting for you to select it.