正向开票 · 腾讯联用
走乐企联用通道开数电发票。客户只需要接 4 个接口:开票 → 查结果拿票 → 要冲就冲 → 月底对账。 签名加密、票文件转存全在开灵中台,你不用碰。
支持的业务场景——普通商品服务直接开;下列特定业务在基础字段之外多传一块对应字段即可,接口是同一个:
另有几项不看业务代码、按场景补充的:
★农产品收购、报废产品收购不在本产品范围——那两类是收购方开给出售方的票,属于反向开票, 请用 反向开票 产品。
每一项在 ① 开票 页都有独立折叠块,写清楚触发条件、加在报文哪个位置,并附一份公共字段已合并好的完整报文,改值即可直接调。
业务流程 · 泳道图
一张票从产生到交付给客户,走完这一条线。橙色是扳机(②开票、⑦红冲);紫色虚线是通道回给你的。
开票和红冲是同一个套路:都分「提交」和「取票」两段。提交只拿到一个受理号或红票标识,票本身要再查一次(或等回调)才能到手—— 所以 ④ 之于 ②,就等于 ⑨ 之于 ⑦。
开票数据真实性与税务责任
- 发票的全部票面要素——购销方名称与纳税人识别号、商品名称与税收分类编码、数量金额与税率、 支付流水号等——必须真实,并与实际发生的业务一致。
- 开灵仅提供接口通道与报文转发,不对报文内容做真实性核验,也无从判断一笔业务是否真实发生。
- 若因填报虚假、编造或与实际业务不符的数据(例如编造的支付流水号、不实的购方税号、 与真实交易不符的商品名称或税收分类编码)导致发票异常、被税务机关核查或稽查,相关法律责任与后果由开票方(销方)自行承担。
接入前提(重要)
贵司的销方税号由开灵在后台完成开通后即可开票,你不需要调用任何开通接口,也不需要电子税务局账号或短信验证码——这是乐企联用通道的特点。
若开票返回「未绑定」类错误,请联系开灵项目经理,我们在后台绑定后即可继续。
四个接口
| 接口 | 干什么 | 路径 | 计费 |
|---|---|---|---|
| ① 开票 | 开一张数电发票 | /api/v1/invoice/forward/create | 按张计费 |
| ② 查开票结果 | 拿状态、发票号码和票文件 | /api/v1/invoice/forward/query | 免费 |
| ③ 红冲 | 开错了、退货了,用它把原票冲掉 | /api/v1/invoice/forward/red | 免费 |
| ④ 查红票 | 红冲提交成功不等于红票到手 | /api/v1/invoice/forward/red-query | 免费 |
| ⑤ 发票统计与对账 | 月底对账用 | /api/v1/invoice/forward/statistic?type=detail | 免费 |
只有开票计费,一张票一次;查结果、红冲、统计都不计费。
另有一个辅助接口 POST /api/v1/invoice/forward/red-query 用于查红冲进度,参数与红冲一致。红冲本身是一键的——申请红字信息表、下载信息表、开红票三步已合成在一个接口里。
最常见:开一张普通发票
不传 specific_business_code 就是普通发票。 下面那些成品油、建筑服务、货物运输之类,都是税局认定的「特定业务」,做那些业务才填; 日常卖货、卖服务开票,照下面这份报文来就行,一个特定业务字段都不用碰。
invoice_type_code082 数电电子普票 —— 个人消费、一般企业入账081 数电电子专票 —— 购方要抵扣进项、办退税,必须开这个title_type1 个人/政府 —— buyer_taxpayer_num 可不填2 企业 —— 必须填对方税号完整可跑报文(下面这份是 2026-09-01 实测开出票号 26117200000004866592 的原报文):
POST /api/v1/invoice/forward/create
{
"order_id": "你方订单号,全局唯一",
"invoice_type_code": "082",
"seller_taxpayer_num": "91110119MABQDU249D",
"seller_name": "北京湛露科技有限公司",
"seller_address": "北京市",
"seller_tel": "01000000000",
"seller_bank_name": "测试银行",
"seller_bank_account": "1234567890",
"title_type": 2,
"buyer_title": "北京黎阳信息服务有限公司",
"buyer_taxpayer_num": "91110108MA01C3TE9X",
"terminal_code": "91110119MABQDU249D",
"drawer": "开票员姓名",
"callback_url": "https://你方域名/callback",
"template": 1,
"amount_has_tax": "113.00",
"amount_without_tax": "100.00",
"tax_amount": "13.00",
"items": [{
"name": "办公用品",
"tax_code": "1090101020000000000",
"unit": "批",
"total": "1",
"price": "100.00",
"total_price": "100.00",
"tax_rate": "0.13",
"tax_amount": "13.00",
"amount_has_tax": "113.00"
}]
}开给个人时把 title_type 改成 1、buyer_title 写「个人」、去掉 buyer_taxpayer_num, 并加上 "taxpayer_confirmation": { "draw_with_nobuyer_flag": 1 },否则可能开不出来。
⚠ 开票是异步的。create 只返回 state=1 受理中和 order_sn, 要拿票必须再调 query;查询时除了 order_id/order_sn,还必须带 seller_taxpayer_num, 只传单号会报「税号不能为空」。status=3 才是开票成功,此时 ticket_sn 即发票号码, PDF/OFD/XML 三个下载地址一并返回。
成品油怎么开
不是另一个接口,还是「① 开票」,只是多传三个字段:
"specific_business_code": "01", // 成品油,金税四期硬要求
"special_invoice_kind": "08", // 成品油票种
"e_extra_info": "{\"station\":\"深圳南山成品油站\",\"trade_time\":\"2026-08-29T15:30:00+08:00\",\"gun_number\":\"01\"}",
"items[].unit": "LITER" // 升=LITER,吨=TON,不能写中文e_extra_info 是 JSON 字符串不是对象,要先 stringify。三个字段都必填,trade_time 需符合 RFC3339 格式。明细里油品名要写规范(如 92号车用汽油), 税收编码汽油为 1070101010100000000,税率 0.13。
⚠ 两个容易踩的坑:一是 items[].unit 只能填 LITER 或 TON(英文大写),写中文「升」「吨」税局会报「无法映射到成品油单位枚举」; 二是销方企业须具备成品油经销资质,否则税局会拒开,这是资质问题不是接口问题。
