RXed AI News

AI news with a spine.
An afternoon Workflow v1.0 · 2026-07-24

The billable-hours tracker: catch every hour and bill it, without the per-seat SaaS

Log time in two clicks, turn it into an EN 16931 invoice you own — no per-user Toggl or Harvest fee

Setup: An afternoon (~2-4 h) Running: EUR 0-8/mo · software EUR 0 Time saved: High — the five-minute tasks that never reach a manual timesheet get billed, and the EUR 25-40/month per-team tracker fee disappears Built with: Kimai + Solidtime + ActivityWatch
InvoicingReportingBookkeepingSelf-hostedPrivacy
For: Consultants · Freelancers · Small agencies · Trades & contractors · Any business that invoices
Version history
v1.0 · 2026-07-24 — First release, built on Kimai (AGPL-3.0) with Solidtime as the modern alternative and ActivityWatch as the passive-capture companion. Written for the Belgian B2B e-invoicing mandate live since 01/01/2026.

If you sell your time, your revenue is only as complete as your timesheet — and the hours that go missing are always the small ones. This is the self-hosted way to catch every one and turn it into an invoice you own, landing the same year Belgium made structured e-invoices mandatory for B2B.

The problem

Bill by the hour and you leak money in five-minute pieces: the quick call, the two-line email, the fix you did before lunch and forgot. Each one is small; over twelve months they add up to real work you did and never charged for. The usual fix is a tracker like Toggl or Harvest. It works — but it charges for every person on the team, every month, and keeps your client hours on someone else's server. And there is a second reason the tool you pick now matters more than it did a year ago: since 1 January 2026, Belgian VAT-registered businesses must exchange structured e-invoices for domestic B2B — EN 16931, over the Peppol network — and a plain PDF no longer counts as an invoice for those transactions. So the tool has to do two jobs at once: capture the hour, and produce an invoice in the format the law now requires.

The architecture

A quick call with aclientAn hour on the jobA short email or fixlogged in two clicks — phone, laptop or desktop appKimai — your time-and-billing book, onyour own boxevery hour tagged to the right client and job, markedbillable or notat month end, one clickA ready invoice per client, builtfrom the billable hoursA structured e-invoice (EN 16931) forthe Belgian B2B rulesA report: hours per client andproject, and what is still unbilledThe five-minute tasks that used to vanish now land on the invoice — andthere is no per-person fee, ever.
[ You / your team ] → log time in two clicks (web, phone, desktop)
        ▼
[ Kimai or Solidtime (self-hosted, Docker) ]
        │  every entry tagged: client, project, billable yes/no, rate
        │  optional: ActivityWatch on your laptop reconstructs a forgotten afternoon
        ▼
[ Month end — one click ]
        ├─ invoice per client, built from the billable hours (PDF / DOCX)
        ├─ EN 16931 structured e-invoice (XRechnung / Factur-X) for B2B
        └─ report: hours per client and project, and what is still unbilled

Peppol note: the structured file is generated here. Sending it over Peppol still goes through a certified access point.

One box, one container plus a database. The tracker owns the truth about who worked on what; the invoice is a view of the billable slice of that truth. Keeping capture and billing in the same tool is the point — the moment those two live in separate systems, hours fall down the gap between them.

Tool choices — and why

Kimai (AGPL-3.0, 4.8k stars, pushed 14/07/2026) is the default pick when billing is the goal, not just tracking. It is built for exactly this chain: customers, projects, activities, per-project or per-user rates, a billable flag on every entry, and invoices generated straight from the logged hours in PDF, DOCX, ODS or XLSX. It also has the piece that matters in the EU now — an e-invoicing option in its invoice templates, with a community XRechnung (EN 16931) template you can drop in. It runs on boring PHP + MySQL that any host can run, and the official Docker image ships the database with it.

Solidtime (AGPL-3.0, 8.8k stars, pushed 13/07/2026) is the modern-feeling option. The interface is closer to a commercial SaaS app than anything else in this space, it handles billable rates and per-project reporting, it has desktop apps, and it imports straight from Toggl or Clockify — so a team already on one of those can move without losing history. The honest trade-off: it is lighter than Kimai on in-app invoice generation and EU e-invoice formats. Pick Solidtime if a clean daily-use experience is what gets your team to actually log time; pick Kimai if the invoice at the end — including the Belgian format — is the thing you cannot compromise on.

