网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络服务
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
IoT物联网
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
更新时间:2025-01-17 GMT+08:00
分享

发票验真

功能介绍

支持10种增值税发票的信息核验:

增值税专用发票、增值税普通发票、增值税普通发票(卷式)、增值税电子专用发票、增值税电子普通发票、增值税电子普通发票(通行费)、二手车销售统一发票、机动车销售统一发票、区块链电子发票、全电发票,支持返回票面的全部信息。

该接口的使用限制请参见约束与限制,详细使用指导请参见OCR服务使用简介章节。

  • 每份发票,每天最多可查验5次。
  • 可查验最近5年内(国家税务总局)增值税发票管理系统开具的发票。
  • 税务局数据同步有时延,建议当天新开的发票在24小时后查询。

约束与限制

  • 支持增值税专用发票、增值税普通发票、增值税普通发票(卷式)、增值税电子专用发票、增值税电子普通发票、增值税电子普通发票(通行费)、二手车销售统一发票、机动车销售统一发票、区块链电子发票和全电发票,共计10种发票信息核验。
  • 每份发票每天最多可查验5次。可查验最近5年内(国家税务总局)增值税发票管理系统开具的发票。
  • 税务局数据同步有时延,建议当天新开的发票在24小时后查询。
  • 文字识别服务属于公有云服务,线上用户资源共享,如果需要多并发请求,请提前联系我们

调用方法

请参见如何调用API

前提条件

在使用之前,需要您完成服务申请和认证鉴权,具体操作流程请参见开通服务认证鉴权章节。

用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。

URI

POST /v2/{project_id}/ocr/invoice-verification

表1 路径参数

参数

是否必选

说明

endpoint

终端节点,即调用API的请求地址。

不同服务不同区域的endpoint不同,您可以从终端节点中获取。

例如,OCR服务在“华北-北京四”区域的“endpoint”“ocr.cn-north-4.myhuaweicloud.com”

project_id

项目ID,您可以从获取项目ID中获取。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

用于获取操作API的权限。获取Token接口响应消息头中X-Subject-Token的值即为Token。

Content-Type

String

发送的实体的MIME类型,参数值为“application/json”。

Enterprise-Project-Id

String

企业项目ID。OCR支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账。

获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。

企业项目创建步骤请参见用户指南。

说明:

创建企业项目后,在传参时,有以下三类场景。

  • 携带正确的ID,正常使用OCR服务,账单的企业项目会被分类到企业ID对应的企业项目中。
  • 携带格式正确但不存在的ID,正常使用OCR服务,账单的企业项目会显示对应不存在的企业项目ID。
  • 不携带ID或格式错误ID(包含特殊字符等),正常使用OCR服务,账单的企业项目会被分类到"default"中。
表3 请求Body参数

参数

是否必选

参数类型

说明

code

String

发票代码。

发票种类为全电发票时,该参数须为空字符串。

number

String

发票号码。

issue_date

String

发票日期格式YYYY-MM-DD。

check_code

String

校验码后六位。

  • 以下种类发票,check_code参数为必选。

    增值税普通发票、增值税电子普通发票、增值税普通发票(卷式)、增值税电子普通发票(通行费)、区块链电子发票。

  • 区块链电子发票需要填写5位校验码。

subtotal_amount

String

合计金额。和票据上的金额的有效数字保持一致,例如票据上的金额为88.00,则需要输入字符串为“88.00”,否则可能验真不成功。如果输入“88”或“88.0”可能会产生"result_code": "1010", " Parameter error."报错。

发票种类为全电发票时,该参数须为价税合计金额,其他票种使用不含税合计金额。

  • 以下种类发票,参数不可为空。

    增值税专用发票、增值税电子专用发票、机动车销售统一发票、二手车销售统一发票、区块链电子发票、全电发票。

  • 填写发票合计金额(不含税)

    增值税专用发票、增值税电子专用发票、机动车销售统一发票、区块链电子发票。

  • 填写发票车价合计

    二手车发票。

  • 填写发票合计金额

    全电发票。

  • 填写票价或者退票费

    全电发票(铁路电子客票)。

