发票文件导入(含OCR识别)接口
说明
您可以通过调用该接口,来将您系统内的发票文件导入到每刻的报销系统中。接口识别验真后,会生成新费用或绑定到传入的费用中。
注意事项
- 若是expenseCode有值,则仅将发票关联至费用,不对费用信息做更新。
- 调用此接口前,请确认企业已开通识票功能,否则调用失败。
- 若导入费用成功,不管存在账本还是被报销单关联,都不允许再次导入相同发票(每刻会查重)。
- 若传了expenseCode,且同一expenseCode多次调用,则会插入传入的发票文件而不是覆盖。
接口地址
/api/openapi/invoice/import-invoice-pic
接口限制
限流:2次/秒
请求类型
POST
请求参数
参数说明
字段名称 |
字段类型 |
是否必填 |
字段说明 |
fileUrl |
String(100) |
否 |
获取文件内容的地址,与文件 base64 二选一,优先使用文件访问地址。需是http/https,且可被公网访问的地址 |
fileBase64 |
String |
否 |
文件的 base64 值,与文件访问地址二选一,优先使用文件访问地址 |
fileType |
String |
是 |
文件的类型,仅支持 JPG、PNG、PDF和OFD 四种格式 |
employeeId |
String |
是 |
发票和费用最终将写入到此员工账号下 |
expenseCode |
String |
否 |
发票将绑定在传入的费用下,此值不为空时,将不生成新的费用。指费用导入接口导入成功后返回的code。 |
allInvoiceBindToOneExpense |
boolean |
否 |
如果传入的发票文件包含多张发票,可选择将发票拆到多条费用中,或者不拆分绑定在一条费用下。 若传expenseCode,此参数无效(即绑定该图片识别的所有发票); 若不传expenseCode且此参数设为true,则只新生成一条费用(绑定该图片识别的所有发票); 若不传expenseCode且此参数设为false,则每张发票生成一条费用并绑定对应发票;
|
参数样例
{
"fileBase64":"eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJtYXljdXJfand0X2Rldl9p",
"fileUrl":"https://ng.maycur.com/iamge/filename",
"fileType":"JPG",
"employeeId":"MK00001",
"expenseCode":"FD231231",
"allInvoiceBindToOneExpense":"true"
}
响应参数
响应参数说明(data)
字段名称 |
字段类型 |
是否必填 |
字段说明 |
invoiceDataCode |
String |
是 |
每刻系统内发票唯一编码 |
expenseCode |
String |
是 |
传入或新生成的费用的唯一编码 |
invoiceNumber |
String |
是 |
发票号码 |
invoiceCode |
String |
是 |
发票代码 |
type |
String |
是 |
发票类型 |
InvoiceDto 发票
字段名称 |
字段类型 |
是否必填 |
字段说明 |
invoiceDataCode |
String(25) |
是 |
发票code |
reimburseCode |
String(50) |
是 |
单据号 |
userCode |
String(50) |
是 |
用户内码 |
buyerName |
String |
是 |
购方名称 |
buyerTaxNumber |
String |
是 |
购方税号 |
invoiceCode |
String |
是 |
发票代码 |
invoiceNumber |
String |
是 |
发票号码 |
issueDate |
String |
是 |
开票时间 |
totalPriceAmount |
String |
是 |
不含税金额 |
totalTaxAmount |
String |
是 |
税额 |
totalPriceAndTax |
String |
是 |
价税合计 |
supplierName |
String |
是 |
销方名称 |
supplierAddress |
String |
是 |
销方地址和电话 |
invoiceTypeDesc |
String |
是 |
发票类型描述 |
invoiceTypeEnum |
String |
是 |
发票类型编码 |
validateStatus |
String |
是 |
发票验真状态编码,见下表 |
validateStatusDesc |
String |
是 |
发票验真状态描述,见下表 |
importedAt |
Long |
是 |
导入时间戳 |
importedAtYearMonth |
String |
是 |
导入年月 |
ticketData |
String |
是 |
发票一些相关信息 |
approvedTaxAmount |
AmountInput |
是 |
税额 |
approvedDeductionAmount |
AmountInput |
是 |
抵扣税额 |
supplierTaxNumber |
String |
是 |
销方税号 |
supplierAccount |
String |
是 |
销方账户(销方开户行+账户)非增值税发票和未验真的发票:该字段内容为空字符串 |
source |
string |
是 |
发票来源编码。OPENAPI_IMPORT:接口导入 |
sourceDesc |
string |
是 |
发票来源描述。OPENAPI_IMPORT:接口导入 |
lineItems |
List< lineItemsDto > |
是 |
货物明细,见下表 |
buyerAccount |
String |
是 |
购方账户(购方开户行+账户)非增值税发票和未验真的发票:该字段内容为空字符串 |
buyerAddressPhone |
String |
是 |
购方地址和电话 |
attachmentFiles |
List< FileInfo > |
是 |
发票对象,见下表 |
taxRate |
String |
是 |
税率 |
companySeal |
String |
是 |
有无专用章 |
invoiceRemark |
String |
是 |
发票备注 |
invoiceTaxDtoList |
List< InvoiceTaxDto > |
是 |
发票税额明细,见下表 |
cancellationMark |
String |
是 |
发票作废状态 |
cancellationMarkUpdateTime |
String |
是 |
发票作废状态更新时间 |
supplierUnusual |
String |
是 |
销售方异常状态 |
supplierUnusualUpdateTime |
String |
是 |
销售方异常状态更新时间 |
FileInfo 附件信息
字段名称 |
字段类型 |
是否必填 |
字段说明 |
code |
String(25) |
是 |
内部code |
mimeType |
String(50) |
是 |
文件类型:image/png |
filename |
String(25) |
是 |
文件名称 |
type |
String |
是 |
文件类型:image/png |
downloadUrl |
String |
是 |
源文件下载地址,有时效性,7天有效期 |
originalUrl |
String |
是 |
预览图地址,有时效性,7天有效期 |
thumUrl |
String |
是 |
缩略图地址,有时效性,7天有效期 |
imageUrl |
String |
是 |
发票图片地址,有时效性,7天有效期(用户上传的原始图片),若上传的文件是pdf,此参数返回“images/pdf.png”) |
lineItemsDto 货物明细
字段名称 |
字段类型 |
是否必填 |
字段说明 |
code |
String(25) |
是 |
明细编码 |
invoiceDataCode |
String(25) |
是 |
发票code |
name |
String(25) |
是 |
货物名称 |
priceAmount |
BigDecimal |
是 |
金额 |
taxRate |
BigDecimal |
是 |
税率 |
taxAmount |
BigDecimal |
是 |
税额 |
num |
BigDecimal |
是 |
数量 |
specificationModel |
String |
是 |
规格型号 |
unit |
String |
是 |
单位 |
unitPrice |
BigDecimal |
是 |
单价 |
taxRateMark |
String |
是 |
税率标记 |
taxRateMarkDesc |
String |
是 |
税率标记描述 |
expenseCode |
String |
是 |
费用编码 |
invoiceType |
String |
是 |
发票类型 |
InvoiceTaxDto 发票抵扣
字段名称 |
字段类型 |
是否必填 |
字段说明 |
taxableDetails |
String(25) |
是 |
应税明细 |
taxRate |
String(25) |
是 |
税率 |
approvedDeductionAmount |
AmountInput |
是 |
抵扣税额 |
approvedTaxAmount |
AmountInput |
是 |
税额 |
transferOut |
String |
是 |
是否转出 |
validateStatus(验真状态)对应validateStatusDesc(验真状态解释说明)
验真状态 |
验真状态解释说明 |
NOT_VALIDATION |
未验真 |
VALIDATED |
已验真 |
VALIDATION_FAILED |
验真失败 |
字段名称 |
字段类型 |
是否必填 |
字段说明 |
currency |
String(3) |
是 |
币种 |
amount |
BigDecimal |
是 |
金额 |
customExchangeRate |
BigDecimal |
是 |
汇率 |
amountStr |
String |
是 |
带币种金额 |
错误码
错误码 |
描述 |
解决方案 |
AUTH0007 |
员工不存在 |
请确认传入的员工编号是否存在 |
EXPENSE_ERR_13 |
费用不存在,当传入的 expenseCode 不为空时可能返回 |
请检查费用是否被移除或删除,是否属于传入的员工 |
EXPENSE_ERR_58 |
费用关联的报销单为非可编辑状态,即处于流程中或已完成,当传入的 expenseCode 不为空时可能返回 |
流程中的报销单可选择召回报销单。已完成的报销单,请重新创建再操作 |
INV20006 |
传入的文件无法识别 |
请确认传入的是否为发票文件 |
INV20002 |
发票无法保存 |
请确认是否已导入过发票或发票已报废 |
INV30109 |
发票文件超过 8M |
将文件压缩至小于 8M |
INV30002 |
发票文件无法访问 |
请确认发票访问地址无异常可正常访问或文件 base64 值无异常 |
INV30104 |
发票文件类型错误 |
请确认发票文件访问地址下的文件内容为 JPG、PNG、PDF 或 OFD 中的其中一种 |
响应参数样例
{
"code": "ACK",
"message": null,
"data": [
{
"invoiceDataCode": "INV123293506094510086",
"userCode": "UI2012221C97WQDC",
"expenseCode": "FD123293507650590747",
"qrCode": "",
"buyerName": "杭州每刻科技有限公司",
"buyerTaxNumber": "91330108341927699X",
"invoiceCode": "033002300611",
"invoiceNumber": "99007885",
"issueDate": 1719417600000,
"totalPriceAmount": 3.67,
"totalTaxAmount": 0.33,
"totalPriceAndTax": 4.00,
"supplierName": "杭州地铁运营有限公司",
"supplierAddress": "浙江省杭州市上城区九和路466号3幢12层0571-96600",
"invoiceTypeDesc": "增值税电子普通发票(客运服务)",
"invoiceTypeEnum": "SHIPMENT_VAT",
"attachments": [
{
"entCode": null,
"code": "ATT123293506390202413",
"resourceKey": "maycur001/caeaf520-db1f-47d9-a09b-f37a288efce1.pdf",
"associatedWith": "invoice",
"associatedCode": "INV123293506094510086",
"createdBy": null,
"createdAt": 1731293325217,
"filename": "caeaf520-db1f-47d9-a09b-f37a288efce1.pdf",
"type": "application/pdf",
"isQrCodePic": false,
"coordinates": "0,0,2000,1333",
"orientation": 0.0,
"mimeType": null,
"originalUrl": "",
"thumUrl": "",
"ratioFixedThumbUrl": null,
"imageUrl": null,
"size": null,
"downloadUrl": "",
"pageNumber": 0,
"isOriginalFile": true,
"pdfDownLoadUrl": null,
"originalFile": true,
"qrCodePic": false,
"validFileName": "caeaf520-db1f-47d9-a09b-f37a288efce1.pdf"
}
],
"attachmentFiles": null,
"validateStatus": "VALIDATED",
"validateStatusDesc": "已验真",
"remark": "成功",
"importedAt": 1731293325160,
"importedAtYearMonth": "202411",
"hasQrCodePic": false,
"processing": false,
"auditLogs": null,
"invoicePDFUrl": null,
"invoiceImgUrl": null,
"invoiceDateStr": null,
"invoiceStatus": null,
"invoiceTitleConflict": false,
"invoiceTitleConflictWithFee": false,
"mainAttachment": null,
"correlatedReimburseDataCode": null,
"correlatedReimburseCode": null,
"ticketData": {
"consumeTime": 1719417600000,
"machineCode": "661103102500",
"city": "",
"drawer": "田定河",
"reviewer": "赵美红",
"consumeStartDate": 1719417600000,
"payee": "秦宁",
"number": "",
"province": "浙江省",
"codeConfirm": "",
"consumeEndDate": 1719417600000,
"location": "domestic-ZH32-ZH32_1-ZH32_1_01",
"numberConfirm": "",
"invoiceSheetType": ""
},
"taxDedectCode": "",
"approvedTaxAmount": {
"amount": 0.00,
"currency": "CNY",
"customExchangeRate": 1,
"amountStr": "¥0.00"
},
"approvedDeductionAmount": {
"amount": 0.00,
"currency": "CNY",
"customExchangeRate": 1,
"amountStr": "¥0.00"
},
"auditDetailJson": null,
"customTaxFlag": false,
"identityFlag": true,
"errorMessage": null,
"errorCode": null,
"taxRate": 0,
"valueAddedTaxRate": null,
"supplierTaxNumber": "91330102MA7F72672F",
"modify": false,
"modifySwitch": false,
"vouchers": null,
"wxCardId": "",
"wxEncryptCode": "",
"wxOpenId": "",
"billNum": null,
"expenseTypeList": null,
"expenseType": null,
"employeeId": "",
"employeeName": "",
"buyerAddressPhone": "",
"buyerAccount": "",
"supplierAccount": "中国建设银行股份有限公司杭州秋涛支行营业部33050110438609666666",
"reimburseStatus": null,
"reimburseStatusDesc": null,
"issueDateDesc": null,
"source": "OPENAPI_IMPORT",
"sourceDesc": "OPENAPI_IMPORT",
"companySeal": true,
"invoiceTaxDtoList": [],
"updateRecord": [],
"invoiceRemark": "",
"invoiceSheet": 1,
"agentMark": "",
"cancellationMark": "NOT_INVALID",
"cancellationMarkDesc": null,
"sourceCode": "",
"invoiceStateCode": null,
"invoiceStateRemark": null,
"validationResult": null,
"complete": true,
"thirdInvoiceDataCode": "",
"invoiceDeductionStatus": null,
"electronicVoucher": null,
"electronicVoucherFiles": null,
"verificaitonChannel": "",
"title": "",
"dynaFormCode": "MOCK_FORM_CODE_SHIPMENT_VAT",
"electronic": true,
"customObject": null,
"cancellationMarkUpdateTime": null,
"supplierUnusual": null,
"supplierUnusualUpdateTime": null,
"sourceScanner": null,
"invoiceCodeNumber": "03300230061199007885",
"notCanVerify": false,
"checksum": "60258258882690380411",
"type": "-997",
"lineItems": [
{
"code": "IGI123293506352453681",
"invoiceDataCode": "INV123293506094510086",
"name": "*运输服务*地铁票",
"priceAmount": 3.670000,
"taxRate": 0.090000,
"taxAmount": 0.330000,
"num": 1.0,
"specificationModel": "",
"unit": "",
"unitPrice": 3.669725,
"taxRateMark": null,
"taxRateMarkDesc": null,
"expenseCode": "FD123293507650590747",
"invoiceType": "-997"
}
],
"splitted": false
}
],
"errorCode": null,
"success": true
}
修改记录
2023-02-08 新增发票文件导入(含OCR识别)接口文档