报销单费用更新接口
说明
该接口用于进行报销单费用更新,可以用于将已关联报销单的费用更新.
注意事项
- 该接口为部分失败,在进行费用更新时,如果一次更新5条费用,其中一条失败,不会影响其他四条数据的正常更新。
- 每次更新最大值为10条费用,导入过多费用时,每刻会提示费用超过支持最大值10条。
- 更新的费用需要满足:a.更新费用已关联报销单 b.费用关联的报销单属于草稿状态或驳回至可编辑状态.
- 费用更新传值,若不传则默认复用原费用对应值,传则按最新值进行更新。(expenseTypeBizCode费用类型改变时,则需要传全量值)
- 以下特殊费用字段全覆盖且以最新传值进行更新,不复用旧值:
a.allocationRuleBizCode、allocationList(分摊信息)
b.customObject(自定义字段信息)
c.corpExpense(是否对公费用)
6.根据返回的integrity可以识别该费用是否必填项传入完整:
7.对公费用场景暂不支持:到票核销、支付前期已到的发票- true:所有必填项均传入成功 - false:存在必填项未传入
接口地址
/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 | 否 | 不含税组件(只有对公费用预付未到票场景支持). 不传则复用旧值,传空对象则清除. |
到票核销记录参数说明 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
参数说明
- 若费用表单个税组件开启了【按照费用金额扣除“减除税额”后的金额计算个税】,导入时请导入amountIncludeTaxDeduction(费用金额)和taxDeduction(减除税额),导入后系统会计算劳务税前金额、预扣个税和劳务税后金额;
若开关未开启,请导入amountType(金额类型)和amount(税前/税后金额),系统根据导入的税前或税后金额计算个税及对应的前后金额。 - openapi导入的劳务费默认会计算“预扣个税”
| 字段名称 | 字段类型 | 是否必填 | 字段说明 |
|---|---|---|---|
| amountType | String | 是 | 输入金额类型。pre:税前 after:税后 |
| amount | AmountInput | 是 | 税前/税后金额 |
| amountIncludeTaxDeduction | AmountInput | 是 | 费用金额(劳务税前金额=费用金额-减除税额) |
| taxDeduction | AmountInput | 是 | 减除税额(可以为0) |
参数样例
{
"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 新增费用更新接口