响应参数

根据识别的结果,可能有不同的HTTP响应状态码(status code)。例如,200表示API调用成功,400表示调用失败,详细的状态码和响应参数说明如下。

状态码: 200

表4 响应Body参数

参数

参数类型

描述

result

Object

识别结果。

调用失败时不返回此字段。

依据发票类型不同,返回参数不同。

表5 InvoiceVerificationResult 增值税发票

参数

参数类型

描述

result

Object

调用成功时返回的识别结果。

type

String

发票类型,取值范围:

  • 增值税专用发票:vat_special
  • 增值税普通发票:vat_normal
  • 增值税普通发票(卷式):vat_normal_roll
  • 增值税电子专用发票:vat_special_electronic
  • 增值税电子普通发票:vat_normal_electronic
  • 增值税电子普通发票(通行费):vat_normal_electronic_toll
  • 区块链电子发票:blockchain_electronic
  • 全电专用发票:fully_digitalized_special_electronic
  • 全电普通发票:fully_digitalized_normal_electronic

code

String

发票代码。

number

String

发票号码。

issue_date

String

开票日期。

machine_number

String

机器编号。

check_code

String

校验码。

status

String

发票状态,取值范围:

  • 正常:valid
  • 已作废:invalidated
  • 已红冲:reversed

subtotal_amount

String

合计金额(不含税)。

subtotal_tax

String

合计税额。

total

String

价税合计(小写)。

total_in_words

String

价税合计(大写)。

remarks

String

备注。

receiver

String

收款人。

issuer

String

开票人。

reviewer

String

复核人。

buyer_name

String

购买方名称。

buyer_id

String

购买方纳税人识别号。

buyer_address

String

购买方地址、电话。

buyer_bank

String

购买方开户行及账号。

seller_name

String

销售方名称。

seller_id

String

销售方纳税人识别号。

seller_address

String

销售方地址、电话。

seller_bank

String

销售方开户行及账号。

deductible_toll

String

通行费发票返回信息:

  • Y:可抵扣通行费
  • N:不可抵扣通行费

result_code

String

取值范围见表11

result_message

String

取值范围见表11

items

object

发票中包含的消费信息。

name

String

货物或应税劳务、服务名称、项目名称(通行费)。

specification

String

规格型号。

unit

String

单位。

quantity

String

数量。

unit_price

String

单价。

amount

String

金额。

tax_rate

String

税率。

tax

String

税额。

license_plate_number

String

车牌号。

vehicle_type

String

类型。

start_date

String

通行日期起。

end_date

String

通行日期止。

表6 InvoiceVerificationResult 机动车销售统一发票

参数

参数类型

描述

result

object

调用成功时返回的识别结果。

type

String

发票类型,取值范围:

机动车销售统一发票:motor_vehicle_sales。

code

String

发票代码。

number

String

发票号码。

issue_date

String

开票日期。

machine_number

String

机器编号。

status

String

发票状态,取值范围:

  • 正常:valid
  • 已作废:invalidated
  • 已红冲:reversed

subtotal_amount

String

不含税价(小写)。

total

String

价税合计(小写)。

total_in_words

String

价税合计(大写)。

issuer

String

开票人。

buyer_name

String

购方名称。

buyer_organization_number

String

购买方身份证号码/组织机构代码。

buyer_id

String

购买方纳税人识别号。

seller_name

String

销货单位名称。

seller_id

String

销售方纳税人识别号。

seller_phone

String

销售方电话。

seller_account

String

销售方账号。

seller_address

String

销售方地址。

seller_bank

String

销售方开户银行。

tax_rate

String

税率。

tax

String

税额。

tax_authority

String

主管税务机关名称。

tax_authority_code

String

主管税务机关代码。

tax_payment_receipt

String

完税凭证号码。

tonnage

String

吨位。

seating_capacity

String

