发票核验接口支持包括:增值税专用发票、增值税普通发票(折叠票)、增值税普通发票(卷票)、增值税电子普通发票(含收费公路通行费增值税电子普通发票)、机动车销售统一发票、二手车销售统一发票多种类型发票核验。您可以通过输入发票的关键验证字段,返回真实的票面信息,包括发票类型、发票代码、发票号码、作废标志、开票日期、购方税号及其他发票信息等。当天开具发票当日可查验(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,51,61,83,84)时可为空(发票类型代码见发票类型代码说明)。 | 044032100311 | 
| InvoiceNo | string | 是 | 发票号码。 | 66932410 | 
| InvoiceDate | string | 是 | 开票日期(日期格式为:YYYYMMDD)。 | 20220617 | 
| InvoiceSum | string | 否 | 发票金额。发票类型代码为 01,03,15,20,31,32 ,51,61,85,83,84 时必填:为 01,03,20 ,85 时填写发票不含税金额;为 15 ,84 时填写发票车价合计;为 31,32 ,51,61,83 时填写含税金额;为区块链发票(InvoiceKind=1)时填写 不含税金额。 其它类型可为空(详见发票类型代码说明)。 | 102 | 
| VerifyCode | string | 否 | 校验码,取后 6 位。发票类型代码为 04,10,11,14,86 时必填,发票类型代码为 86 时,填写密码区数电票号码后六位,为区块链发票(InvoiceKind=1)时必填,其他发票种类可为空(详见发票类型代码说明)。 | 980769 | 
| InvoiceKind | integer | 否 | 发票类型。用来区分是否为 区块链发票。 
 | 0 | 
- 发票类型代码说明
| 发票类型代码 | 发票类型说明 | 
|---|---|
| 01 | 增值税专用发票 | 
| 02 | 货运运输业增值税专用发票 | 
| 03 | 机动车销售统一发票 | 
| 04 | 增值税普通发票 | 
| 10 | 增值税普通发票(电子) | 
| 11 | 增值税普通发票(卷式) | 
| 14 | 增值税普通发票(通行费) | 
| 15 | 二手车销售统一发票 | 
| 20 | 增值税电子专用发票 | 
| 31 | 数电发票(增值税专用发票) | 
| 32 | 数电发票(增值税普通发票) | 
| 51 | 电子发票(铁路电子客票) | 
| 61 | 电子发票(航空运输电子客票行程单) | 
| 83 | 电子发票(机动车销售统一发票) | 
| 84 | 电子发票(机动车销售统一发票) | 
| 85 | 数电发票(纸质专用发票) | 
| 86 | 数电发票(纸质普通发票) | 
| 87 | 数电纸质发票(机动车销售统一发票) | 
| 88 | 数电纸质发票(二手车销售统一发票) | 
返回参数
- 返回结果字段描述
| 字段名称 | 字段类型 | 描述 | 
|---|---|---|
| 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": {
    "code": "001",
    "data": {
      "afterTaxCode": "",
      "allTax": 9.67,
      "allValoremTax": 332,
      "blueInvoiceCode": "",
      "blueInvoiceNo": "",
      "brandVersion": "",
      "businessUnit": "",
      "businessUnitTaxNo": "",
      "busmessUnitAddress": "",
      "busmessUnitBankAndAccount": "",
      "busmessUnitPhone": "",
      "carPrice": "",
      "carType": "",
      "carTypeAndNumber": "",
      "carframeCode": "",
      "carrierName": "",
      "carrierTaxNo": "",
      "checkCode": "07122942791187744XXXX",
      "code": "",
      "consignorName": "",
      "consignorTaxNo": "",
      "cyjgxx": "查验成功发票一致",
      "detailList": [
        {
          "allTax": 9.67,
          "detailAmount": 322.33,
          "detailNo": 1,
          "expenseItem": "",
          "goodsName": "*餐饮服务*餐费",
          "netValue": 322.330097,
          "num": 1,
          "plate_no": "",
          "rowNo": 1,
          "standard": "",
          "taxClassifyCode": 0,
          "taxDetailAmount": "",
          "taxRate": 3,
          "taxUnitPrice": "",
          "trafficDateEnd": "",
          "trafficDateStart": "",
          "type": "",
          "unit": ""
        }
      ],
      "draweeName": "",
      "draweeTaxNo": "",
      "engineCode": "",
      "idCard": "",
      "importLicense": "",
      "inspectionAmount": "",
      "inspectionNumber": "",
      "invalidMark": "N",
      "invoiceCode": "01100180XXXX",
      "invoiceDate": "2018XXXX",
      "invoiceMoney": "322.XX",
      "invoiceNumber": "3531XXXX",
      "invoiceType": 10,
      "lemonMarket": "",
      "lemonMarketAddress": "",
      "lemonMarketBankAndAccount": "",
      "lemonMarketPhone": "",
      "lemonMarketTaxNo": "",
      "licenseCode": "",
      "licensePlate": "",
      "limitAmount": "",
      "machineCode": "49992273XXXX",
      "note": "机器编号:49992273XXXX",
      "producingArea": "",
      "purchaserAddressOrPhone": "杭州余杭区XXXX0571-8502XXXX",
      "purchaserBankAndNumber": "招商银行杭州高新支行571906593XXXXXX",
      "purchaserName": "XXXX软件有限公司",
      "purchaserPhone": "",
      "purchaserTaxpayerNumber": "913301007682XXXXXX",
      "purchaserUnitOrIndividual": "",
      "purchaserUnitOrIndividualAddress": "",
      "purchaserUnitcodeOrIdNo": "",
      "receiveName": "",
      "receiveTaxNo": "",
      "registrationNo": "",
      "salerAddress": "",
      "salerAddressOrPhone": "北京市海淀区XXX8211XXXX",
      "salerBankAccount": "中国银行海淀支行345456XXXXXX",
      "salerBankAndNumber": "中国银行海淀支行345456XXXXXX",
      "salerBankName": "",
      "salerName": "北京市XXX酒家",
      "salerPhone": "",
      "salerTaxpayerNumber": "911101081020XXXXXX",
      "sellerPhone": "",
      "sellerUnitCodeOrIdno": "",
      "sellerUnitOrIndividual": "北京市XXX酒家",
      "sellerUnitOrIndividualAddress": "",
      "taxDiskNumber": "",
      "taxRate": "",
      "taxUnitCode": "",
      "taxUnitName": "",
      "throughAddress": "",
      "trafficFeeFlag": "",
      "transferredVehicleOffice": "",
      "transportGoodsInfo": "",
      "unit": "",
      "vehicleTonnage": "",
      "zeroTaxRateFlag": ""
    },
    "msg": "成功"
  }
}错误码
| HTTP status code | 错误码 | 错误信息 | 
|---|---|---|
| 503 | ServiceUnavailable | The request has failed due to a temporary failure of the server | 
访问错误中心查看更多错误码。
变更历史
| 变更时间 | 变更内容概要 | 操作 | 
|---|---|---|
| 2024-03-15 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 | 
