1.02.发票红冲接口(通过流水号做全额冲红)
POST
/m5/bill/invoice/invalid1. 发票金额算法:
1.1 蓝票算法:
不含税金额(四舍五入,保留两位小数)= 含税金额/(1+税率)
税额= 含税金额-不含税金额
不含税总金额=各行不含税金额相加
总税额 = 价税合计-不含税总金额
最后一项税额 = 总税额-(前n项税额之和)
1.2 红票算法:
价税合计=取蓝票的价税合计
合计税额=取蓝票的合计税额
合计金额=取蓝票合计金额
2. 明细项:
不含税金额(四舍五入,保留两位小数)= 含税金额/(1+税率)
税额= 含税金额-不含税金额
最后一项不含税金额 = 合计金额-(前n项不含税金额之和)
最后一项税额 = 合计税额-(前n项税额之和)
3. 误差规则
单行商品明细 |单价×数量-金额|<=0.01 元
|不含税金额×税率-税额|<=0.06元
4. 发票开具校验注意事项
4.1 正数发票
正数发票合计金额>0 ;
价税合计=合计金额+合计税额;
开票合计金额 与 明细行所有金额加起来要一致;
开票合计税额 与 明细行所有税额加起来要一致;
除折扣行外,正数发票的商品行金额必须大于0 ;
正数发票每行商品行金额均不能为0,税额不能为负数 ;
折扣行金额不能大于被折扣行金额。多行折扣情况下,折扣行金额不能大于各被折扣行金额之和。
正数发票金额为负的商品行(即折扣行),其上一行商品金额必须为正。
单价和数量同时为空,或都不能为空 ;
金额、税额、数量、单价必须是合法数字 ;
折扣行税率必须与被折扣行税率相同。多行折扣情况下,各被折扣行税率相同,且与折扣行税率相同。
4.2 负数发票
负数发票合计金额<0 ;
价税合计=合计金额+合计税额;
开票合计金额 与 明细行所有金额加起来要一致;
开票合计税额 与 明细行所有税额加起来要一致;
负数发票的商品行金额必须小于0,税额不能为正数;
单价和数量同时为空,或都不能为空 ;
金额、税额、数量、单价必须是合法数字
5. 差额征税发票注意事项
5.1 如果BMB_BBH不为空,并且第一行商品明细中KCE不为空,则认为是差额征税发票。
5.2 差额征税蓝字发票:只允许一条商品行,如果存在折扣行,则最多两条。
5.3 差额征税红字发票:只允许一条商品行。
5.4 差额征税蓝字发票:第一行商品明细中KCE不能为负数,并且不能大于第一行商品的不含税金额。
5.5 差额征税红字发票:第一行商品明细中KCE不能为正数,并且不能大于第一行商品的不含税金额。
5.6 差额征税蓝字发票:备注中要增加“差额征税:20.00。”字样,如图1。
5.7 差额征税红字发票:备注中要增加“差额征税。”字样,如图2。
5.8 差额征税计算公式:不含税差额 = 不含税金额 - 扣除额; 税额 = 不含税差额*税率。 开具请求报文要按照上述计算公式计算税额,合计税额等,开票服务不进行相应计算,只进行误差校验。
图一:
图二:
请求参数
当前13位毫秒级时间戳加3位随机数字(总共16位)
发票序列号,20位以上
红冲原因,不填系统默认传2,需要税局校验 1:销货退回 2:开票有误 3:服务中止 4:销售折让
{
"serialNo": "string",
"originalSerialNo": "string",
"redReason": "string"
}
示例代码
返回响应
{
"errcode": "string",
"description": "string",
"data": {
"invoiceCode": "string",
"invoiceNo": "string",
"pdfUrl": "string",
"serialNo": "string"
}
}