You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP经Consolibyte DevKit同步存款到QuickBooks Desktop报3180错误

错误原因说明

你遇到的3180错误和官方示例代码跑不通的核心原因是对DepositAddRq接口的适用场景理解偏差:
接口中<DepositLineAdd>节点下传<PaymentTxnID>的用法,仅用于把「待存款付款列表」中已存在的收款记录,打包合并为一笔银行存款,完全不是用来在银行账户寄存器中直接录入收支的接口。

待存款付款列表里的记录有严格的生成规则:只有你之前通过ReceivePaymentAddRq创建收款单时,将存款目标账户指定为Undeposited Funds(未存资金账户),且该收款单还没被关联到任何已保存的存款单中,才会出现在这个列表里。你传入的测试ID要么是随便编造的无效值,要么对应的收款单根本没进入未存资金账户,自然会触发报错。

匹配你需求的正确实现方案

你要模拟的Banking > Use Register路径下选账户直接录收支的操作,不需要用带PaymentTxnID的存款逻辑,按收支类型选对应接口即可:

  • 直接录入存款/收入记录
    调用DepositAddRq时,去掉<DepositLineAdd>下的<PaymentTxnID>节点,直接传入对方关联科目、金额、备注信息即可,参考请求结构:
<?qbxml version="2.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <DepositAddRq requestID="自定义请求ID">
            <DepositAdd>
                <DepositToAccountRef>
                    <FullName>目标登记账户名</FullName>
                </DepositToAccountRef>
                <Memo>整笔记录总备注</Memo>
                <DepositLineAdd>
                    <AccountRef>
                        <FullName>分录对应的关联科目名(比如销售收入科目)</FullName>
                    </AccountRef>
                    <Amount>存款金额(正数)</Amount>
                    <Memo>单条分录备注</Memo>
                </DepositLineAdd>
                <!-- 多笔分录可追加多个DepositLineAdd节点 -->
            </DepositAdd>
        </DepositAddRq>
    </QBXMLMsgsRq>
</QBXML>
  • 直接录入付款/支出记录
    调用CheckAddRq接口即可,不需要走存款类接口。如果是不需要打印实体支票的直接账户支出,把<IsToBePrinted>设为false,指定支出账户、对方科目、金额、备注,保存后的效果和你在寄存器里手动录付款完全一致。
补充:打包待存收款场景的前置要求

如果你的业务场景是把零散收款合并存到银行账户,必须先满足两个前置条件再调用DepositAddRq传PaymentTxnID:

  1. 前置创建收款单时,<DepositToAccountRef>必须指向Undeposited Funds账户,不能直接指定最终银行账户,否则收款不会进入待存款列表
  2. 传入的<PaymentTxnID>必须是未被其他存款单关联过的有效收款单交易ID,不能使用虚构的测试ID。

内容的提问来源于stack exchange,提问作者Prompt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:30:53