增值税发票验真
所有文档

          文字识别

          增值税发票验真

          接口描述

          支持9种增值税发票的信息核验,包括增值税专票、电子专票、普票、电子普票、卷票、通行费增值税电子普通发票、货物运输业增值税专用发票、机动车销售发票、二手车销售发票等,支持返回票面的全部信息。同时可直接与同平台的发票识别能力对接,完成发票识别的同时进行自动化验真。

          请求说明

          请求示例

          HTTP 方法:POST

          请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification

          URL参数:

          参数
          access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

          Header如下:

          参数
          Content-Type application/x-www-form-urlencoded

          Body中放置请求参数,参数详情如下:

          请求参数

          参数 是否必选 类型 可选值范围 说明
          invoice_code string - 发票代码
          invoice_num string - 发票号码
          invoice_date string - 开票日期。格式YYYYMMDD,例:20210101
          invoice_type string 增值税专用发票:special_vat_invoice
          增值税电子专用发票:elec_special_vat_invoice
          增值税普通发票:normal_invoice
          增值税普通发票(电子):elec_normal_invoice
          增值税普通发票(卷式):roll_normal_invoice
          通行费增值税电子普通发票:toll_elec_normal_invoice
          货运运输业增值税专用发票:special_freight_transport_invoice
          机动车销售发票:motor_vehicle_invoice
          二手车销售发票:used_vehicle_invoice
          发票种类
          check_code string - 校验码。填写发票校验码后6位,增值税电子专票、普票、电子普票、卷票、通行费增值税电子普通发票此参数不可为空,其他类型发票可为空
          total_amount string - 不含税金额。发票种类为增值税专票、电子专票、货运专票、机动车销售发票、二手车销售发票时此参数不可为空(二手车销售发票填写发票车价合计),其他类型发票可为空

          请求代码示例

          提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

          提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

          OCR-增值税发票验真
          curl -i -k 'https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification?access_token=【调用鉴权接口获取的token】' --data 'invoice_code=发票代码&invoice_num=发票号码&invoice_date=开票日期&check_code=校验码。填写发票校验码后6位&invoice_type=发票类型&total_amount=不含税金额' -H 'Content-Type:application/x-www-form-urlencoded'
          # encoding:utf-8
          
          import requests
          
          '''
          OCR-增值税发票验真
          '''
          
          request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification"
          
          params = {"check_code":"校验码。填写发票校验码后6位","invoice_code":"发票代码","invoice_date":"开票日期","invoice_num":"发票号码","invoice_type":"发票类型","total_amount":"不含税金额"}
          access_token = '[调用鉴权接口获取的token]'
          request_url = request_url + "?access_token=" + access_token
          headers = {'content-type': 'application/x-www-form-urlencoded'}
          response = requests.post(request_url, data=params, headers=headers)
          if response:
              print (response.json())
          package com.baidu.ai.aip;
          
          import com.baidu.ai.aip.utils.HttpUtil;
          
          
          /**
          * OCR-增值税发票验真
          */
          public class InvoiceVerification {
          
              /**
              * 重要提示代码中所需工具类
              * FileUtil,Base64Util,HttpUtil,GsonUtils请从
              * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
              * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
              * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
              * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
              * 下载
              */
              public static String invoiceVerification() {
                  // 请求url
                  String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification";
                  try {
                      String param = "invoice_code=" + "发票代码" + "&invoice_num=" + "发票号码" + "&invoice_date=" + "开票日期" + "&check_code=" + "校验码。填写发票校验码后6位" + "&invoice_type=" + "发票类型" + "&total_amount=" + "不含税金额";
          
                      // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                      String accessToken = "[调用鉴权接口获取的token]";
          
                      String result = HttpUtil.post(url, accessToken, param);
                      System.out.println(result);
                      return result;
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
                  return null;
              }
          
              public static void main(String[] args) {
                  InvoiceVerification.invoiceVerification();
              }
          }
          <?php
          /**
           * 发起http post请求(REST API), 并获取REST请求的结果
           * @param string $url
           * @param string $param
           * @return - http response body if succeeds, else false.
           */
          function request_post($url = '', $param = '')
          {
              if (empty($url) || empty($param)) {
                  return false;
              }
          
              $postUrl = $url;
              $curlPost = $param;
              // 初始化curl
              $curl = curl_init();
              curl_setopt($curl, CURLOPT_URL, $postUrl);
              curl_setopt($curl, CURLOPT_HEADER, 0);
              // 要求结果为字符串且输出到屏幕上
              curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
              // post提交方式
              curl_setopt($curl, CURLOPT_POST, 1);
              curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
              // 运行curl
              $data = curl_exec($curl);
              curl_close($curl);
          
              return $data;
          }
          
          $token = '[调用鉴权接口获取的token]';
          $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification?access_token=' . $token;
          $bodys = array(
              'invoice_code' => "发票代码",
              'invoice_num' => "发票号码",
              'invoice_date' => "开票日期",
              'check_code' => "校验码。填写发票校验码后6位",
              'invoice_type' => "发票类型",
              'total_amount' => "不含税金额"
          );
          $res = request_post($url, $bodys);
          
          var_dump($res);
          using System;
          using System.IO;
          using System.Net;
          using System.Text;
          using System.Web;
          
          namespace com.baidu.ai
          {
              public class InvoiceVerification
              {
                  // OCR-增值税发票验真
                  public static string invoiceVerification()
                  {
                      string token = "[调用鉴权接口获取的token]";
                      string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification?access_token=" + token;
                      Encoding encoding = Encoding.Default;
                      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                      request.Method = "post";
                      request.KeepAlive = true;
                      String str = "invoice_code=" + "发票代码" + "&invoice_num=" + "发票号码" + "&invoice_date=" + "开票日期" + "&check_code=" + "校验码。填写发票校验码后6位" + "&invoice_type=" + "发票类型" + "&total_amount=" + "不含税金额";
                      byte[] buffer = encoding.GetBytes(str);
                      request.ContentLength = buffer.Length;
                      request.GetRequestStream().Write(buffer, 0, buffer.Length);
                      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                      StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                      string result = reader.ReadToEnd();
                      Console.WriteLine("OCR-增值税发票验真:");
                      Console.WriteLine(result);
                      return result;
                  }
              }
          }
          #include <iostream>
          #include <curl/curl.h>
          
          // libcurl库下载链接:https://curl.haxx.se/download.html
          // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
          const static std::string request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice_verification";
          static std::string invoiceVerification_result;
          /**
           * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
           * @param 参数定义见libcurl文档
           * @return 返回值定义见libcurl文档
           */
          static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
              // 获取到的body存放在ptr中,先将其转换为string格式
              invoiceVerification_result = std::string((char *) ptr, size * nmemb);
              return size * nmemb;
          }
          /**
           * OCR-增值税发票验真
           * @return 调用成功返回0,发生错误返回其他错误码
           */
          int invoiceVerification(std::string &json_result, const std::string &access_token) {
              std::string url = request_url + "?access_token=" + access_token;
              CURL *curl = NULL;
              CURLcode result_code;
              int is_success;
              curl = curl_easy_init();
              if (curl) {
                  curl_easy_setopt(curl, CURLOPT_URL, url.data());
                  curl_easy_setopt(curl, CURLOPT_POST, 1);
                  curl_httppost *post = NULL;
                  curl_httppost *last = NULL;
                  curl_formadd(&post, &last, CURLFORM_COPYNAME, "invoice_code", CURLFORM_COPYCONTENTS, "发票代码", CURLFORM_END);
                  curl_formadd(&post, &last, CURLFORM_COPYNAME, "invoice_num", CURLFORM_COPYCONTENTS, "发票号码", CURLFORM_END);
                  curl_formadd(&post, &last, CURLFORM_COPYNAME, "invoice_date", CURLFORM_COPYCONTENTS, "开票日期", CURLFORM_END);
                  curl_formadd(&post, &last, CURLFORM_COPYNAME, "check_code", CURLFORM_COPYCONTENTS, "校验码。填写发票校验码后6位", CURLFORM_END);
                  curl_formadd(&post, &last, CURLFORM_COPYNAME, "invoice_type", CURLFORM_COPYCONTENTS, "发票类型", CURLFORM_END);
                  curl_formadd(&post, &last, CURLFORM_COPYNAME, "total_amount", CURLFORM_COPYCONTENTS, "不含税金额", CURLFORM_END);
          
                  curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
                  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
                  result_code = curl_easy_perform(curl);
                  if (result_code != CURLE_OK) {
                      fprintf(stderr, "curl_easy_perform() failed: %s\n",
                              curl_easy_strerror(result_code));
                      is_success = 1;
                      return is_success;
                  }
                  json_result = invoiceVerification_result;
                  curl_easy_cleanup(curl);
                  is_success = 0;
              } else {
                  fprintf(stderr, "curl_easy_init() failed.");
                  is_success = 1;
              }
              return is_success;
          }

          返回说明

          返回参数

          字段 是否必选 类型 说明
          log_id uint64 唯一的log id,用于问题定位
          words_result_num uint32 识别结果数,表示words_result的元素个数
          words_result object{} 识别结果
          VerifyResult string 查验结果。查验成功返回“0001”,查验失败返回对应查验结果错误码,详见末尾表格
          VerifyMessage string 查验结果信息。查验成功且发票为真返回“查验成功发票一致“,查验失败返回对应错误原因,详见末尾表格
          VerifyFrequency string 查验次数。为历史查验次数
          InvalidSign string 是否作废(冲红)。Y:已作废;H:已冲红;N:未作废
          InvoiceType string 发票种类
          InvoiceCode string 发票代码
          InvoiceNum string 发票号码
          CheckCode string 校验码
          InvoiceDate string 开票日期
          MachineCode string 机器编号

          增值税专票、电子专票、普票、电子普通发票、卷票、通行费增值税电子普通发票、货物运输业增值税专用发票返回信息

          字段 是否必选 类型 说明
          PurchaserName string 购方名称
          PurchaserRegisterNum string 购方纳税人识别号
          PurchaserAddress string 购方地址及电话
          PurchaserBank string 购方开户行及账号
          CommodityName array[] 货物名称/项目名称
          - row uint32 行号
          - word string 内容
          CommodityType array[] 规格型号
          - row uint32 行号
          - word string 内容
          CommodityUnit array[] 单位
          - row uint32 行号
          - word string 内容
          CommodityNum array[] 数量
          - row uint32 行号
          - word string 内容
          CommodityPrice array[] 单价
          - row uint32 行号
          - word string 内容
          CommodityAmount array[] 金额
          - row uint32 行号
          - word string 内容
          CommodityTaxRate array[] 税率
          - row uint32 行号
          - word string 内容
          CommodityTax array[] 税额
          - row uint32 行号
          - word string 内容
          SellerName string 销售方名称
          SellerRegisterNum string 销售方纳税人识别号
          SellerAddress string 销售方地址及电话
          SellerBank string 销售方开户行及账号
          TotalAmount string 合计金额
          TotalTax string 合计税额
          AmountInFiguers string 价税合计(小写)
          TollSign string 通行费标志。Y-可抵扣通行费,N-不可抵扣通行费。通行费增值税电子普通发票返回信息,其他类型发票可忽略
          ZeroTaxRateIndicator string 零税率标识。空:非零税率,1:税率栏位显示“免税”,2:税率栏位显示“不征税”,3:零税率。通行费增值税电子普通发票返回信息,其他类型发票可忽略
          CommodityPlateNum array[] 车牌号。通行费增值税电子普通发票返回信息,其他类型发票可忽略
          - row uint32 行号
          - word string 内容
          CommodityVehicleType array[] 类型。通行费增值税电子普通发票返回信息,其他类型发票可忽略
          - row uint32 行号
          - word string 内容
          CommodityStartDate array[] 通行日期起。通行费增值税电子普通发票返回信息,其他类型发票可忽略
          - row uint32 行号
          - word string 内容
          CommodityEndDate array[] 通行日期止。通行费增值税电子普通发票返回信息,其他类型发票可忽略
          - row uint32 行号
          - word string 内容
          Carrier string 承运人名称。货运专票返回信息,其他类型发票可忽略
          CarrierCode string 承运人识别号。货运专票返回信息,其他类型发票可忽略
          Recipient string 受票方名称。货运专票返回信息,其他类型发票可忽略
          RecipientCode string 受票方识别号。货运专票返回信息,其他类型发票可忽略
          Receiver string 收货人名称。货运专票返回信息,其他类型发票可忽略
          ReceiverCode string 收货人识别号。货运专票返回信息,其他类型发票可忽略
          Sender string 发货人名称。货运专票返回信息,其他类型发票可忽略
          SenderCode string 发货人识别号。货运专票返回信息,其他类型发票可忽略
          TransportCargoInformation string 运输货物信息。货运专票返回信息,其他类型发票可忽略
          DepartureViaArrival string 起运地、经由、到达地。货运专票返回信息,其他类型发票可忽略
          TaxControlNum string 税控盘号。货运专票返回信息,其他类型发票可忽略
          VehicleType string 车种车号。货运专票返回信息,其他类型发票可忽略
          VehicleTonnage string 车船吨位。货运专票返回信息,其他类型发票可忽略
          CommodityExpenseItem array[] 费用项目。货运专票返回信息,其他类型发票可忽略
          - row uint32 行号
          - word string 内容
          NoteDrawer string 开票人
          Checker string 复核
          Payee string 收款人
          Remarks string 备注

          机动车销售发票返回信息

          字段 是否必选 类型 说明
          Purchaser string 购买方名称
          PurchaserCode string 购买方身份证号/组织机构代码
          VehicleType string 车辆类型
          ManuModel string 厂牌型号
          Origin string 产地
          CertificateNum string 合格证号书
          CommodityInspectionNum string 商检单号
          EngineNum string 发动机号码
          VinNum string 车辆识别代号/车架号码
          ImportCertificateNum string 进口证明书号
          TaxPaymentVoucherNum string 完税凭证号码
          LimitPassenger string 限乘人数
          TaxAuthor string 主管税务机关名称
          TaxAuthorCode string 主管税务机关代码
          Tonnage string 吨位
          Price string 不含税价格
          TaxRate string 税率
          Tax string 税额
          PriceTaxLow string 价税合计
          Saler string 销货单位名称
          SalerCode string 销货单位纳税人识别号
          SalerBank string 销货单位开户银行
          SalerAccountNum string 销货单位账号
          SalerPhone string 销货单位电话

          二手车销售发票返回信息

          字段 是否必选 类型 说明
          Purchaser string 买方单位/个人
          PurchaserCode string 买方单位代码/身份证号
          PurchaserAddress string 买方单位/个人住址
          PurchaserPhone string 买方电话
          Saler string 卖方单位/个人
          SalerCode string 卖方单位代码/身份证号
          SalerAddress string 卖方单位/个人住址
          SalerPhone string 卖方电话
          LicensePlateNum string 车牌照号
          RegistrationCode string 登记证号
          TotalCarPrice string 车价合计
          TransferVehicleManagementOffice string 转入地车辆车管所名称
          VehicleType string 车辆类型
          ManuModel string 厂牌型号
          VinNum string 车辆识别代号/车架号码
          Operator string 经营、拍卖单位
          OperatorAddress string 经营、拍卖单位地址
          OperatorCode string 经营、拍卖单位纳税人识别号
          OperatorBank string 开户银行及账号
          OperatorPhone string 经营、拍卖单位电话
          UsedCarMarket string 二手车市场
          UsedCarMarketCode string 二手车市场纳税人识别号
          UsedCarMarketAddress string 二手车市地址
          UsedCarMarketBank string 二手车市场开户银行及账号
          UsedCarMarketPhone string 二手车市场电话

          查验结果错误码

          查验结果(VerifyResult) 查验结果信息(VerifyMessage) 描述
          9999 查验失败 查验失败,业务出现异常,请提交工单咨询
          0002 超过该张票当天查验次数 此发票今日查询次数已达上限(5次),请次日查询
          0005 请求不合法 发票信息有误,请核对后再查询
          0006 发票信息不一致 发票信息有误,请核对后再查询
          0009 发票不存在 所查发票不存在
          1004 已超过最大查验量 已超过最大查验量,请提交工单咨询
          1005 查询发票不规范 信息有误,请核对后再查询
          1006 查验异常 发票信息有误,请核对后再查询
          1007 该批次已过期,请重新更换批次号查验 该批次已过期,请重新更换批次查验
          1008 字段不能为空 发票请求参数不能为空
          1009 参数长度不正确 参数长度不符合规范,确认参数,再次查验
          1014 日期当天的不能查验 日期当天的不能查验,请隔天再查
          1015 超过5年的不能查验 超过5年的不能查验
          1020 没有查验权限 没有查验权限,请提交工单咨询
          1021 网络超时 税局维护升级,暂时无法查验,请提交工单咨询
          上一篇
          船票识别
          下一篇
          医疗票据文字识别