限乘人数。

vehicle_type

String

车辆类型。

brand_model

String

厂牌型号。

manufacturing_location

String

产地。

quality_certificate

String

合格证号。

import_certificate

String

进口证明书号。

inspection_number

String

商检单号。

engine_number

String

发动机号码。

vehicle_identification_number

String

车辆识别代号/车架号码。

result_code

String

取值范围见表11

result_message

String

取值范围见表11

表7 InvoiceVerificationResult 二手车销售统一发票

参数

参数类型

描述

result

object

调用成功时返回的识别结果。

type

String

发票类型,取值范围:

二手车销售统一发票:used_vehicle_sales。

code

String

发票代码。

number

String

发票号码。

issue_date

String

开票日期。

machine_number

String

机器编号。

status

String

发票状态,取值范围:

  • 正常:valid
  • 已作废:invalidated
  • 已红冲:reversed

total

String

车价合计(小写)。

total_in_words

String

车价合计(大写)。

remarks

String

备注。

issuer

String

开票人。

buyer_name

String

买方单位/个人。

buyer_organization_number

String

买单位代码/身份证号码。

buyer_address

String

买方单位/个人住址。

buyer_phone

String

买方电话。

seller_name

String

卖方单位/个人。

seller_organization_number

String

卖方单位代码/身份证号码。

seller_address

String

卖方单位 /个人住址。

seller_phone

String

卖方电话。

vehicle_license_plate_number

String

车牌照号。

registration_certificate_number

String

登记证号。

vehicle_type

String

车辆类型。

vehicle_identification_number

String

车辆识别代号/车架号码。

brand_model

String

厂牌型号。

transfer_motor_vehicle_department_name

String

转入地车辆车管所名称。

auction_unit_name

String

经营,拍卖单位。

auction_unit_address

String

经营,拍卖单位地址。

auction_unit_tax_number

String

经营,拍卖单位纳税人识别号。

auction_unit_bank_and_account

String

开户银行及账号。

auction_unit_phone

String

经营,拍卖单位电话。

used_vehicle_market_name

String

二手车市场。

used_vehicle_market_tax_number

String

二手车市场纳税人识别号。

used_vehicle_market_address

String

二手车市场地址。

used_vehicle_market_bank_and_account

String

二手车市场开户银行及账号。

used_vehicle_market_phone

String

二手车市场电话。

result_code

String

取值范围见表11

result_message

String

取值范围见表11

表8 InvoiceVerificationResult 全电发票(航空运输电子客票行程单)

参数

参数类型

描述

result

object

调用成功时返回的调用结果。

type

String

发票类型,取值范围:

全电发票(航空运输电子客票行程单):fully_digitalized_flight_itinerary。

international_flag

String

国内国际标识。

number

String

发票号码。

status

String

发票状态,取值范围:

  • 正常:valid
  • 已作废:invalidated
  • 已红冲:reversed

passenger_name

String

旅客姓名。

id_number

String

有效身份证件号码。

gp_number

String

gp单号。

tax

String

增值税税额。

total

String

合计。

e_ticket_number

String

电子客票号码。

issue_date

String

填开日期。

buyer_name

String

购买方名称。

buyer_id

String

购买方纳税人识别号。

itinerary_list

Array of ItineraryList objects

机票行程列表。

表9 ItineraryList

参数

参数类型

描述

departure_station

String

始发站。

destination_station

String

目的站。

carrier

String

承运人。

flight

String

航班号。

cabin_class

String

座位等级。

date

String

日期。

time

String

时间。

fare_basis

String

客票类别。

flight_segment

String

航段。

表10 InvoiceVerificationResult 全电发票(铁路电子客票)

参数

参数类型

描述

result

object

调用成功时返回的调用结果。

type

String

发票类型,取值范围:

全电发票(铁路电子客票):fully_digitalized_train_ticket。

number

String

发票号码。

status

String

发票状态,取值范围:

  • 正常:valid
  • 已作废:invalidated
  • 已红冲:reversed

