I use https://github.com/nuex/t, which generates ledger timelog entries as documented here http://www.ledger-cli.org/2.6/ledger.html#Using-timeclock-to.... I've tracked approx 2000 billable hours using this method over the last couple of years. When I invoice, timelog entries are archived into a separate file, so my active timelog ledger file records unbilled time.