请求开具发票接口

填写发票销方、购方、明细等信息并发起开票请求。

1.请求参数:

请求URL:

POST https://kf.fw199.com/gateway/nuonuo/invoice/billingnew

参数名 类型 必须 示例值 说明
appid String true uwkahf@jfs92 合作伙伴AppId
timestamp String true 1633618722 当前时间戳
sign String true 999de41d862efaa6f1084ead3b3ba480 如何计算生成见示例代码
tax_num String true 4214132412414 销售方税号
sale_name String true 上海XXX科技有限公司 销售方企业全称
request_data Json true 见示例代码 开票业务报文

2. 请求示例代码(Java)

   @Test
    public void  NNBillingNEW() throws Exception {

        // 销售方公司全名
        String saleName = "上海XXX科技有限公司";
        // 销售方公司税号
        String saleTaxNum = "xxxxxxxxxx";
        // 回调地址,需要公网能访问
        String notifyUrl = "http://youdomain.com/fc/nuonuo/notify";

        BillingNewRequest billingNewRequest = new BillingNewRequest();
        Order order =new Order();
        // 以下入参是必须或是重要
        order.setBuyerName("上海xxxxxx科技有限公司");
        order.setBuyerTaxNum("91310000MA7EFBKaa3");
        order.setSalerTel("0571-77777777");
        order.setSalerAddress("杭州市西湖区文三路200号");
        // 生成订单号,按规则年月日小时分秒+6位流水号
        String orderNo = Utils.generateOrderNumber();
        order.setOrderNo(orderNo);
        order.setInvoiceDate("2023-12-13 12:30:00");
        order.setClerk("张三");
        // 清单标志:非清单:0;清单:1,默认:0,电票固定为0
        order.setListFlag("0");
        // 买方的推送邮箱(pushMode为0或2时,此项为必填,同时受企业资质是否必填控制)
         order.setEmail("xxxxxxxxxxx@163.com");
        // 推送方式:-1,不推送;0,邮箱;1,手机(默认);2,邮箱、手机
        order.setPushMode("0");
        order.setInvoiceType("1");
        // 回调地址
        order.setCallBackUrl(notifyUrl);
        // 全电就是代表全电账号,电子税务局是用账号来开发票的,税盘的是税盘本来就有的分机号,税局发行的上面有
        order.setExtensionNumber("923");
        // 发票种类, bs:电子发票(增值税专用发票)-即数电专票(电子)
        order.setInvoiceLine("bs");
        order.setRemark("我是发票备注处的内容");
        // 销方税号 
        order.setSalerTaxNum(saleTaxNum);
        // 发票明细
        InvoiceDetail invoiceDetail= new InvoiceDetail();
        invoiceDetail.setSpecType("120x80");
        invoiceDetail.setDField1("");
        invoiceDetail.setTaxExcludedAmount("100");
        invoiceDetail.setInvoiceLineProperty("0");
        invoiceDetail.setFavouredPolicyName("0");
        invoiceDetail.setDField3("");
        invoiceDetail.setDField2("");
        invoiceDetail.setDField5("");
        invoiceDetail.setNum("1");
        invoiceDetail.setDField4("");
        invoiceDetail.setWithTaxFlag("0");
        invoiceDetail.setTax("13");
        invoiceDetail.setFavouredPolicyFlag("0");
        invoiceDetail.setTaxRate("0.13");
        invoiceDetail.setUnit("张");
        invoiceDetail.setDeduction("0");
        invoiceDetail.setPrice("100");
        invoiceDetail.setZeroRateFlag("0");
        invoiceDetail.setImmediateTaxReturnType("");
        invoiceDetail.setGoodsCode("1090511030000000000");
        invoiceDetail.setSelfCode("130005426000000000");
        invoiceDetail.setGoodsName("EM蓝板");
        invoiceDetail.setTaxIncludedAmount("113");
        List<InvoiceDetail> invoiceDetails = new ArrayList<InvoiceDetail>();
        invoiceDetails.add(invoiceDetail);
        order.setInvoiceDetail(invoiceDetails);
        billingNewRequest.setOrder(order);
        String content = JSON.toJSONString(billingNewRequest);

        //业务参数
        Map<String, String> data = new HashMap<String, String>();
        data.put("appid",  Config.AppId);
        Long timestamp = System.currentTimeMillis() / 1000;
        data.put("timestamp", timestamp.toString());
        data.put("tax_num", saleTaxNum);
        data.put("sale_name", saleName);
        data.put("request_data",content);
        // 签名
        data.put("sign", Utils.Sign(data,Config.AppSecret));
        // 调用服务API
        String resp = doHttpRequest(Config.NN_BILLING_NEW, data);
        BillingNewResponse billingNewResponse = JSON.parseObject(resp, BillingNewResponse.class);
        System.out.println("code:" + billingNewResponse.getCode());
    }

