发票核验接口支持包括:增值税专用发票、增值税普通发票(折叠票)、增值税普通发票(卷票)、增值税电子普通发票(含收费公路通行费增值税电子普通发票)、机动车销售统一发票、二手车销售统一发票多种类型发票核验。您可以通过输入发票的关键验证字段,返回真实的票面信息,包括发票类型、发票代码、发票号码、作废标志、开票日期、购方税号及其他发票信息等。当天开具发票当日可查验(T+0)。注意:可能有几小时到十几小时的延迟。
接口说明
如何开通/购买本服务
步骤 | 概述 |
---|---|
1 | 开通 票证核验 服务。开通后您可享 50 次免费额度。 |
2 | 购买发票核验资源包。您也可以不购买资源包,系统会通过“按量付费”方式按实际调用量自动扣款。 |
3 | 可以参照调试页面提供的代码示例完成 API 接入开发。接入完成后,调用 API 获取识别结果。如果使用子账号调用接口,需要阿里云账号(主账号)对 RAM 账号进行授权。创建 RAM 用户的具体操作,请参考:创建 RAM 用户。文字识别服务提供一种系统授权策略,即 AliyunOCRFullAccess。具体授权操作,请参见在用户页面为 RAM 用户授权。 |
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
下表是API对应的授权信息,可以在RAM权限策略语句的Action
元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
- 操作:是指具体的权限点。
- 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
- 资源类型:是指操作中支持授权的资源类型。具体说明如下:
- 对于必选的资源类型,用背景高亮的方式表示。
- 对于不支持资源级授权的操作,用
全部资源
表示。
- 条件关键字:是指云产品自身定义的条件关键字。
- 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作 | 访问级别 | 资源类型 | 条件关键字 | 关联操作 |
---|---|---|---|---|
ocr:VerifyVATInvoice | create | *全部资源 * |
| 无 |
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
InvoiceCode | string | 否 | 发票代码。数电发票(发票类型代码为 31,32)时可为空(发票类型代码见发票类型代码说明)。 | 044032100311 |
InvoiceNo | string | 是 | 发票号码。 | 66932410 |
InvoiceDate | string | 是 | 开票日期(日期格式为:YYYYMMDD)。 | 20220617 |
InvoiceSum | string | 否 | 发票类型代码为 01,03,15,20,31,32 时必填:为 01,03,20 时填写发票不含税金额;为 15 时填写发票车价合计;为 31,32 时填写含税金额;为区块链发票(InvoiceKind=1)时填写 不含税金额。 其它类型可为空(详见发票类型代码说明)。 | 102 |
VerifyCode | string | 否 | 校验码,取后 6 位。发票类型代码为 04,10,11,14 时必填,为区块链发票(InvoiceKind=1)时必填,其他发票种类可为空(详见发票类型代码说明)。 | 980769 |
InvoiceKind | integer | 否 | 发票类型。用来区分是否为 区块链发票。
| 0 |
- 发票类型代码说明
发票类型代码 | 发票类型说明 |
---|---|
01 | 增值税专用发票 |
02 | 货运运输业增值税专用发票 |
03 | 机动车销售统一发票 |
04 | 增值税普通发票 |
10 | 增值税普通发票(电子) |
11 | 增值税普通发票(卷式) |
14 | 增值税普通发票(通行费) |
15 | 二手车销售统一发票 |
20 | 增值税电子专用发票 |
31 | 数电发票(增值税专用发票) |
32 | 数电发票(增值税普通发票) |
85 | 数电发票(纸质专用发票) |
86 | 数电发票(纸质普通发票) |
返回参数
- 返回结果字段描述
字段名称 | 字段类型 | 描述 |
---|---|---|
code | string | 状态码 |
msg | string | 状态信息 |
data | string | 发票信息(只有查验成功,此字段才不为空) |
- 返回结果 data 字段描述(非区块链发票)
序号 | 字段名称 | 字段描述 | 字段类型 | 字段最大长度 | 是否一定返回 | 说明 |
---|---|---|---|---|---|---|
1 | invoiceType | 发票种类 | string | 2 | 是 | |
2 | invoiceCode | 发票代码 | string | 20 | 是 | |
3 | invoiceNumber | 发票号码 | string | 8 | 是 | |
4 | inspectionAmount | 查验次数 | string | 100 | 否 | |
5 | salerName | 销方名称 | string | 100 | 否 | |
6 | salerTaxpayerNumber | 销方税号 | string | 20 | 否 | |
7 | salerAddressOrPhone | 销方地址、电话 | string | 100 | 否 | |
8 | salerBankAndNumber | 销方开户行及账号 | string | 100 | 否 | |
9 | purchaserTaxpayerNumber | 购方税号 | string | 20 | 否 | |
10 | purchaserName | 购方名称 | string | 100 | 否 | |
11 | purchaserAddressOrPhone | 购方地址、电话 | string | 100 | 否 | |
12 | purchaserBankAndNumber | 购方开户行及账号 | string | 100 | 否 | |
13 | invoiceDate | 开票日期 | string | 8 | 否 | 格式:yyyymmdd |
14 | invoiceMoney | 发票金额 | string | 20 | 否 | |
15 | allTax | 发票税额 | string | 20 | 否 | |
16 | allValoremTax | 价税合计 | string | 16 | 否 | |
17 | note | 备注 | string | 200 | 否 | |
18 | machineCode | 机器编号 | string | 20 | 否 | |
19 | checkCode | 校验码 | string | 20 | 否 | |
20 | blueInvoiceCode | 蓝票发票代码 | string | 12 | 否 | |
21 | blueInvoiceNo | 蓝票发票号码 | string | 8 | 否 | |
22 | invalidMark | 作废标志 | string | 1 | 否 | N:未作废,Y:已作废,H:冲红,7:部分冲红,8:全额冲红 |
23 | idCard | 购方身份证号/组织机构代码 | string | 20 | 否 | 机动车、二手车发票返回该信息 |
24 | carType | 车辆类型 | string | 80 | 否 | 机动车、二手车发票返回该信息 |
25 | brandVersion | 厂牌型号 | string | 100 | 否 | 机动车、二手车发票返回该信息 |
26 | producingArea | 产地 | string | 80 | 否 | 机动车发票返回该信息 |
27 | licenseCode | 合格证号 | string | 100 | 否 | 机动车发票返回该信息 |
28 | inspectionNumber | 商检单号 | string | 80 | 否 | 机动车发票返回该信息 |
29 | engineCode | 发动机号 | string | 120 | 否 | 机动车发票返回该信息 |
30 | carframeCode | 车辆识别代号/车架号码 | string | 40 | 否 | 机动车、二手车发票返回该信息 |
31 | importLicense | 进口证明书号 | string | 80 | 否 | 机动车发票返回该信息 |
32 | taxUnitCode | 主管税务机关代码 | string | 11 | 否 | 机动车发票返回该信息 |
33 | afterTaxCode | 完税凭证号码 | string | 32 | 否 | 机动车发票返回该信息 |
34 | limitAmount | 限乘人数 | string | 40 | 否 | 机动车发票返回该信息 |
35 | taxUnitName | 主管税务机关名称 | string | 160 | 否 | 机动车发票返回该信息 |
36 | unit | 吨位 | string | 40 | 否 | 机动车发票返回该信息 |
37 | taxRate | 税率 | string | 32 | 否 | 机动车发票返回该信息 |
38 | salerAddress | 销方地址 | string | 160 | 否 | 机动车发票返回该信息 |
39 | salerPhone | 销方电话 | string | 80 | 否 | 机动车发票返回该信息 |
40 | salerBankName | 销方开户银行 | string | 160 | 否 | 机动车发票返回该信息 |
41 | salerBankAccount | 销方开户账号 | string | 80 | 否 | 机动车发票返回该信息 |
42 | carrierName | 承运人名称 | string | 20 | 否 | 货物发票返回信息 |
43 | carrierTaxNo | 承运人识别号 | string | 80 | 否 | 货物发票返回信息 |
44 | draweeName | 受票方名称 | string | 20 | 否 | 货物发票返回信息 |
45 | draweeTaxNo | 受票方识别号 | string | 80 | 否 | 货物发票返回信息 |
46 | receiveName | 收货人名称 | string | 20 | 否 | 货物发票返回信息 |
47 | receiveTaxNo | 收货人识别号 | string | 80 | 否 | 货物发票返回信息 |
48 | consignorName | 发货人名称 | string | 20 | 否 | 货物发票返回信息 |
49 | consignorTaxNo | 发货人识别号 | string | 80 | 否 | 货物发票返回信息 |
50 | transportGoodsInfo | 运输货物信息 | string | 32 | 否 | 货物发票返回信息 |
51 | throughAddress | 起运地、经由、到达地 | string | 32 | 否 | 货物发票返回信息 |
52 | taxDiskNumber | 税控盘号 | string | 32 | 否 | 货物发票返回信息 |
53 | carTypeAndNumber | 车种车号 | string | 15 | 否 | 货物发票返回信息 |
54 | vehicleTonnage | 车船吨位 | string | 200 | 否 | 货物发票返回信息 |
55 | trafficFeeFlag | 通行费标准 | string | 2 | 否 | 通行费发票返回信息 Y:可抵扣通行费。N:不可抵扣通行费 |
56 | zeroTaxRateFlag | 零税率标识 | string | 2 | 否 | 通行费发票返回信息为空表示非零税率 1:税率栏位显示“免税” 2:税率栏位显示“不征税” 3:零税率 |
57 | licensePlate | 车牌照号 | string | 100 | 否 | 二手车发票返回信息 |
58 | registrationNo | 登记证号 | string | 100 | 否 | 二手车发票返回信息 |
59 | carPrice | 车价合计 | string | 32 | 否 | 二手车发票返回信息 |
60 | transferredVehicleOffice | 转入地车辆车管所名称 | string | 240 | 否 | 二手车发票返回信息 |
61 | purchaserUnitOrIndividual | 买方单位/个人 | string | 240 | 否 | 二手车发票返回信息 |
62 | purchaserUnitcodeOrIdno | 买方单位代码/身份证号 | string | 44 | 否 | 二手车发票返回信息 |
63 | purchaserUnitOrIndividualAddress | 买方单位/个人住址 | string | 240 | 否 | 二手车发票返回信息 |
64 | purchaserPhone | 买方电话 | string | 100 | 否 | 二手车发票返回信息 |
65 | sellerUnitOrIndividual | 卖方单位/个人 | string | 240 | 否 | 二手车发票返回信息 |
66 | sellerUnitCodeOrIdno | 卖方单位代码/身份证号 | string | 44 | 否 | 二手车发票返回信息 |
67 | sellerUnitOrIndividualAddress | 卖方单位/个人住址 | string | 240 | 否 | 二手车发票返回信息 |
68 | sellerPhone | 卖方电话 | string | 100 | 否 | 二手车发票返回信息 |
69 | businessUnit | 经营、拍卖单位 | string | 240 | 否 | 二手车发票返回信息 |
70 | busmessUnitAddress | 经营、拍卖单位地址 | string | 240 | 否 | 二手车发票返回信息 |
71 | businessUnitTaxNo | 经营、拍卖单位纳税人识别号 | string | 44 | 否 | 二手车发票返回信息 |
72 | busmessUnitBankAndAccount | 开户银行及账号 | string | 100 | 否 | 二手车发票返回信息 |
73 | busmessUnitPhone | 经营、拍卖单位电话 | string | 100 | 否 | 二手车发票返回信息 |
74 | lemonMarket | 二手车市场 | string | 240 | 否 | 二手车发票返回信息 |
75 | lemonMarketTaxNo | 二手车市场纳税人识别号 | string | 44 | 否 | 二手车发票返回信息 |
76 | lemonMarketAddress | 二手车市场地址 | string | 240 | 否 | 二手车发票返回信息 |
77 | lemonMarketBankAndAccount | 二手车市场开户银行及账号 | string | 100 | 否 | 二手车发票返回信息 |
78 | lemonMarketPhone | 二手车市场电话 | string | 100 | 否 | 二手车发票返回信息 |
79 | cyjgxx | 验真结果 | string | 100 | 否 | 验真结果 |
- 返回结果 data 字段描述(区块链发票)
序号 | 字段名称 | 字段描述 | 字段类型 | 说明 |
---|---|---|---|---|
1 | invoiceCode | 发票代码 | string | |
2 | invoiceNo | 发票号码 | string | |
3 | checkCode | 校验码 | string | |
4 | billingDate | 开票日期 | string | |
5 | txHash | 交易哈希 | string | |
6 | amount | 不含税总金额 | string | |
7 | totalAmount | 含税总金额 | string | |
8 | taxAmount | 税额 | string | |
9 | sellerName | 销方名称 | string | |
10 | sellerTaxpayerId | 销方纳税人识别号 | string | |
11 | sellerAddress | 销方地址 | string | |
12 | sellerPhone | 销方电话 | string | |
13 | sellerBankInfo | 销方开户银行名称 | string | |
14 | buyerAddress | 购方地址 | string | |
15 | buyerPhone | 购方电话 | string | |
16 | buyerName | 购方名称 | string | |
17 | sellerBankAccount | 销方开户银行账号 | string | |
18 | buyerTaxpayerId | 购方纳税人识别号 | string | |
19 | buyerType | 购买方类型 | string | |
20 | status | 发票状态 | string | 0:正常,1:失控,2:作废,3:红冲,4:异常 |
21 | checkedBy | 复核人 | string | |
22 | reviewedBy | 审核人 | string | |
23 | remark | 开票备注 | string | |
24 | drawer | 开票人 | string | |
25 | time | 开票时间 | string | |
26 | platformCode | 平台编码 | string | |
27 | platformName | 平台名称 | string | |
28 | orderId | 订单流水号 | string | |
29 | payId | 支付流水号 | string | |
30 | digitPaymentSign | 电子支付标识 | string | |
31 | invalidMark | 是否作废 | string | |
32 | item | 发票明细集合 | list | (以下为 item 字段的说明) |
1 | +code | 货物或应税劳务、服务编码 | string | |
2 | +name | 货物或应税劳务、服务名称 | string | |
3 | +subName | 商品名称 | string | |
4 | +specModel | 规格型号 | string | |
5 | +unit | 计量单位 | string | |
6 | +count | 数量 | string | |
7 | +unitPrice | 单价 | string | |
8 | +amount | 金额 | string | |
9 | +taxFlag | 含税标记 | string | |
10 | +taxRate | 税率 | string | |
11 | +taxAmount | 税额 | string | |
12 | +taxPreferMark | 是否享受税收优惠标识 | string | |
13 | +taxPreferDescrip | 享受税收优惠的具体说明 | string | |
14 | +zeroTaxRateMark | 零税率标识 | string | |
15 | +deduction | 差额开票时,从总额中扣除的金额 | string |
- 返回结果 detailList 字段描述
序号 | 字段名称 | 字段描述 | 字段类型 | 说明 |
---|---|---|---|---|
1 | detailNo | 明细编号 | string | |
2 | goodsName | 货物名称 | string | |
3 | detailAmount | 金额 | string | |
4 | num | 数量 | string | |
5 | taxRate | 税率 | string | |
6 | allTax | 税额 | string | |
7 | taxUnitPrice | 含税单价 | string | |
8 | taxDetailAmount | 含税金额 | string | |
9 | netValue | 不含税单价 | string | |
10 | standard | 规格型号 | string | |
11 | unit | 计量单位 | string | |
12 | expenseItem | 费用项目 | string | 货物发票返回信息 |
13 | plate_no | 车牌号 | string | 通行费发票返回信息 |
14 | type | 类型 | string | 通行费发票返回信息 |
15 | trafficDateStart | 通行日期起 | string | 通行费发票返回信息 |
16 | trafficDateEnd | 通行日期止 | string | 通行费发票返回信息 |
17 | taxClassifyCode | 税收分类编码 | string | |
18 | rowNo | 行号 | string |
- code(状态码)和 msg(状态信息)对应关系,以及是否计费说明
code | msg | 是否计费 |
---|---|---|
001 | 成功 | 是 |
002 | 超过该张票当天查验次数 | 否 |
005 | 请求不合法 | 否 |
006 | 发票信息不一致 | 是 |
009 | 所查发票不存在 | 是 |
104 | 已超过最大查验量 | 否 |
105 | 查询发票不规范。可能是以下原因导致:
| 否 |
106 | 查验异常 | 否 |
108 | 参数不为空 | 否 |
109 | 参数长度不正确 | 否 |
110 | 参数"InvoiceCode"的格式或取值范围错误 | 否 |
111 | 参数"InvoiceSum"的格式或取值范围错误 | 否 |
112 | 参数"VerifyCode"的格式或取值范围错误 | 否 |
113 | 参数"InvoiceNo"的格式或取值范围错误 | 否 |
114 | 校验码不正确,应为后六位 | 否 |
115 | 超过服务有效期限限制 | 否 |
1005 | 请核对四要素是否符合发票规范 | 是 |
1010 | 日期格式不正确(请检查日期是否符合格式 YYYYMMDD) | 否 |
1011 | 请求参数不完整 | 否 |
1021 | 网络超时,税局升级维护 | 否 |
10014 | 日期当天不能查验 | 否 |
10015 | 开票金额:不合法的格式 | 否 |
10016 | 检验码:不能为空 | 否 |
10017 | 超过五年的不能查验 | 否 |
10018 | 检验码:不合法的长度 | 否 |
10020 | 没有查验权限 | 否 |
000000 | 成功 | 是 |
000001 | 查询无数据 | 否 |
101000 | 系统异常 | 否 |
111000 | 参数不能为空 | 否 |
111001 | 参数格式不正确 | 否 |
121000 | 内部处理失败 | 否 |
121001 | 内部处理限流 | 否 |
121002 | 内部处理超时 | 否 |
131002 | 接口无权限 | 否 |
131003 | 接口调用次数过限 | 否 |
131004 | 接口已到期 | 否 |
131005 | 接口调用频率过高 | 否 |
152000 | 超过用户 QPS 调用阈值 | 否 |
171000 | 数据源业务异常 | 否 |
示例
正常返回示例
JSON
格式
{
"RequestId": "43A29C77-405E-4CC0-BC55-EE694AD00655",
"Data": "{\n \"code\": \"001\",\n \"data\": {\n \"afterTaxCode\": \"\",\n \"allTax\": \"9.67\",\n \"allValoremTax\": \"332.00\",\n \"blueInvoiceCode\": \"\",\n \"blueInvoiceNo\": \"\",\n \"brandVersion\": \"\",\n \"businessUnit\": \"\",\n \"businessUnitTaxNo\": \"\",\n \"busmessUnitAddress\": \"\",\n \"busmessUnitBankAndAccount\": \"\",\n \"busmessUnitPhone\": \"\",\n \"carPrice\": \"\",\n \"carType\": \"\",\n \"carTypeAndNumber\": \"\",\n \"carframeCode\": \"\",\n \"carrierName\": \"\",\n \"carrierTaxNo\": \"\",\n \"checkCode\": \"07122942791187744XXXX\",\n \"code\": \"\",\n \"consignorName\": \"\",\n \"consignorTaxNo\": \"\",\n \"cyjgxx\": \"查验成功发票一致\",\n \"detailList\": [\n {\n \"allTax\": \"9.67\",\n \"detailAmount\": \"322.33\",\n \"detailNo\": \"1\",\n \"expenseItem\": \"\",\n \"goodsName\": \"*餐饮服务*餐费\",\n \"netValue\": \"322.330097\",\n \"num\": \"1\",\n \"plate_no\": \"\",\n \"rowNo\": \"1\",\n \"standard\": \"\",\n \"taxClassifyCode\": \"0\",\n \"taxDetailAmount\": \"\",\n \"taxRate\": \"3\",\n \"taxUnitPrice\": \"\",\n \"trafficDateEnd\": \"\",\n \"trafficDateStart\": \"\",\n \"type\": \"\",\n \"unit\": \"\"\n }\n ],\n \"draweeName\": \"\",\n \"draweeTaxNo\": \"\",\n \"engineCode\": \"\",\n \"idCard\": \"\",\n \"importLicense\": \"\",\n \"inspectionAmount\": \"\",\n \"inspectionNumber\": \"\",\n \"invalidMark\": \"N\",\n \"invoiceCode\": \"01100180XXXX\",\n \"invoiceDate\": \"2018XXXX\",\n \"invoiceMoney\": \"322.XX\",\n \"invoiceNumber\": \"3531XXXX\",\n \"invoiceType\": \"10\",\n \"lemonMarket\": \"\",\n \"lemonMarketAddress\": \"\",\n \"lemonMarketBankAndAccount\": \"\",\n \"lemonMarketPhone\": \"\",\n \"lemonMarketTaxNo\": \"\",\n \"licenseCode\": \"\",\n \"licensePlate\": \"\",\n \"limitAmount\": \"\",\n \"machineCode\": \"49992273XXXX\",\n \"note\": \"机器编号:49992273XXXX\",\n \"producingArea\": \"\",\n \"purchaserAddressOrPhone\": \"杭州余杭区XXXX0571-8502XXXX\",\n \"purchaserBankAndNumber\": \"招商银行杭州高新支行571906593XXXXXX\",\n \"purchaserName\": \"XXXX软件有限公司\",\n \"purchaserPhone\": \"\",\n \"purchaserTaxpayerNumber\": \"913301007682XXXXXX\",\n \"purchaserUnitOrIndividual\": \"\",\n \"purchaserUnitOrIndividualAddress\": \"\",\n \"purchaserUnitcodeOrIdNo\": \"\",\n \"receiveName\": \"\",\n \"receiveTaxNo\": \"\",\n \"registrationNo\": \"\",\n \"salerAddress\": \"\",\n \"salerAddressOrPhone\": \"北京市海淀区XXX8211XXXX\",\n \"salerBankAccount\": \"中国银行海淀支行345456XXXXXX\",\n \"salerBankAndNumber\": \"中国银行海淀支行345456XXXXXX\",\n \"salerBankName\": \"\",\n \"salerName\": \"北京市XXX酒家\",\n \"salerPhone\": \"\",\n \"salerTaxpayerNumber\": \"911101081020XXXXXX\",\n \"sellerPhone\": \"\",\n \"sellerUnitCodeOrIdno\": \"\",\n \"sellerUnitOrIndividual\": \"北京市XXX酒家\",\n \"sellerUnitOrIndividualAddress\": \"\",\n \"taxDiskNumber\": \"\",\n \"taxRate\": \"\",\n \"taxUnitCode\": \"\",\n \"taxUnitName\": \"\",\n \"throughAddress\": \"\",\n \"trafficFeeFlag\": \"\",\n \"transferredVehicleOffice\": \"\",\n \"transportGoodsInfo\": \"\",\n \"unit\": \"\",\n \"vehicleTonnage\": \"\",\n \"zeroTaxRateFlag\": \"\"\n },\n \"msg\": \"成功\"\n}"
}
错误码
HTTP status code | 错误码 | 错误信息 |
---|---|---|
503 | ServiceUnavailable | The request has failed due to a temporary failure of the server |
访问错误中心查看更多错误码。
变更历史
变更时间 | 变更内容概要 | 操作 |
---|---|---|
2024-03-15 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |