报销单费用更新接口

说明

该接口用于进行报销单费用更新,可以用于将已关联报销单的费用更新.

注意事项

  1. 该接口为部分失败,在进行费用更新时,如果一次更新5条费用,其中一条失败,不会影响其他四条数据的正常更新。
  2. 每次更新最大值为10条费用,导入过多费用时,每刻会提示费用超过支持最大值10条。
  3. 更新的费用需要满足:a.更新费用已关联报销单 b.费用关联的报销单属于草稿状态或驳回至可编辑状态.
  4. 费用更新传值,若不传则默认复用原费用对应值,传则按最新值进行更新。(expenseTypeBizCode费用类型改变时,则需要传全量值)
  5. 以下特殊费用字段全覆盖且以最新传值进行更新,不复用旧值: a.allocationRuleBizCode、allocationList(分摊信息) b.customObject(自定义字段信息) c.corpExpense(是否对公费用) 6.根据返回的integrity可以识别该费用是否必填项传入完整:
      - true:所有必填项均传入成功 
      - false:存在必填项未传入
    
    7.对公费用场景暂不支持:到票核销、支付前期已到的发票 8.该接口不支持费用金额拆分。即使传入 splitByAmount / subExpenseList 也不会被处理(不执行拆分),相关字段不生效。如需使用金额拆分导入能力,请使用创建接口 POST /api/openapi/receive/expense

接口地址

/api/openapi/receive/expense/update

请求类型

POST

请求参数

参数说明

在各个表单中,分为系统字段、业务字段及普通字段,系统字段在表单配置界面中不会显示,如expenseTypeBizCode 字段。业务字段及普通字段,可以通过单据配置界面中的开发者模式来查看该字段导入时的的key值,其中普通字段的key值,也可以在界面中进行配置修改

字段名称 字段类型 是否必填 字段说明
employeeId String(25) 需要导入的对应员工的工号
expenseList List<expenseList> 费用列表,根据费用表单配置,分为对公费用参数和对私费用参数

expenseList费用列表

对公费用参数说明

字段名称 字段类型 是否必填 字段说明
bizCode String 费用编码(用于更新费用的主键)
consumeAmount AmountInput 付款金额 系统内对应:到票全部支付 '付款金额'
预付未到票 '付款金额'
到票核销 '付款金额'
到票部分支付或不支付 '付款金额'
支付前期已到的发票 '付款金额'
expenseTypeBizCode String 费用类型业务编码,该字段若修改则需要全字段更新
corpExpense boolean 是否对公费用,需要填写true
corpType String 业务场景:
ALL_RECEIPTS(全部到票)
NO_RECEIPT(预付未到票)
RECEIPT_PAY_SOME(到票部分支付或不支付)
corpExpenseResponsibleEmpIds List<String> 责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填)
nonReceiptAmount AmountInput 未到票金额(预付未到票场景)
receiptAmount AmountInput 本次到票金额(到票全部支付/到票部分支付或不支付/到票核销 三种场景)
forecastReceiptDate Long 预计到票时间(预付未到票场景)
consumeLocation CityInput 消费地点.不传则复用旧值,传空对象则清除.
receiptDate Long 到票时间(到票核销/到票部分支付或不支付 两种场景)
tradingPartnerBizCode String 往来单位业务编码
customObject CustomObject 自定义普通字段.不传则复用旧值,传值则全覆盖.
allocationList List<ExpenseAllocation> 分摊列表(支付前期已到的发票 场景不支持分摊).不传则复用旧值,传值则全覆盖
allocationRuleBizCode String 分摊规则业务编码,分摊列表不为空则必填;
noTaxSuiteTemp NoTaxInput 不含税组件(只有对公费用预付未到票场景支持). 不传则复用旧值,传空对象则清除.
receiptMedium String 收据介质。保证金/押金费用有效,可选值:PAPER(纸质)、ELECTRONIC(电子)。不传复用旧值,传空清空
receiptAttachments List<Attachment> 收据附件。保证金/押金费用有效,单次最多 30 个;不传复用旧收据附件,传空数组清空收据附件

