ERPNext通过REST API实现付款对账的问题咨询
ERPNext通过REST API实现付款对账的问题咨询
我之前也帮朋友排查过类似的ERPNext API对账问题,你遇到的这种“调用返回成功但实际没生效”的情况其实挺常见的,咱们一步步拆解来看:
一、核心Doctype选择
直接对应手动对账操作的是Payment Reconciliation这个Doctype,这是专门用来处理发票和付款匹配对账的单据类型。另外,你也可以通过创建Payment Entry(付款单/收款单)来间接完成对账,这种方式更偏向于从付款动作出发关联发票,很多场景下用起来更灵活。
二、必须传递的关键字段(触发对账生效的核心)
不管用哪种Doctype,有几个字段是绝对不能少的,而且要确保参数正确:
- 对于
Payment Reconciliation:company:明确指定操作所属的公司,这是ERPNext多公司架构下的必填项party_type:比如Customer(客户)或Supplier(供应商),对应你要对账的对象类型party:具体的客户/供应商名称或系统IDreconciliation_details:数组格式的明细,每一项需要包含reference_type(如Sales Invoice/Purchase Invoice)、reference_name(目标发票的名称或ID)、allocated_amount(本次要对账的金额)- 最重要的:一定要加
submit: 1(或者布尔值True),只保存单据(docstatus=0)不会触发对账逻辑,必须提交单据(docstatus=1)才会更新发票的付款状态
- 对于
Payment Entry:payment_type:选Receive(收款)或Pay(付款)party_type和party:和上面的要求一致references:数组格式,每一项关联发票信息,包含reference_doctype、reference_name、allocated_amount- 同样要传递
submit: 1来提交单据,生效对账
三、排查小技巧
就算API返回“成功”,也建议你做这几步检查:
- 调用API后,再请求获取该单据的详情,查看
docstatus字段的值:1代表已提交,0代表仅保存,只有1才会生效 - 核对
allocated_amount和发票的未付金额:如果分配金额大于发票未付金额,或者金额不匹配,系统可能不会报错,但也不会完成对账 - 检查权限:确保你用的API账号有
Payment Reconciliation或Payment Entry的提交权限,有时候权限不足会导致单据无法提交,表面上API返回成功但实际没操作
内容来源于stack exchange