business_type

String

业务类型,取值范围:

  • 售票:ticketing
  • 退票:refund

issue_date

String

开票日期。

name

String

车票持有人姓名。

id_number

String

车票持有人的身份证号。

ticket_price

String

票价。

tax_rate

String

税率。

tax

String

税额。

departure_station

String

始发站。

destination_station

String

终点站。

train_number

String

车次。

departure_date

String

乘车日期。

departure_time

String

出发时间。

seat_category

String

席别。

carriage

String

车厢。

seat_number

String

座位号。

e_ticket_number

String

电子客票号码。

air_conditioning

String

空调特征(是否是空调车厢)。

buyer_name

String

购买方名称。

unified_social_credit_code

String

购买方统一社会信用号码。

表11 业务状态码

业务状态码(result_code)

描述信息(result_message)

处理方法

1000

The invoice verification information is consistent with the tax authority’s information.

发票验证信息与税务机关的信息一致。

无需处理,发票验证信息与税务机关信息一致。

1001

One invoice can be verified for only five times per day.

一张发票每天只能验证5次。

超过当天查验次数,请第二天再查验。

1002

The invoice verification information cannot be found in the tax authority’s information.

在税务机关的信息中找不到发票验证信息。

被查验发票信息有误,请核对发票信息是否填写正确。

1003

The invoice verification information is inconsistent with the tax authority’s information.

发票验证信息与税务机关的信息不一致。

被查验发票信息有误,请核对发票信息是否填写正确。

1004

Only invoices issued within the last five years can be verified.

只能验证最近五年内开具的发票。

超过5年的发票不能查验。

1005

Unsupported invoice type.

不支持的发票类型。

被查验发票信息有误,请核对发票信息是否填写正确。

1006

The invoice verification information is abnormal in the tax authority’s information.

The tax authority's interface is malfunctioning. Retry in 2 hours.

发票认证信息在税务机关信息中异常。

税局机关接口异常,请等候税局机关恢复后再重试,建议2小时后重试。

1007

This batch of invoices is being verified.

该批发票正在校验中。

该批次发票正在核验中,请第二天再查验。

1008

The request to the invoice verification service provided by the State Taxation Administration of China timed out.

The request to verify the invoice with the tax agency timed out. Retry in 2 hours.

向税务机关提供的发票验证服务的请求超时。

(税局机关)发票查询服务请求超时,请等候税局机关恢复后再重试,建议2小时后重试。

1009

Verification request rejected. Online invoice verification is currently not supported in this region.

验证请求被拒绝,此区域暂未开通线上查验通道。

(税局机关)查验请求被拒绝,此区域暂未开通线上查验通道。

1010

Parameter error.

参数错误。

参数错误,请检查请求参数是否填写正确。

0118

Service request error or the tax authority’s interface was malfunctioning.

Service request error as the tax agency's interface response timed out.

服务请求错误或税务机关的接口出现故障。

请等待税局机关接口恢复,建议2小时后重试。

状态码: 400

表12 响应Body参数

参数

参数类型

描述

error_code

String

调用失败时的错误码,具体请参见错误码

调用成功时不返回此字段。

error_msg

String

调用失败时返回的错误信息。

调用成功时不返回此字段。

请求示例

  • “endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点

    例如,发票验真服务部署在“华北-北京四”区域的“endpoint”“ocr.cn-north-4.myhuaweicloud.com”“ocr.cn-north-4.myhuaweicloud.cn”,请求URL为“https://ocr.cn-north-4.myhuaweicloud.com/v2/{project_id}/ocr/invoice-verification”“project_id”为项目ID,获取方法请参见获取项目ID

  • 如何获取Token请参见认证鉴权
  • 传入发票的代码、号码、发票日期、校验码后六位进行发票真伪核验
    POST https://{endpoint}/v2/{project_id}/ocr/invoice-verification
      Request Header:    
      Content-Type: application/json   
      X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...    
      Request Body: 
      { 
         "code": "031001900000",
         "number": "12528000",
         "issue_date": "2020-08-09",
         "check_code": "000000"
       }

