普通增值税发票左上角的二维码可以扫出来吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普通增值税发票左上角的二维码可以扫出来吗?相关的知识,希望对你有一定的参考价值。
可以。增值税防伪税控系统汉字项目是在不改变防伪系统密码体系前提下,采用数字密码和二维码技术,利用存储更多信息量的二维码替代原来的84位和108位字符密文;
在加密发票七要素信息的基础上实现对购买方企业名称、销售方企业名称、货物名称、单位和数量等信息的加密、报税采集和解密认证功能。
扩展资料
增值税普通发票的格式、字体、栏次、内容与增值税专用发票完全一致,按发票联次分为两联票和五联票两种,基本联次为两联,第一联为记账联,销货方用作记账凭证;
第二联为发票联,购货方用作记账凭证。此外为满足部分纳税人的需要,在基本联次后添加了三联的附加联次,即五联票。增值税普通发票第二联采用防伪纸张印制。代码采用专用防伪油墨印刷,号码的字型为专用异型体。各联次的颜色依次为蓝、橙、绿蓝、黄绿和紫红色。
参考资料来源:百度百科-增值税普通发票
参考技术A普通增值税发票左上角的二维码可以扫出来。
增值税普通发票,是将除商业零售以外的增值税一般纳税人纳入增值税防伪税控系统开具和管理,也就是说一般纳税人可以使用同一套增值税防伪税控系统开具增值税专用发票、增值税普通发票等,俗称“一机多票”。
企业端开票系统从2005年8月份开始分别在北京市西城区,浙江省杭州市、湖州市,山东省淄博市、东营市和烟台市的部分企业进行试运行,计划从10月份开始在全国陆续推行。“一机多票”系统使用的普通发票统称为“增值税普通发票”,实行统一印制,于2005年8月1日起陆续在全国启用。
2017年12月,税务总局发布公告,从2018年1月1日起调整增值税普通发票(折叠票)发票代码从现行的10位到12位。
参考技术B可以。增值税防伪税控系统汉字项目是在不改变防伪系统密码体系前提下,采用数字密码和二维码技术,利用存储更多信息量的二维码替代原来的84位和108位字符密文;
在加密发票七要素信息的基础上实现对购买方企业名称、销售方企业名称、货物名称、单位和数量等信息的加密、报税采集和解密认证功能。
/iknow-pic.cdn.bcebos.com/8d5494eef01f3a29c227799d9725bc315d607cf2"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/8d5494eef01f3a29c227799d9725bc315d607cf2?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"/>
扩展资料
增值税普通发票的格式、字体、栏次、内容与增值税专用发票完全一致,按发票联次分为两联票和五联票两种,基本联次为两联,第一联为记账联,销货方用作记账凭证;
第二联为发票联,购货方用作记账凭证。此外为满足部分纳税人的需要,在基本联次后添加了三联的附加联次,即五联票。增值税普通发票第二联采用防伪纸张印制。代码采用专用防伪油墨印刷,号码的字型为专用异型体。各联次的颜色依次为蓝、橙、绿蓝、黄绿和紫红色。
参考资料来源:/baike.baidu.com/item/增值税普通发票"target="_blank"title="百度百科-增值税普通发票">百度百科-增值税普通发票
- 官方服务
- 官方网站官方网站
如何通过增值税(区块链)发票上的二维码获取发票要素信息
在我们收到的增值税电子发票、普票、专票,包括现在深圳专有的区块链发票上,在其左上侧空白位置都会有一个二维码,通过这个二维码呢,我们可以获取到发票关键的几样要素信息:发票代码、发票号码、开票日期、金额、不含税金额、校验码、销售方纳税人识别号
,其中校验码
为增值税普通发票和增值税电子普通发票专有,销售方纳税人识别号
是深圳电子普通发票专有。
PS:增值税普通发票(卷票)的二维码只包含发票代码、发票号码
,不包含其它要素信息。
通过增值税专票、普票、电子普通发票的二维码,你可以扫描出如下结果:
//例子:01,04,1200153320,07041662,183.49,20151221,83623873463907646339,5080,
其含义解释如下:
//解释:01,04(01,04是普通发票,01,01是专用发票,01,10是电子发票),1200153320(发票代码),07041662(发票号码),183.49(不含税金额),20151221(开票日期),83623873463907646339(校验码),5080(未知含义,与航信确认过该字段可以自定义)
而通过深圳电子普通发票的二维码呢,你可能会扫描出两种结果:
//结果1,与增值税发票格式类似,但数据排列、部分数据有所差异
//01,10,144031909110,01034285,91440300708437873H,5.45,20190320,0053e0982be37e9763314b0c8a58b7c121e0b8b59b03bf3cae346ea8c7d2cbd7b4
//结果2,是个Url地址,可以在浏览器中展示发票要素信息
//https://bcfp.shenzhen.chinatax.gov.cn/verify/scan?hash=007547b34bf2fa4dfadf9dd789f9b017b59bee8c563e1185232d66bc58b7c90a04&bill_num=05830164&total_amount=500
上图是两种结果对应的二维码,对于第二种结果,既然页面可以展示出发票要素信息,那么自然我们也就可以通过相应途径模拟请求后获得要素信息,通过F12
开发者模式,略加观察,就可以发现真正获取发票要素信息的其实另有地址:
在增值税发票二维码的传统格式中,通过发票代码
我们可以区分发票类型,当然如何区分需要专业的发票知识,你不懂也没关系,通过NumberValidators这个类库,我们可以很轻松的得出发票类型,至于深圳电子普通发票的Url
格式,我更喜欢通过RestSharp来模拟请求,另外因为Url
格式取到的发票日期
是以时间戳格式返回,相关金额是以分为单位返回,所以需要做些额外的处理
static void AnalyzeInvoice()
var list = new List<string>()
"01,04,031001800104,73381916,104.85,20180912,76748755340074061279,E7B,",
"01,10,144031909110,01034285,91440300708437873H,5.45,20190320,0053e0982be37e9763314b0c8a58b7c121e0b8b59b03bf3cae346ea8c7d2cbd7b4",
"https://bcfp.shenzhen.chinatax.gov.cn/verify/scan?hash=007547b34bf2fa4dfadf9dd789f9b017b59bee8c563e1185232d66bc58b7c90a04&bill_num=05830164&total_amount=500"
;
foreach (var data in list)
if (data.StartsWith("01,"))//二维码的通用格式均以01开头
AnalyzeInvoiceWithOriginal(data);
else if (data.StartsWith("http", StringComparison.OrdinalIgnoreCase))
AnalyzeBlockchainInvoiceWithUrl(data);
else
Console.WriteLine("未知");
Console.WriteLine("************************************");
static void AnalyzeInvoiceWithOriginal(string data)
//data = "01,10,144031909110,01034285,91440300708437873H,5.45,20190320,0053e0982be37e9763314b0c8a58b7c121e0b8b59b03bf3cae346ea8c7d2cbd7b4";
var arr = data.Split(',');
if (arr.Length >= 8)
var valid = NumberValidators.Invoices.Validators.VATCodeValidatorHelper.Validate(arr[2]);
if (valid.IsValid)
if (valid.Category == NumberValidators.Invoices.VATKind.Blockchain)
Console.WriteLine(@"区块链电子普通发票二维码原始格式结果
发票代码:0
发票号码:1
开票时间:2
不含税金额:3
销售方纳税人识别号:4", arr[2], arr[3], arr[6], arr[5], arr[4]);
else
Console.WriteLine(@"增值税发票二维码原始格式结果
发票代码:0
发票号码:1
开票时间:2
不含税金额:3
发票类型:4", arr[2], arr[3], arr[5], arr[4], valid.Category);
else
Console.WriteLine("不是正确的发票格式");
static void AnalyzeBlockchainInvoiceWithUrl(string qrUrl)
//qrUrl = @"https://bcfp.shenzhen.chinatax.gov.cn/verify/scan?hash=007547b34bf2fa4dfadf9dd789f9b017b59bee8c563e1185232d66bc58b7c90a04&bill_num=05830164&total_amount=500";
var qrUri = new Uri(qrUrl);
if (!qrUri.Host.Equals("bcfp.shenzhen.chinatax.gov.cn", StringComparison.OrdinalIgnoreCase))
Console.WriteLine("不是深圳电子普通发票的域名");
return;
var collection = HttpUtility.ParseQueryString(qrUri.Query);
var url = $"qrUri.Scheme://qrUri.Host/dzswj/bers_ep_web/query_bill_detail";
var restClient = new RestClient(url);
var restRequest = new RestRequest(Method.POST);
restRequest.AddParameter("bill_num", collection["bill_num"]);
restRequest.AddParameter("total_amount", collection["total_amount"]);
restRequest.AddParameter("tx_hash", collection["hash"]);
var restResponse = restClient.Execute(restRequest);
Console.WriteLine("区块链电子普通发票二维码Url格式服务端响应内容:");
Console.WriteLine(restResponse.Content);
var json = (JObject)JsonConvert.DeserializeObject(restResponse.Content);
if (json["retcode"].ToString() == "0")
var record = json["bill_record"];
var time = record.Value<long>("time");
var dt = DateTimeOffset.FromUnixTimeSeconds(time).LocalDateTime;
Console.WriteLine(@"区块链电子普通发票Url格式结果
发票代码:0
发票号码:1
开票时间:2:yyyy-MM-dd HH:mm:ss
不含税金额:3
销售方纳税人识别号:4", record["bill_code"], record["bill_num"], dt, record.Value<int>("amount") * 0.01m, record["seller_taxpayer_id"]);
else
Console.WriteLine("服务端响应错误:0", json["retmsg"]);
执行结果如下图
以上是关于普通增值税发票左上角的二维码可以扫出来吗?的主要内容,如果未能解决你的问题,请参考以下文章