预付款类型说明

当费用为 corpExpense=truecorpType=NO_RECEIPT,并且费用表单配置了“预付款类型”组件时,预付款类型通过 customObject 传入。更新接口中 customObject 为全覆盖字段:传入时会按最新值覆盖原费用自定义字段,不传则复用原值。

字段 key 以费用表单中“预付款类型”组件的业务编码为准;以下示例使用 noReceiptSubType。更新接口推荐在对象中传入预付款类型选项业务编码。

示例:

{
  "customObject": {
    "noReceiptSubType": {
      "bizCode": "RDD25120412SSM5C0"
    }
  }
}

Attachment

字段名称 字段类型 是否必填 字段说明
url String 附件下载地址
fileName String 文件名
fileType String 文件后缀,如 pdf、jpg、png

到票核销记录参数说明 ExpenseDeductionTemp

字段名称 字段类型 是否必填 字段说明
recordExpenseCode String 被核销费用的唯一编码(费用导入接口返回的expenseCode 或 报销单详情返回的被核销费用的code)
deductionAmount AmountInput 核销金额

支付前期已到票记录参数说明 ExpenseDeductionTemp

字段名称 字段类型 是否必填 字段说明
recordExpenseCode String 被核销费用的唯一编码(费用导入接口返回的expenseCode 或 报销单详情返回的被核销费用的code)
deductionAmount AmountInput 支付金额

对私费用参数说明

字段名称 字段类型 是否必填 字段说明
bizCode String 费用编码(用于更新费用的主键)
consumeAmount AmountInput 费用金额
expenseTypeBizCode String 费用类型业务编码
corpExpense String 是否对公费用,需要填写false
consumeTime DateInput 消费时间
consumeLocation CityInput 消费地点.不传则复用旧值,传空对象则清除.
customObject CustomObject 自定义普通字段.不传则复用旧值,传值则全覆盖.
trainSeatStr String 火车席位:
BUSINESS-商务座
SPECIAL-特等座
FIRST-一等座
SECOND-二等座
SOFT_SLEEPER-软卧
ADVANCED_SOFT_SLEEPER-高级软卧
HARD_SLEEPER-硬卧
SOFT-软座
HARD-硬座
STANDING-无座
不传则复用旧值,传空串则清除.
airClassStr String 飞机舱位: FIRST-头等舱
BUSINESS-商务舱
ECONOMY-经济舱
不传则复用旧值,传空串则清除.
shipClassStr String 轮船舱位: VIP-贵宾舱
SPECIAL-特等舱
FIRST-一等舱
SECOND_A-二等A
SECOND_B-二等B
THIRD_A-三等A
THIRD_B-三等B
ECONOMY-经济舱
不传则复用旧值,传空串则清除.
allocationList List<ExpenseAllocation> 分摊列表.不传则复用旧值,传值则全覆盖
allocationRuleBizCode String 分摊规则业务编码,分摊列表不为空则必填;
labourTax object 劳务费个税.不传则复用旧值,传空对象则清除.

分摊参数说明 ExpenseAllocation

字段名称 字段类型 是否必填 字段说明
allocatedAmount number 分摊金额
legalEntityBizCode String 公司抬头业务编码
coverUserNo String 承担人工号
coverDepartmentBizCode String 承担部门编码
customObject CustomObject 遵循表单配置 自定义普通字段

劳务费个税参数说明 labourTax

参数说明

不传 labourTax 时复用原劳务税和费用金额;显式传入时,系统根据本次请求的字段组合重新计算并同步费用金额。

