Same here.  I'm currently writing a Xero request queueing system using Celery and Django which is designed to take care of rate limiting as well as supporting callbacks.  

If you check the link in the PR description, adding `summarizeErrors=false` makes Xero return a status (ok, warning, or error) for each object sent.  Successful and failed objects can both be returned, though it is up to the caller to parse through the returned data.  A side effect is that the request will return 200 instead of 400 though.