I've only been evaluating Books for a few days, but so far I love what I see. In looking for a new invoicing/accounting service, at the top of the requirements list was a full-featured API that has feature parity with the native service front-end. I was happy to see that virtually everything that the Books app itself can do (minus reports and dashboard summary info), can be done from the API. I was sold.
However, my main disappointment was the fact there is no way to use the API in a test mode that can quarantine all data created by the API during development from the live production data. This raises the following problems:
Before going live with Books: How can I easily erase the all customers, estimates, invoices, payments, etc. I create during development and testing?
Once live data is in Books and accounting staff is using it daily: How do I integrate new API functionality into our app and test it without mixing our production data with new garbage data I create while testing a new feature?
I'm a big fan of how Stripe handles this, with a separate testing and live environment - making it simple to keep your production data separate from your dev/testing data. Because this is really only relevant to developers who want to make use of your API, perhaps this would best be an opt-in feature. In the settings menu, you could have a 'Create mock organization', that would clone your current org and all its data, and then you can use that new organization ID for all your dev API calls. When you are done testing, just delete the mock org. They would be on-demand and disposable testing environments.
That's just one idea for how you could implement it. But really, with such a killer API you really need to create a way for developers to use it in a testing capacity.
What do you think?