2.1 请求参数说明

请求入参request_data是json格式的业务报文字段,其中包含的字段含义说明如下。

名称 类型 是否必须 示例值 最大长度 描述
order Object Y 请求体
buyerName String Y 企业名称/个人 100 购方名称
buyerTaxNum String N 339901999999198 20 购方税号(企业要填,个人可为空;数电专票、二手车销售统一发票时必填)
buyerTel String N 0571-88888888 50 购方电话(购方地址+电话总共不超100字符;二手车销售统一发票时必填)
buyerAddress String N 杭州市 80 购方地址(购方地址+电话总共不超100字符;二手车销售统一发票时必填)
buyerAccount String N 中国工商银行 111111111111 100 购方银行开户行及账号
salerTaxNum String Y 339901999999199 20 销方税号(使用沙箱环境请求时消息体参数salerTaxNum和消息头参数userTax填写339902999999789113)
salerTel String Y 0571-77777777 20 销方电话(在诺税通saas工作台配置过的可以不传,以传入的为准)
salerAddress String Y 80 销方地址(在诺税通saas工作台配置过的可以不传,以传入的为准)
salerAccount String N 100 销方银行开户行及账号(二手车销售统一发票时必填)
showBankAccountType String N 0 2 不传默认为0:都不显示;传1:备注仅显示销方开户行及账号;传2:备注仅显示购方开户行及账号;传3:购销方开户行及账号都显示(此字段仅在数电普票和数电专票下生效)
orderNo String Y 201701053332079312313 20 订单号(每个企业唯一)
invoiceDate String Y 2022-01-13 12:30:00 20 订单时间
invoiceCode String N 12 冲红时填写的对应蓝票发票代码(红票必填 10位或12 位, 11位的时候请左补 0)
invoiceNum String N 8 冲红时填写的对应蓝票发票号码(红票必填,不满8位请左补0)
redReason String N 1 1 冲红原因:1:销货退回;2:开票有误;3:服务中止;4:发生销售折让(开具红票时且票种为p,c,e,f,r需要传–成品油发票除外;不传时默认为 1)
billInfoNo String N 1403011904008472 24 红字信息表编号.专票冲红时此项必填,且必须在备注中注明“开具红字增值税专用发票信息表编号ZZZZZZZZZZZZZZZZ”字样,其 中“Z”为开具红字增值税专用发票所需要的长度为16位信息表编号(建议16位,最长可支持24位)。
departmentId String N 9F7E9439CA8B4C60A2FFF3EA3290B088 32 部门门店id(诺诺系统中的id)
clerkId String N 32 开票员id(诺诺系统中的id)
remark String N 备注信息 230 冲红时,在备注中注明“对应正数发票代码:XXXXXXXXX号码:YYYYYYYY”文案,其中“X”为发票代码,“Y”为发票号码,可以不填,接口会自动添加该文案;机动车发票蓝票时备注只能为空;数电票时最长为200字符
checker String N 王五 20 复核人(数电电票时若有值,会显示在生成的PDF/OFD备注栏中)
payee String N 李四 20 收款人(数电电票时若有值,会显示在生成的PDF/OFD备注栏中)
showCheckerType String N 0 2 数电电票是否展示收款人和复核人,0:不显示 1:显示
clerk String Y 张三 20 开票员(数电票时需要传入和开票登录账号对应的开票员姓名)
listFlag String N 0 1 清单标志:非清单:0;清单:1,默认:0,电票固定为0
listName String N 详见销货清单 92 清单项目名称:对应发票票面项目名称(listFlag为1时,必填,默认为“详见销货清单”)
pushMode String N 1 2 推送方式:-1,不推送;0,邮箱;1,手机(默认);2,邮箱、手机
buyerPhone String Y 15858585858 20 购方手机(pushMode为1或2时,此项为必填,同时受企业资质是否必填控制)
email String Y test@xx.com 50 推送邮箱(pushMode为0或2时,此项为必填,同时受企业资质是否必填控制)
ccPhone String N 18399887766,18399882211 100 抄送手机,多个时用英文逗号隔开,最多支持5个,必须在phone字段有值时,才支持传入
ccEmail String N nuonuowang@qq.com,hahaha@qq.com 250 抄送邮箱,多个时用英文逗号隔开,最多支持5个,必须在email字段有值时,才支持传入
invoiceType String Y 1 1 开票类型:1:蓝票;2:红票 (数电票冲红请对接数电快捷冲红接口)
invoiceLine String N p 2 发票种类:p,普通发票(电票)(默认);c,普通发票(纸票);s,专用发票;e,收购发票(电票);f,收购发票(纸质);r,普通发票(卷式);b,增值税电子专用发票;j,机动车销售统一发票;u,二手车销售统一发票;bs:电子发票(增值税专用发票)-即数电专票(电子),pc:电子发票(普通发票)-即数电普票(电子),es:数电纸质发票(增值税专用发票)-即数电专票(纸质);ec:数电纸质发票(普通发票)-即数电普票(纸质)
paperInvoiceType String N 12 数电纸票类型(数电纸票时才需要传):(票种为ec时,默认04;票种为es时,默认为1130); 04 2016版增值税普通发票(二联折叠票), 05 2016版增值税普通发票(五联折叠票), 000008101200 2008版增值税普票(二联),000008101500 2008版增值税普票(五联),1130 增值税专用发票(中文三联无金额限制版), 1140 增值税专用发票(中文四联无金额限制版), 1160 增值税专用发票(中文六联无金额限制版), 1170 增值税专用发票(中文七联无金额限制版)
specificFactor String N 0 2 特定要素:0普通发票(默认)、1 成品油 、2 稀土(仅支持s、bs票种且编码必须为稀土产品目录中的商品)、3 建筑服务、4 货物运输服务、5 不动产销售、6 不动产经营租赁服务、9 旅客运输服务、12 自产农产品销售、16 农产品收购、31 建安发票 、 32 房地产销售发票、33 二手车发票反向开具、 34 电子烟、 35 矿产品
forceFlag String N 0 2 是否强制开具标识:0 否、1 是 (发票种类为u,且特定要素为 33-二手车发票反向开具时才需要填; 默认为 0;若为1时,则不校验卖方自然人身份证号的合规性)
proxyInvoiceFlag String N 0 1 代开标志:0非代开;1代开。代开蓝票时备注要求填写文案:代开企业税号:,代开企业名称:;代开红票时备注要求填写文案:对应正数发票代码:号码:代开企业税号:代开企业名称:
taxRebateProxy String N 0 1 代办退税标记:0否(默认),1是;仅代办退税资质企业可传1
invoiceDifferenceType String N 02 2 数电发票差额征税开具方式:01 全额开票,02 差额开票;非数电发票开具差额时,不传
callBackUrl String N http:127.0.0.1/invoice/callback/ 回传发票信息地址(开票完成、开票失败)
extensionNumber String N 0 5 分机号(只能为空或者数字)
terminalNumber String N 4 终端号(开票终端号,只能 为空或数字)
machineCode String N 123456789123 12 机器编号(12位盘号)
vehicleFlag String N 1 1 是否机动车类专票 0-否 1-是
hiddenBmbbbh String N 0 1 是否隐藏编码表版本号 0-否 1-是(默认0,在企业资质中也配置为是隐藏的时候,并且此字段传1的时候代开发票 税率显示***)
nextInvoiceCode String N 12 指定发票代码(票种为c普纸、f收购纸票时允许指定卷开具) 非必填
nextInvoiceNum String N 8 发票起始号码,当指定代码有值时,发票起始号码必填
invoiceNumEnd String N 8 发票终止号码,当指定代码有值时,发票终止号码必填
surveyAnswerType String N 1 3%、1%税率开具理由(企业为小规模/点下户时才需要),对应值:1-开具发票为2022年3月31日前发生纳税义务的业务; 2-前期已开具相应征收率发票,发生销售折让、中止或者退回等情形需要开具红字发票,或者开票有误需要重新开具; 3-因为实际经营业务需要,放弃享受免征增值税政策
buyerManagerName String N 张三 16 购买方经办人姓名(数电票特有字段)
managerCardType String N 201 40 经办人证件类型:101-组织机构代码证, 102-营业执照, 103-税务登记证, 199-其他单位证件, 201-居民身份证, 202-军官证, 203-武警警官证, 204-士兵证, 205-军队离退休干部证, 206-残疾人证, 207-残疾军人证(1-8级), 208-外国护照, 210-港澳居民来往内地通行证, 212-中华人民共和国往来港澳通行证, 213-台湾居民来往大陆通行证, 214-大陆居民往来台湾通行证, 215-外国人居留证, 216-外交官证 299-其他个人证件(数电发票特有)
managerCardNo String N 20 经办人证件号码(数电票特有字段)
bField1 String N 255 业务方自定义字段1,本应用只作保存
bField2 String N 255 业务方自定义字段2,本应用只作保存
bField3 String N 255 业务方自定义字段3,本应用只作保存
naturalPersonFlag String N 0 1 购买方自然人标志:0-否(默认),1-是;仅在开具数电普票(电子)时使用,如受票方(发票抬头)为自然人,并要求能将发票归集在个人票夹中展示,需提供姓名及身份证号(自然人纳税人识别号),此参数传入1;如受票方(发票抬头)为个体工商户,需提供社会统一信用代码或纳税人识别号,此参数传入0
certificateType String N 201 数电农产品收购发票销售方证件类型,数电农产品收购必传,对应buyerTaxNum字段。103 税务登记证,201 居民身份证,208 外国护照,210 港澳居民来往内地通行证,213 台湾居民来往大陆通行证,215 外国人居留证,219 香港永久性居民身份证,220 台湾身份证,221 澳门特别行政区永久性居民身份证,233 外国人永久居留身份证(外国人永久居留证),299 其他个人证件
taxNumVerifyFlag String N 1 对购方税号校验( 0-不校验 1-校验,仅对数电票有效,未传时则取企业配置的值;注:若开启校验,当购方税号未能在电子税局中找到时 则会开票失败)
naturalPersonVerifyFlag String N 1 对购方名称校验( 0-不校验 1-校验,仅对数电普票(电子)有效,未传时则取企业配置的值;若开启校验,当开具非自然人标记的数电普票(电子)时,将限制对于“购买方名称长度小于等于4位”的发票的开具)
+invoiceDetail Array Y 100 发票明细,支持填写商品明细最大2000行(包含折扣行、被折扣行)
— goodsName String Y 电脑 90 商品名称(如invoiceLineProperty =1,则此商品行为折扣行,折扣行不允许多行折扣,折扣行必须紧邻被折扣行,商品名称必须与被折扣行一致)
— goodsCode String N 1090511030000000000 19 商品编码(商品税收分类编码开发者自行填写)
— selfCode String N 130005426000000000 16 自行编码(可不填)
— withTaxFlag String Y 1 1 单价含税标志:0:不含税,1:含税
— price String N 16 单价(精确到小数点后8位),当单价(price)为空时,数量(num)也必须为空;(price)为空时,含税金额(taxIncludedAmount)、不含税金额(taxExcludedAmount)、税额(tax)都不能为空
— num String N 16 数量(精确到小数点后8位,开具红票时数量为负数)
— unit String N 20 单位
— specType String N y460 40 规格型号
— tax String N 0.12 16 税额(精确到小数点后2位),[不含税金额] * [税率] = [税额];税额允许误差为 0.06。红票为负。不含税金额、税额、含税金额任何一个不传时,会根据传入的单价,数量进行计算,可能和实际数值存在误差,建议都传入
— taxRate String Y 0.13 10 税率,注:1、纸票清单红票存在为null的情况;2、二手车发票税率为null或者0
— taxExcludedAmount String N 0.88 16 不含税金额(精确到小数点后2位)。红票为负。不含税金额、税额、含税金额任何一个不传时,会根据传入的单价,数量进行计算,可能和实际数值存在误差,建议都传入
— taxIncludedAmount String N 1 16 含税金额(精确到小数点后2位),[不含税金额] + [税额] = [含税金额],红票为负。不含税金额、税额、含税金额任何一个不传时,会根据传入的单价,数量进行计算,可能和实际数值存在误差,建议都传入
— invoiceLineProperty String N 0 1 发票行性质:0,正常行;1,折扣行;2,被折扣行,红票只有正常行
— favouredPolicyFlag String N 0 2 优惠政策标识:0,不使用;1,使用; 数电票时: 01:简易征收 02:稀土产品 03:免税 04:不征税 05:先征后退 06:100%先征后退 07:50%先征后退 08:按3%简易征收 09:按5%简易征收 10:按5%简易征收减按1.5%计征 11:即征即退30% 12:即征即退50% 13:即征即退70% 14:即征即退100% 15:超税负3%即征即退 16:超税负8%即征即退 17:超税负12%即征即退 18:超税负6%即征即退
— immediateTaxReturnType String N 01 2 即征即退类型标识:01-软件产品,02-资源综合利用产品 03-管道运输服务,04-有形动产融资租赁服务,05-有形动产融资性售后回租服务,06-新型墙体材料,07-风力发电产品,08-光伏发电产品,09-动漫软件产品,10-飞机维修劳务,11-黄金,12-铂金。已在税局进行增值税即征即退备案的企业,再开具商编属于即征即退类型范围内的商品时必传,可用于次月退税。非备案客户忽略。红票、折扣行不支持传入。
— favouredPolicyName String N 0 50 增值税特殊管理(优惠政策名称),当favouredPolicyFlag为1时,此项必填 (数电票时为空)
— deduction String N 0 16 扣除额,差额征收时填写,目前只支持填写一项。 注意:当传0、空或字段不传时,都表示非差额征税;传0.00才表示差额征税:0.00 (数电票暂不支持)
— zeroRateFlag String N 0 1 零税率标识:空,非零税率;1,免税;2,不征税;3,普通零税率;1、当税率为:0%,且增值税特殊管理:为“免税”, 零税率标识:需传“1” 2、当税率为:0%,且增值税特殊管理:为”不征税” 零税率标识:需传“2” 3、当税率为:0%,且增值税特殊管理:为空 零税率标识:需传“3” (数电票时为空)
— dField1 String Y 255 业务方明细自定义字段1,本应用只作保存
— dField2 String Y 255 业务方明细自定义字段2,本应用只作保存
— dField3 String Y 255 业务方明细自定义字段3,本应用只作保存
— dField4 String Y 255 业务方明细自定义字段4,本应用只作保存
— dField5 String Y 255 业务方明细自定义字段5,本应用只作保存

