You are right: FreeAgent (and the API) should support changing the category of an invoice, even one that is associated with multiple projects. However, there are circumstances where you will be unable to do this. The error message that you’re seeing is from one these circumstances; FreeAgent provides “locks” on attributes to prevent unintentional accounting effects.
Some invoice and invoice item attributes will automatically lock after you email an invoice, mark it as sent or write it off. This is to prevent unintentional accounting problems.
Are you able to check the invoices for the invoice items you are trying to change and see if either the invoices are sent or written off?
Let me know if not, and we can see if there is something else happening here.
Hmm, that is interesting. If you’d like, you can message me directly by clicking on my avatar, and then on “Message”) to send me the name of the your API application and we can dig in further.
For the invoices that you find are failing directly on the API, are you able to update those via the web interface?