响应示例

状态码:200

成功响应示例(增值税普通发票)

{
    "result": {
        "type": "vat_normal",
        "code": "03xxxxx00204",
        "number": "12528000",
        "issue_date": "20200809",
        "machine_number": "661xxxxx1000",
        "check_code": "79xxxxx8040xxxx00000",
        "status": "valid",
        "subtotal_amount": "1400.00",
        "subtotal_tax": "0.00",
        "total": "1400.00",
        "total_in_words": "壹仟肆佰元整",
        "remarks": "3091",
        "receiver": "",
        "issuer": "",
        "reviewer": "",
        "buyer_name": "xxx公司",
        "buyer_id": "91xxxxx0192xxxx00",
        "buyer_address": "",
        "buyer_bank": "",
        "seller_name": "xxx投资发展有限公司",
        "seller_id": "913101177858977000",
        "seller_address": "xx市xx区xx镇xx路xx号 021-xxxx1000",
        "seller_bank": "xx银行xx支行310xxxxxxxxx00000000",
        "deductible_toll": "N",
        "items": [
            {
                "name": "",
                "specification": "",
                "unit": "1",
                "quantity": "1",
                "unit_price": "1400.00",
                "amount": "1400.00",
                "tax_rate": "免税",
                "tax": "***",
                "license_plate_number": "",
                "vehicle_type": "",
                "start_date": "",
                "end_date": ""
            }
        ],
        "result_code": "1000",
        "result_message": "The invoice verification information is consistent with the tax authority’s information."
    }
}

成功响应示例(机动车销售统一发票)

{
    "result": {
        "type": "motor_vehicle_sales",
        "code": "14xxxxx20000",
        "number": "00xxxx94",
        "issue_date": "20171128",
        "machine_number": "49xxxxx10000",
        "status": "valid",
        "subtotal_amount": "68376.07",
        "total": "80000.00",
        "total_in_words": "捌万元整",
        "issuer": "",
        "buyer_name": "xx",
        "buyer_organization_number": "",
        "buyer_id": "",
        "seller_name": "xx汽车销售服务有限公司",
        "seller_id": "91xxxxx059xxxx0000",
        "seller_phone": "0898-xxxxxx00",
        "seller_account": "265xxxxxx000",
        "seller_address": "xx省xx市xx大道176号",
        "seller_bank": "中国银行xx支行",
        "tax_rate": "0.17",
        "tax": "11623.93",
        "tax_authority": "xx区局二分局户籍二组",
        "tax_authority_code": "146xxxxxx00",
        "tax_payment_receipt": "",
        "tonnage": "-",
        "seating_capacity": "5",
        "vehicle_type": "轿车",
        "brand_model": "北京牌BJxxxxxx000",
        "manufacturing_location": "北京",
        "quality_certificate": "YJxxxxxx270000",
        "import_certificate": "-",
        "inspection_number": "-",
        "engine_number": "BAxxxxx000",
        "vehicle_identification_number": "LNBSCxxxxx0000",
        "result_code": "1000",
        "result_message": "The invoice verification information is consistent with the tax authority’s information."
    }
}

成功响应示例(二手车销售统一发票)

