@danfairs turned me onto this:
FreeAgent Central rocks. http://bit.ly/8QXZZe (my referrer code, we both get 10% off). Not sure about US support tho.
With discount, $18/month or $180/year with unlimited users. (for comparison, Harvest is $22/month for just the two of us, and has no bank account features; it's great for what it does do.)
We've decided to use this one, it's a software-as-a-service with a web interface and growing REST API.
- FreeAgent Central (FAC): http://freeagentcentral.com/
- Get Satisfaction Forums (very useful): http://community.freeagentcentral.com/
- FAQs: http://www.freeagentcentral.com/support/faqs
- Knowledge Base: http://www.freeagentcentral.com/support/knowledge-base
- Company Blog: http://www.freeagentcentral.com/central
We can track time with timeslips with projects and tasks; assemble them into invoices; track payments, expenses and bills; and reconcile these with our bank accounts (including uploading statements).
This is a more detailed write up in the comparison overview. These will be covered in turn. Not sure if I should break out problems into their own section or discuss them inline.
Contacts may define a person (First and Last name) or Organization, billing email address and other details.
Contacts have projects associated with them. When you create an invoice for a project (and task) it will by default be sent to the contact address.
I would expect a client (organization) would have multiple contacts. I need this since I have to email and CC several people for invoices. There doesn't seem to be a hierarchy that models this. If you create multiple people, each with the same Organization, you will just see that Organization repeated several times when you try to select a "Client Contact" for a new project. I don't know what the workaround is.
You can create Contacts then assign them Projects and under those create Tasks. You can fill in timeslips for each Project and task. These are then used to create invoices.
One of us detailed requirements that may not be met by the timeslips or widgets as they are:
- quickly chop and change between tasks (e.g., 2 minutes per task)
- if we assign the wrong task to some work, need to be able to easily re-assign the work to the correct task
- we have a discount schedule that requires us to use different rates after a certain number of hours are worked
- track time even without laptop access: an iPhone/Android accessible web site (like Harvest's) would be acceptable
If this can't be done with FreeAgent we may need to use something external like Harvest or Billings but this is clearly suboptimal: we'd have to transfer the data into timeslips or invoices. We'd still use FreeAgent for expenses, bills, invoices, bank accounts.
Projects vs. Tasks vs. Invoices
Projects can define default billing rates; tasks cannot.
For reasons explained under Invoices, I set it up so there's a single Project (I consider this a Contract) for my client, and then multiple tasks.
Time Tracking Widgets
There's an OS X FreeAgent Widget at http://interblah.net/freeagent-widget
Domain: mycompany (not mycompany.freeagentcentral.com) Email: firstname.lastname@example.org Password: ......
If you hit the arrow on the front it takes you to FAC timeslips, so the auth is working. However, the Projects and Tasks are not populating from FAC and I see nothing in the Console system.log about this.
You must first Enable the API access in FAC via a link under Settings on the top of the page. Then the widget will be allowed to query the API by the RESTful interface.
TimePost is a $39 widget which saves data offline but can publish to FreeAgent (and Harvest and others). I haven't tired it.
Select a "Client Contact" (caveat BUG about multiple contacts with same Organization name), then a Project/Contract.
One of my clients likes the invoice to aggregate per-task charges but list each individually, and I can do this with Add Unbilled Time: Group Timeslips by Task. This is another benefit of treating the Project as a Contract and ascribing work to individual tasks.
You can record notes like "ticket #42" on each timeslip and then itemize timeslips in the Invoice if you want to show them to the client. Or you can list ticket numbers in an invoice-wide comment if you don't want to itemize timeslips.
My first invoice had our Bank and Account number on it. This might be useful if your client can pay you by electronic transfer, but ours don't. Under Banking, <my checking account>, uncheck "Show these details on Invoices". We need those numbers to import OFX files but don't have to reveal them on the invoice.
BUG: Decimal vs. HH:MM
You can record time in decimal like 3.7 but FAC converts it to hours:minutes like 3:42 on invoices. This is not acceptable to at least one of my clients. I'm not sure how to work around this; I'm certainly not keen to manually create invoices, listing something like "3.7 (units) of Service". There are other users with this issue, and statement that say they're looking into it but no resolution in a year these have been open.
WORKAROUND: After creating the invoice (I used "group by task"), you can edit each task line and change the Hours unit to Services. At least this lets you send your client something decimal like:
Quantity | Details | Unit Price | Subtotal 42.6 Services | Aroma Daemon TNG | 100.00 | 4260.00
BUG: date range
I would have expected to specify a time period to collect timeslips but FreeAgent just gathers all tasks with un-invoiced hours up to the "Invoice Date" which defaults to today. You can restrict it to an end-date such as the end of the previous month by setting the Invoice Date to the last day of the previous month, and it will then collect just the timeslips up to that point; you will have to then change the date on the generated invoice to match the date you actually create the invoice.
BUG: multiple projects
I haven't gotten my head around this but found it very confusing when trying to put hours for multiple projects on a single invoice. It seemed to overwrite the previous project's name with the last one mentioned, even though it did accumulate hours for both projects. This seems a known issue in the forums but isn't something FreeAgent seems interested in fixing; I don't understand how I'm supposed to think about it. My workaround is to create a single per-client project (e.g., IT-Support for ClientX) and then create "tasks" under it (e.g., Django Development, Plone Development).
Bills require you to create a new contact for the vendor.
TODO: I assume you enter expenses paid with business accounts (e.g., credit/debit card, check) as Bills. For a Debit, I presume you'd then mark it paid immediately. For bills paid with a business check, I presume you'd mark it paid when you write the check. I'm expecting both of those to be resolve when you reconcile your banking statement.
This is for out-of-pocket expenses paid with personal funds, not business accounts. They are tracked per the employee who paid the expense. Personal expenses are not reconciled like business accounts, they're outside the purview of the FreeAgent accounting system.
The FAQ suggests that periodically the business account reimburses the employee. The business account side of the reimbursement would be reconciled later, as usual.
FreeAgent has done a great job here.
We have a business checking account with a debit card. We also have a different firm's VISA credit card. We can upload transaction history from both banks into their respective accounts, then reconcile against recorded Bills.
Importing Bank Transaction Statements
FreeAgent can import our check/debit account's OFX exported data. I first had to look at the file and identify its BANKID and ACCTID and set them in my FreeAgent Checking account's "Account Number" and "Sort/Bank Code" respectively. Very nice. It seems like it tries to detect duplicates -- in OFX, but not CSV -- but I won't guarantee that.
After doing this with the OFX file, I had a pretty graph of balance over time and a list of transactions that are unmatched that I need to resolve.
My business checking account transaction downloads don't go back to year beginning for statement downloads :-(. I have an old OpenOffice formatted spreadsheet but it couldn't import it. The format the checking account uses is, as a CSV:
Posted Date,Serial Number,"Description",Amount,CR/DR 06/03/09,0000000000,"FISHY RESTAURANT DBT CRD 1021 06/03/09 00016952 WASHINGTON DC", 000000046.72,DR 06/04/09,0000000000,"DEPOSIT", 000007069.20,CR
We support multiple CSV formats but the simplest is that used by AMEX which just has three fields: Date, Amount, Description. There is no header, the date format is dd/mm/yyyy and the description is in double quotes. Here's an example:22/05/2008,29.38,"FreeAgent Central Subscription" 22/05/2008,-15.99,"Remittance"
With some naive spreadsheet hacking, I was able to remove unwanted columns, re-arranging others, and ensuring the expenses were shown as negatives and payments as positives, and change the dates to UK-style DD/MM/YYYY instead of US-centric MM/DD/YYYY. I was then able to import all my earlier months' transactions.
I'm most positive duplicates are not detected so if you do this twice, you're in for a world of hurt. I had a month overlap between the OFX data and the CSV data and it wasn't fun.
There is an Undo Previous Upload feature. There are multiple levels of Undo, which was a life-saver once I found it.
I can also import my credit card account's export format "Quicken and Microsoft Money - QIF file (4 digit)" without problem. Sadly, they only go back 3 months... guess they can't afford real computers.
Explain Transactions: First Blood
I had to do a painful initial import of a year's worth of transactions from statements to setup the account initially; it took a very long day to do a year's worth of about 400 transactions. I clicked each of the transactions and assigned an expense type to each (e.g., Books, Staff Training).
Payment from checking to visa was done by assigning it to Money Out -> Transfer to Another Account.
To accommodate payments, I created new fake invoices, then marked them sent then marked them paid. I had to be careful with the invoice and payment date so the Explain feature would find them and offer them as explanations I could chose. It even handled deposits that were for multiple invoices, a "split" transaction.
For payments that had sufficient details, it found other transactions to the same payee, and offered to allow me to use the same Explanation category
BUG: no user-setable Explanation Categories (e.g., I couldn't separate my "Health Insurance" from my "Liability Insurance", but had to use the generic "Insurance" category. There are plenty of categories to chose from, so this wasn't too big a deal. Being able to change categories -- especially after some were in use -- could result in foot-shooting.
Explain Transactions: Ongoing
I'll need to see how already-entered transactions (invoices, bills, payments) get reconciled with a newly uploaded transaction history from my bank. Hopefully the Explain Transactions reconciliation will be easier since it should be able to link up with the pre-existing transactions.
This looks really really good. Especially if you're an accountant. I'm really hopeful I can just give these reports to our accountant and they can quickly prepare our taxes.
A colleague who is an accountant says it looks like the kind of data she would need and want. That's reassuring.
There are reports for Yearly and Monthly Profit and Loss, Balance Sheet, Trial Balance, Capital Assets, Journal Entries [what's that?], and a detailed Transactions grouped by type.
FreeAgent seems very nice, a fine mix of features. My only concern is there seems to be quite a number of bugs/misfeatures reported in the forums which have been unresolved for quite a long time. Many have answers from FreeAgent developers saying that they're looking into it, or it might come in a release, but these comments are a year old. I'm concerned that FreeAgent may not be staffed up enough to handle the common use cases of their growing customer base.
If the time tracking features are not sufficient for our staff, for example, it might be worth looking into Xero again. They don't have time tracking at all but the rest of their product looks a bit more sophisticated.