3. 返回结果

本次接口只是提交开票申请,开票结果不是实时返回,而是税务局侧开票完成后,再异步通知返回。

注意:若相同使用订单号相同的开票申请,而之前开票又是成功情况下,则接口直接返回开票结果(发票pdf下载地址和发票号)。

3.1 首次开票成功

,返回结果如下

  {
  "code": 0,
  "invoice_serial_num": "23122512180201522056",
  "message": "开票提交成功"
}

开票提交成功后,平台将通知税务局生成发票结果(如发票号,pdf下载地址等), 并通过通步通知将结果回调给开发者, 见文档: https://doc.fw199.com/docs/h7b/nuonuo-billingnew-notify

3.1 重复提交开票成功返回

如果是相同的订单号重复提交,并且之前已经开具成功,则返回如下:


{
  "code": 100,
  "invoice_down_url": "https://inv.jss.com.cn/fp2/7B_nQ3OJ3-2NJfvYvIWK2y_iM4Na41Laty9izcQPzmyeu448MWu7sx-Otdv0m4azSYGjYKCnv7aZHLA6uC88-w.pdf",
  "invoice_no": "20882312250039010320",
  "message": "发票已经生成,不需要重复提交"
}

如果code返回100时,说明开票已经成功,返回字段会包含发票下载地址invoice_down_url和发票号invoice_no。

3.1 开票失败时返回

比如开票提交的数据不对,逻辑上有问题,开票请求没有被受理,则返回code为其他值(注意:code不是0或100),不一定只是code为3是失败,或存在其他值。

{
  "code": 3,
  "message": "NN返回错误:第1条明细中(不含税金额+税额)不等于含税金额",
  "trace_id": ""
}

4 返回参数说明

参数接口 参数类型 例子 说明
code int 0 0或100表示成功,其他值为失败
message String 开票提交成功 成功或失败时的提示消息
invoice_serial_num String 23122512180201522056 请求流水号
invoice_down_url String https://inv.jss.com.cn/fp2/7B_nQ3OJ3-2NJfvYvIWK2y_iM4Na41Laty9izcQPzmyeu448MWu7sx-Otdv0m4azSYGjYKCnv7aZHLA6uC88-w.pdf 发票PDF下载地址
invoice_no String 20882312250039010320 电子发票上面的发票号
文档更新时间: 2024-01-22 12:03   作者:admin