{
    "result": {
        "type": "used_vehicle_sales",
        "code": "03xxxxxx0000",
        "number": "00xxx000",
        "issue_date": "20191202",
        "machine_number": "661xxxxxx000",
        "status": "valid",
        "total": "20000.00",
        "total_in_words": "贰万元整",
        "remarks": "卖方纳税人识别号:33xxxxx900xxxxx00 买方纳税人识别号:37xxxxxx561xxxxx00 初次登记:2014-07-24 免征税款",
        "issuer": "",
        "buyer_name": "xxx",
        "buyer_organization_number": "37xxxxxx561xxxxx00",
        "buyer_address": "xx省xx市xx路街道办事处xx庄居委会xx号",
        "buyer_phone": ".",
        "seller_name": "xxx",
        "seller_organization_number": "339xxxxxx009xxxx00",
        "seller_address": "xx省xx市xx市xx路xx号",
        "seller_phone": ".",
        "vehicle_license_plate_number": "苏Kxxxx0",
        "registration_certificate_number": "32xxxxxx0000",
        "vehicle_type": "小型轿车",
        "vehicle_identification_number": "LBxxxxxxZ3xxxxxx000",
        "brand_model": "xx牌HQxxxx000",
        "transfer_motor_vehicle_department_name": "xx车辆管理所",
        "auction_unit_name": "",
        "auction_unit_address": "",
        "auction_unit_tax_number": "",
        "auction_unit_bank_and_account": "",
        "auction_unit_phone": "",
        "used_vehicle_market_name": "xx旧机动车交易市场",
        "used_vehicle_market_tax_number": "91xxxxx2MAxxxxx000",
        "used_vehicle_market_address": "xx市xx区xx路xxx号",
        "used_vehicle_market_bank_and_account": "xxxx银行股份有限公司xxxx物流园分理处10xxxxx040xxxx00",
        "used_vehicle_market_phone": "13xxxxx0000",
        "result_code": "1000",
        "result_message": "The invoice verification information is consistent with the tax authority’s information."
    }
}

状态码:400

失败响应示例

{ 
    "error_code": "AIS.0118", 
    "error_msg": "Service request error." 
}

SDK代码示例

SDK代码示例如下。

使用SDK前建议将SDK更新至最新版,防止本地旧版SDK无法使用最新的OCR功能。

传入发票的代码、号码、发票日期、校验码后六位进行发票真伪核验

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.ocr.v1.region.OcrRegion;
import com.huaweicloud.sdk.ocr.v1.*;
import com.huaweicloud.sdk.ocr.v1.model.*;


public class RecognizeInvoiceVerificationSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");

        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

        OcrClient client = OcrClient.newBuilder()
                .withCredential(auth)
                .withRegion(OcrRegion.valueOf("<YOUR REGION>"))
                .build();
        RecognizeInvoiceVerificationRequest request = new RecognizeInvoiceVerificationRequest();
        InvoiceVerificationRequestBody body = new InvoiceVerificationRequestBody();
        body.withCheckCode("000000");
        body.withIssueDate("2020-08-09");
        body.withNumber("12528000");
        body.withCode("031001900000");
        request.withBody(body);
        try {
            RecognizeInvoiceVerificationResponse response = client.recognizeInvoiceVerification(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

传入发票的代码、号码、发票日期、校验码后六位进行发票真伪核验

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# coding: utf-8

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkocr.v1.region.ocr_region import OcrRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkocr.v1 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.getenv("CLOUD_SDK_AK")
    sk = os.getenv("CLOUD_SDK_SK")

    credentials = BasicCredentials(ak, sk) \

    client = OcrClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(OcrRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = RecognizeInvoiceVerificationRequest()
        request.body = InvoiceVerificationRequestBody(
            check_code="000000",
            issue_date="2020-08-09",
            number="12528000",
            code="031001900000"
        )
        response = client.recognize_invoice_verification(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

传入发票的代码、号码、发票日期、校验码后六位进行发票真伪核验

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    ocr "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ocr/v1"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ocr/v1/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ocr/v1/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()

    client := ocr.NewOcrClient(
        ocr.OcrClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.RecognizeInvoiceVerificationRequest{}
	checkCodeInvoiceVerificationRequestBody:= "000000"
	request.Body = &model.InvoiceVerificationRequestBody{
		CheckCode: &checkCodeInvoiceVerificationRequestBody,
		IssueDate: "2020-08-09",
		Number: "12528000",
		Code: "031001900000",
	}
	response, err := client.RecognizeInvoiceVerification(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

成功响应示例(增值税普通发票)

400

失败响应示例

状态码请参见状态码

错误码

错误码请参见错误码

相关文档