I have been using Harvest for the past 3+ years and it’s quite good IMHO. You can integrate PayPal or Stripe to take online payment, and invoices are automatically marked as paid when paid online. Also integrates with a variety of other apps and also features an API if you want to build your own app to make use of your data in some unique way
The time tracking component works well. Projects can be set up Fixed Fee or Time and Materials, when recording time you assign it to a project and task. Each task you set up with billing rate, so when it comes time to invoice by time and materials you simply pick the project and create invoice from unbilled hours or date range, etc.
Reporting is also quite good so you can quickly get a handle on some metric you might be interested in.
Cost is per user per year, but quite reasonable compared to some other options I considered. Their Support has been good also the few times I needed it.
Jacob Wall