表单能力 本次计算起点 必填字段 更新行为
未开启减除税额能力 费用金额或税后应付金额 amountTypeamount pre 为费用金额,after 为税后应付金额;未启用时减除税额按 0
已开启减除税额能力 费用金额 amountType=preamount 保持费用金额,先减除 taxDeduction 得到税前金额,再正算预扣个税和税后金额
已开启减除税额能力 税后应付金额 amountType=afteramount 表示修改了税后应付金额,按最新减除税额重新生成税后金额、税前金额、预扣个税和费用金额
已开启减除税额能力 费用金额(历史兼容模式) amountIncludeTaxDeduction 兼容字段存在时优先;行为与 amountType=pre 相同

taxDeduction 为空按 0。同时传历史兼容费用金额和 amountType/amount 时,amountIncludeTaxDeduction 优先。只修改减除税额时沿用当前主金额类型:费用金额口径使用 pre,税后应付金额口径使用 after,并按最新减除税额重新计算完整结果。

字段名称 字段类型 是否必填 字段说明
amountType String 条件必填 pre(费用金额)或 after(税后应付金额)
amount AmountInput 条件必填 pre 模式下为费用金额;after 模式下为税后应付金额
amountIncludeTaxDeduction AmountInput 条件必填 费用金额模式的主金额;存在时优先
taxDeduction AmountInput 减除税额;为空或金额为空时按 0 处理

修改税后应付金额

{
  "employeeId": "USER001",
  "expenseList": [
    {
      "bizCode": "EXPCODE003",
      "labourTax": {
        "amountType": "after",
        "amount": {
          "amount": 980,
          "currency": "CNY"
        },
        "taxDeduction": {
          "amount": 100,
          "currency": "CNY"
        }
      }
    }
  ]
}

该请求把税后应付金额修改为 980。系统先得到税后金额 880,再反算得到税前金额 900、预扣个税 20。保存结果保持 amountType=afteramount=980afterTaxPayableAmount=980,费用金额更新为 1000

仅修改减除税额

例如税后应付金额保持 8480,只把减除税额从 500 改为 800 时,继续使用 after

{
  "employeeId": "USER001",
  "expenseList": [
    {
      "bizCode": "EXPCODE003",
      "labourTax": {
        "amountType": "after",
        "amount": {
          "amount": 8480,
          "currency": "CNY"
        },
        "taxDeduction": {
          "amount": 800,
          "currency": "CNY"
        }
      }
    }
  ]
}

税后应付金额保持 8480,系统按最新减除税额重新计算:税后金额为 7680,税前金额为 9142.86,预扣个税为 1462.86,费用金额为 9142.86 + 800 = 9942.86。保存结果保持 amountType=afteramount=8480。历史费用仅查询时不会自动重算,只有显式提交 labourTax 更新才应用新规则。

参数样例

