Xero API问题:无法删除发票全部行项目
Xero API 删除发票所有行项问题排查与解决
我之前也踩过Xero API这个坑!你说的情况太真实了——发票行项的新增、更新,还有单个/多个行项删除都能正常跑,但传Invoices.LineItems: []空数组就是清不掉所有行项,最后那一个怎么删都没反应。
问题本质
这其实是Xero API的一个硬性限制:发票必须至少保留一个行项,哪怕是金额为0的占位行项也不能完全清空。这就是为什么空数组请求无效,且最后一个行项始终删不掉的原因。
可行的解决方案
如果确实需要实现“清空所有有效行项”的效果,别传空数组,而是传入一个金额为0的占位行项来覆盖原有所有行项,示例请求体如下:
{ "Invoices": [ { "InvoiceID": "你的目标发票ID", "LineItems": [ { "Description": "Placeholder for empty invoice", "Quantity": 1, "UnitAmount": 0, "AccountCode": "你的默认收入账户编码" } ] } ] }
之后如果要添加有效行项,直接更新这个占位行项或者替换成新的行项数组就可以了。
测试验证
你可以在Xero API Explorer里用这个请求体测试,会发现它能成功替换掉所有原有行项,达到近似“清空”的效果。这是目前官方默认的 workaround,毕竟Xero不允许发票完全没有行项存在。

内容的提问来源于stack exchange,提问作者KAR
相关产品推荐
相关产品推荐