ActivityWatch (MPL-2.0, 18.3k stars, pushed 16/07/2026) is the optional capture companion, and it solves the real failure mode: nobody starts the timer. It runs locally on each laptop and records which application and window was in the foreground, so a forgotten Tuesday afternoon can be reconstructed from the log instead of guessed. Two honest caveats: it stays on the machine (no cloud, which is the point), and it tracks activity, not intent — it can tell you that you spent 40 minutes in a client's document, not that the 40 minutes were billable. You still decide. Treat it as an aide-mémoire feeding Kimai, never as the source of truth.

Monthly cost. Software: €0 for all three. Hosting: Kimai or Solidtime need a small server; one VPS at ~€5–8/month runs the whole thing, or €0 if it rides on a box you already have (the same one running your invoice chasing or inbox triage from the other blueprints). ActivityWatch runs on your own laptop and costs nothing. Compare that with the tools it replaces: Toggl Track and Harvest charge roughly €9–12 per user per month (verify current rates), so a three-person team is €25–40/month, forever, for the tracker alone. Clockify has a free tier, but invoicing and the richer reports sit behind its paid plans.

Setup outline

1. Deploy Kimai from the official Docker image behind HTTPS on your own subdomain — track.yourbusiness.example. The compose file brings its own database; you do not wire one up by hand.
2. Model reality before logging a single hour: customers, projects, activities, and an hourly rate per project or per person. Decide the default billable flag.
3. Add your team as users with their own logins and rates. One person's hours at the wrong rate is a wrong invoice.
4. Log time daily, not weekly. The timer or a two-field manual entry takes seconds; a Friday reconstruction is exactly where the small tasks die. This habit is the whole game — the software only supports it.
5. (Optional) Install ActivityWatch on each laptop as the safety net for the afternoons someone forgets. It stays local; nothing leaves the machine.
6. Build one invoice template: issuer, VAT ID, bank account, tax rate, payment terms. Kimai ships PDF, DOCX and spreadsheet templates; the community template repo has the XRechnung XML for EN 16931.
7. For the Belgian B2B mandate: generate the EN 16931 invoice in Kimai, then transmit it through a certified Peppol access point. Kimai makes the structured file; the access point puts it on the network. These are two separate steps — plan for both.
8. Month-end ritual: filter to billable, not-yet-exported entries per client, create the invoice, mark the entries exported. Marking exported is what stops the same hour being billed on next month's invoice too.

Pitfalls — the real ones

Daily logging, or none of this works. The tool cannot capture what you never entered. The leak you are trying to close is a habit, and the software only makes the habit cheap — it does not create it. If the team will not log same-day, ActivityWatch's passive log is your fallback, not your plan A.
Kimai generates the e-invoice; it does not send it over Peppol. The EN 16931 XML is produced inside Kimai, but delivering it to a Belgian B2B customer still needs a certified Peppol access point — usually a few euros a month, or bundled with your accounting package. "Self-hosted" does not mean "Peppol-connected." Confirm your access-point route before the mandate bites on a real invoice.
AGPL is fine for running your own shop. Using Kimai or Solidtime internally to bill your own clients triggers no licence obligation. The AGPL network clause only applies if you offer a modified version to third parties as a service — which billing your own hours is not.
Captured is not collected. This blueprint gets the hour onto an invoice; getting that invoice paid is the next job — see the late-invoice chaser in this library. One box can run both, and they share the same client list.
Rates change; past entries should not. Kimai stamps the rate at the moment you log the entry. Raise a project rate and old hours keep the old rate, which is correct. But check the numbers after any rate change, so a month does not quietly go out at last year's price.

Verified repos

Kimai — AGPL-3.0, 4.8k stars, active (July 2026)
Solidtime — AGPL-3.0, 8.8k stars, active (July 2026)
ActivityWatch — MPL-2.0, 18.3k stars, active (July 2026)

Get the next blueprint as it publishes — free, practical, verified tooling only.

Subscribe · Want this audited or extended for your business? DM @RXed_EU

Get this blueprint tailored to your business — free

Tell us what you run and where. We research your sector's specifics — rules, tools, customer habits — and send you a version of this blueprint rebuilt for your situation, usually within 24 hours.