{
   "employeeId": "USER001",
   "expenseList": [
      {
         "bizCode": "EXPCODE001",
         "consumeAmount": {
            "amount": 100,
            "currency": "CNY"
         },
         "corpExpense": true,
         "expenseTypeBizCode": "EXTYPE001",
         "corpType": "NO_RECEIPT",
         "nonReceiptAmount": {
            "amount": 100,
            "currency": "CNY"
         },
         "forecastReceiptDate": 1593310000000,
         "tradingPartnerBizCode": "BIZ001",
         "customObject": {
            "CF1393": "我是单行文本",
            "remarkText": "我是单行文本",
            "detail": [
               {
                  "CF1400": "我是单行文本",
                  "remarkText": "我是单行文本"
               }
            ]
         },
         "corpExpenseResponsibleEmpIds": [
            "no001",
            "no002"
         ]
      },
      {
         "bizCode": "EXPCODE002",
         "consumeAmount": {
            "amount": 150,
            "currency": "CNY"
         },
         "corpExpense": true,
         "expenseTypeBizCode": "LPP12123",
         "corpType": "ALL_RECEIPTS",
         "receiptDate": 1603310000000,
         "tradingPartnerBizCode": "015208mk2020-08-28",
         "customObject": {

         },
         "corpExpenseResponsibleEmpIds": [
            "no001",
            "no002"
         ]
      },
      {
         "bizCode": "EXPCODE003",
         "consumeAmount": {
            "amount": 100,
            "currency": "CNY"
         },
         "consumeTime": {
            "timeRange": {
               "startDate": 1566305347895,
               "endDate": 1566305356934
            }
         },
         "consumeLocation": {
            "cityPair": {
               "departure": "110001",
               "destination": "310100"
            },
            "location": null
         },
         "corpExpense": false,
         "expenseTypeBizCode": "X001",
         "trainSeat": "SECOND",
         "airClass": "FIRST",
         "shipClass": "FIRST",
         "allocationRuleBizCode": "A222",
         "noTaxSuiteTemp": {
            "taxRate": "1",
            "taxAmount": "10",
            "nonTaxAmount": "90"
         },
         "deductionTempList": [
            {
               "recordExpenseCode": "FD230202VWW9HEL",
               "deductionAmount": {
                  "amount": 100,
                  "currency": "CNY"
               }
            },
            {
               "recordExpenseCode": "FD2302131O6J7NYE",
               "deductionAmount": {
                  "amount": 50,
                  "currency": "CNY"
               }
            }
         ],
         "payBeforeTempList": [
            {
               "recordExpenseCode": "FD230202VWW9HEL",
               "deductionAmount": {
                  "amount": 100,
                  "currency": "CNY"
               }
            }
         ],
         "receiptAmount": {
            "amount": 100,
            "currency": "CNY"
         },
         "allocationList": [
            {
               "allocatedAmount": "100",
               "legalEntityBizCode": "E11",
               "coverUserNo": "E11",
               "coverDepartmentBizCode": "E11",
               "customObject": {
                  "CF73": "1",
                  "CF54": {
                     "name": "每刻科技",
                     "bizCode": "CODE00124342",
                     "principalCodes": "MK001",
                     "value": [
                        {
                           "name": "每刻科技",
                           "bizCode": "CODE00124342",
                           "principalCodes": "MK001"
                        }
                     ],
                     "definedList": [
                        {
                           "type": "SingleTextInput",
                           "label": "业务编码",
                           "display": false,
                           "primary": false,
                           "businessCode": "bizCode"
                        },
                        {
                           "type": "SingleTextInput",
                           "label": "供应商名称",
                           "display": true,
                           "primary": true,
                           "businessCode": "name"
                        },
                        {
                           "type": "SingleTextInput",
                           "label": "负责人",
                           "display": true,
                           "primary": false,
                           "businessCode": "principalCodes"
                        }
                     ]
                  }
               }
            }
         ]
      }
   ]
}

响应参数说明

全部成功时响应参数示例

{
    "code": "ACK",
    "message": "操作成功",
    "data": {
        "successData": [{
            "expenseCode": "EXPCODE001" ,
            "bizCode": "EXPCODE001",
            "integrity":true 
      }]
  }, 
    "success": true
}

存在失败时响应参数示例

{
    "code": "ACK",
    "message": "操作成功",
    "data": {
            "errorData": [{ 
             "key":"EXPCODE001",
            "errorCode": "10000",
            "errorMessage": "参数错误" 
      }],
        "successData": [{
            "expenseCode": "EXPCODE002",
            "bizCode": "EXPCODE002",
            "integrity":true
        }]
  }, 
    "success": false
}

修改记录

2025-12-30  新增费用更新接口
2026-05-29  新增保证金/押金预付款类型、收据介质、收据附件说明
2026-06-30  调整保证金/押金预付款类型传参说明:更新推荐传选项业务编码对象
Copyright © 杭州每刻科技有限公司 www.maycur.com all right reserved,powered by Gitbook该文件修订时间: 2026-08-14 09:56:43

results matching ""

    No results matching ""

    results matching ""

      No results matching ""