使用Consolibyte QB PHP SDK修改收款单报3170交易不平衡问题
QuickBooks 3170错误「Transaction not in balance」原因排查
绝大多数情况为QBXML编写错误导致
常见错误场景如下:
- 交易金额借贷不匹配:QuickBooks所有交易强制要求借贷方总额相等,修改收款单时如果调整了总收款额、发票分配金额、折扣/抹零金额任意一项,没有同步调整对应关联项保持总额一致,就会触发该报错
- 部分收款分配逻辑错误:修改部分收款的分配条目时,出现「已分配到发票的金额总和+未挂账金额+折扣/手续费金额」不等于收款单总金额的情况
- 关联交易标识异常:请求中未携带对应收款单最新的
EditSequence值,或是关联的对应发票已经被修改、作废,导致QuickBooks内部计算关联交易总额时不匹配 - 多币种汇率错误:外币收款场景下,修改请求中填写的汇率与原交易汇率、QB系统当期汇率冲突,导致本位币换算后两边金额不平衡
极小概率为QB Desktop 2021本身故障
仅当你手动在QB界面修改同一张收款单也出现相同报错时,才需要排查以下情况:
- 版本补丁未更新:QB Desktop 2021 R12之前的版本存在已知bug,修改收款单时系统自动计算的四舍五入差异会触发不平衡报错,升级到最新补丁即可解决
- 公司文件损坏:QB公司文件本身存在数据损坏时,也可能出现正常修改请求触发平衡报错的情况,运行QB自带的公司文件修复工具验证即可
快速验证方法:直接在QuickBooks Desktop界面手动修改目标收款单,填写和你QBXML请求里完全一致的参数,如果可以正常保存,即可100%确定是QBXML编写问题。
内容的提问来源于stack exchange,提问作者adang
相关产品推荐
相关产品推荐

