Intuit Quickbooks Online has a decent API that allows for CRUD operations on its data, but there is a glaring shortcoming.
For those accusstomed to working with NetSuite custom fields and the SuiteTalk API, you know that the list of custom fields on various data objects can get long. I've seen NetSuite customers that have 100 or more custom fields on sales transactions (Sales Orders and Invoices are two of the most commonly customized data objects in NetSuite). When you query a Sales Order in NetSuite, you can see each and every one of those custom fields in the XML returned by SuiteTalk.
Quickbooks, however, limits the return of custom fields on your objects to just 3 fields. You can have 10 custom fields, but you only get to see 3! This is incredibly short sighted and makes working with Quickbooks custom fields difficult to say the least.
At this time, I don't see a workaround for this, but if I find one, I'll post it here.