反向开票 · 订单交易接口
支付宝系面向报废产品收购、农产品收购、灵活用工场景:企业创建反向订单后获得支付即开票二维码,自然人(散户)用支付宝扫码确认,支付、缴税、反向开具数电发票一步完成,资金与开票全程走支付宝官方通道直连税务系统。 本组接口的资金通道为支付宝体系;腾讯系通道见反向开票(腾讯系)。 接入前需先完成 乐企开通。
调用地址
| 接口 | 方法 | 地址 | 计费 |
|---|---|---|---|
| 创建反向订单(返回收款二维码) | POST | https://openapi.kailingteck.com/api/v1/alipay/reverse/order_create | 按订单金额×费率 |
| 查询反向订单(可取发票 PDF) | POST | https://openapi.kailingteck.com/api/v1/alipay/reverse/order_query | 免费 |
| 审核反向订单 | POST | https://openapi.kailingteck.com/api/v1/alipay/reverse/order_audit | 免费 |
| 取消反向订单 | POST | https://openapi.kailingteck.com/api/v1/alipay/reverse/order_cancel | 免费 |
| 重试反向订单 | POST | https://openapi.kailingteck.com/api/v1/alipay/reverse/order_retry | 免费 |
| 申请红字发票 | POST | https://openapi.kailingteck.com/api/v1/alipay/reverse/red_apply | 免费 |
鉴权(平台统一三头)
每次请求携带:X-App-Key(平台分配)、X-Timestamp(Unix 秒,±300 秒内)、X-Sign = SHA256(app_key + timestamp + body + app_secret) 16 进制小写。 与发票查验、反向开票(腾讯系)完全同一套签名,已接入过任一能力可直接复用。
计费说明
- 创建反向订单:按订单金额(明细行金额合计)乘以合同约定费率计费,订单受理成功(
code=10000返回订单号)才计费,失败不计费; - 其余接口(查询/审核/取消/重试/红冲)全部免费,不限次数;
- 费用从账户余额中扣减,商户中心可实时查看每笔费用与余额。
业务流程
- 前置:完成 乐企开通,并维护好营业员(含开票员)、商品库(远程收款还需维护供应商);
- 调
order_create创建订单,取payment_invoice_qr_code_url生成收款二维码给自然人扫码; - 自然人在支付宝内确认订单→(企业配置了审核时,调
order_audit审核,仅可改单价/数量/金额三选二)→自然人收款,缴税、开票自动完成; - 轮询
order_query,order_status = SUCCESS且发票状态INVOICE_SUCCESS时,取发票号码与 PDF 下载地址; - 异常:开票失败/卖家未实名→处理后调
order_retry(仅 CONFIRMED / WAIT_PAY 状态可重试);退款后红冲→调red_apply(仅交易成功订单)。
注意:自然人年累计反向开票额度上限 500 万元,超额将无法开票;订单确认后企业侧不可取消,需自然人在支付宝「反向开票助手」小程序内取消。
接口一:创建反向订单
请求参数(主表)
| 参数名称 | 类型 | 必填 | 长度 | 描述 |
|---|---|---|---|---|
| tax_no | string | 是 | 20 | 企业(商户)税号 |
| product_id | string | 是 | 16 | 发票产品ID(须为已开通产品) |
| company_clerk_id | string | 是 | 16 | 企业营业员ID(需先在平台维护营业员) |
| company_supplier_id | string | 否 | 28 | 企业供应商ID;传入后订单自动推送给该供应商(远程收款场景) |
| outer_order_id | string | 是 | 64 | 外部订单号,唯一,幂等键 |
| memo | string | 否 | 200 | 订单备注,用于发票备注显示 |
| personal_tax_project | string | 条件 | 50 | 个税类型(报废产品收购/反向通用开票必传):BUSINESS_INCOME 经营所得(报废);BUSINESS_INCOME_COMMON_REVERSE 经营所得(通用);PROPERTY_TRANSFER_INCOME 财产转让所得(报废) 等 |
| order_item_list | array | 是 | 订单商品明细,字段见下表 |
order_item_list 商品明细字段
| 参数名称 | 类型 | 必填 | 长度 | 描述 |
|---|---|---|---|---|
| company_item_id | string | 否 | 28 | 商品ID(商品库新增商品接口返回) |
| item_name | string | 条件 | 128 | 商品名称(商品ID未传时必传) |
| tax_code | string | 条件 | 19 | 税收分类编码(商品ID未传时必传) |
| item_unit_amount | string | 条件 | 16 | 单价(元)——单价/数量/金额三选二传值 |
| item_num | string | 条件 | 14 | 数量——三选二传值 |
| item_total_amount | string | 条件 | 16 | 金额(元)——三选二传值 |
| item_unit | string | 是 | 32 | 单位,如:吨 |
| item_spec | string | 否 | 128 | 规格型号 |
响应参数
| 参数名称 | 类型 | 必返 | 描述 |
|---|---|---|---|
| outer_order_id | string | 是 | 外部订单号 |
| order_id | string | 是 | 订单号,后续查询/审核/取消/重试/红冲凭据 |
| payment_invoice_page_url | string | 是 | 支付即开票页面URL(营业员端,支付宝内打开) |
| payment_invoice_page_alipay_url | string | 是 | 支付即开票页面支付宝 scheme URL(营业员端) |
| payment_invoice_qr_code_url | string | 是 | 支付即开票二维码URL——可嵌入贵方 APP/小程序,供自然人扫码(有效期约 5 分钟,过期重新获取) |
| collection_invoice_page_url | string | 否 | 收款即开票页面URL(自然人端,传供应商ID时返回) |
| collection_invoice_page_alipay_url | string | 否 | 收款即开票支付宝 scheme URL(自然人端,传供应商ID时返回) |
| tax_authority_remind | string | 否 | 税务机关监管提醒(如:价格过高) |
请求示例
{
"tax_no": "913301067046373123",
"product_id": "2025010031726123",
"company_clerk_id": "2025011234567890",
"outer_order_id": "KLREV_20260718_0001",
"personal_tax_project": "BUSINESS_INCOME",
"memo": "废铜收购",
"order_item_list": [{
"company_item_id": "2025030400152003620000195123",
"item_num": "2",
"item_total_amount": "100.00",
"item_unit": "吨"
}]
}响应示例
{
"code": "10000",
"msg": "Success",
"outer_order_id": "KLREV_20260718_0001",
"order_id": "2025031000152005540029226123",
"payment_invoice_page_url": "https://u.alipay.cn/_3P00TkBxWtV/2025031000152005540029226123",
"payment_invoice_page_alipay_url": "alipays://platformapi/startapp?appId=…",
"payment_invoice_qr_code_url": "https://mobilecodec.alipay.com/show.htm?code=…"
}outer_order_id 幂等:同一外部订单号重复提交不会重复创建订单。明细行单价/数量/金额三选二必填。
接口二:查询反向订单
请求参数
| 参数名称 | 类型 | 必填 | 长度 | 描述 |
|---|---|---|---|---|
| tax_no | string | 是 | 20 | 企业(商户)税号 |
| product_id | string | 是 | 16 | 发票产品ID |
| order_id | string | 条件 | 28 | 订单号(与外部订单号二选一) |
| outer_order_id | string | 条件 | 64 | 外部订单号(与订单号二选一) |
| query_options | string | 是 | 32 | 查询选项,多个逗号分隔;传 BIZ_TRANSFER 时返回业务转账信息 |
响应参数(核心字段)
| 参数名称 | 类型 | 必返 | 描述 |
|---|---|---|---|
| order_id / outer_order_id | string | 是 | 订单号/外部订单号 |
| order_status | string | 是 | 订单状态:WAIT_LINK 待关联;WAIT_AUDIT 待审核;WAIT_CONFIRM 待确认;CONFIRMED 已确认;WAIT_PAY 待支付;SUCCESS 交易成功;CANCEL 订单取消;FAILED 订单失败 |
| order_amount | string | 是 | 订单金额(元) |
| seller_name / seller_phone | string | 否 | 卖家(自然人)姓名/手机号 |
| gmt_success | string | 否 | 交易成功时间 |
| order_invoice_list | array | 否 | 订单发票列表,核心字段见下 |
| order_invoice_list.invoice_no | string | 否 | 发票号码 |
| order_invoice_list.invoice_status | string | 是 | 发票状态:INVOICE_SUBMIT 开票已提交;TAX_PAYMENT_SUCCESS 缴税成功;TAX_PAYMENT_FAILED 缴税失败;INVOICE_SUCCESS 开票成功;INVOICE_FAILED 开票失败;INVOICE_FAILED_RETRYABLE 开票失败(可重试) |
| order_invoice_list.invoice_type / invoice_kind | string | 是 | BLUE 蓝票 / RED 红票;SPECIAL_INVOICE 专票 / ORDINARY_INVOICE 普票 |
| order_invoice_list.pdf_file_url / img_file_url | string | 否 | 发票 PDF / 图片下载地址 |
| order_invoice_list.invoice_amount / invoice_tax_amount / invoice_amount_without_tax | string | 是 | 含税金额/税额/不含税金额(元) |
| order_invoice_list.buyer_* / seller_* | string | - | 购买方(企业)/销售方(自然人)完整票面信息 |
| order_invoice_list.order_invoice_item_list | array | 是 | 发票明细行(名称/规格/单位/数量/税率/金额等) |
建议轮询间隔 30 秒以上;开票成功后从 order_invoice_list 取发票号码与 PDF 地址回写贵方台账。
接口三:审核反向订单
企业配置了「订单需审核」时,自然人确认后需企业审核通过,自然人才能收款开票。
请求参数
| 参数名称 | 类型 | 必填 | 长度 | 描述 |
|---|---|---|---|---|
| tax_no | string | 是 | 20 | 企业(商户)税号 |
| product_id | string | 是 | 16 | 发票产品ID |
| order_id | string | 是 | 28 | 订单号 |
| order_item_list | array | 是 | 订单商品明细(仅可调整单价/数量/金额,不可换商品) | |
| order_item_list.order_item_id | string | 是 | 28 | 订单明细ID(反向订单查询接口返回) |
| order_item_list.item_unit_amount / item_num / item_total_amount | string | 条件 | 单价/数量/金额——三选二传值 | |
| memo | string | 否 | 200 | 订单备注 |
审核仅允许修改单价/数量/金额(三选二)与备注,不可更换商品。
接口四/五/六:取消 · 重试 · 红字申请
三个接口请求参数相同:
| 参数名称 | 类型 | 必填 | 长度 | 描述 |
|---|---|---|---|---|
| tax_no | string | 是 | 20 | 企业(商户)税号 |
| product_id | string | 是 | 16 | 发票产品ID |
| order_id | string | 是 | 28 | 订单号 |
- 取消
order_cancel:仅自然人确认前可由企业取消;已开票/已确认收款/已取消/终态订单不可取消; - 重试
order_retry:开票失败或卖家未实名导致转账失败时,处理完成后重试;仅 CONFIRMED / WAIT_PAY 状态订单可重试; - 红字申请
red_apply:订单交易成功后需退款冲红时调用;仅 SUCCESS 订单可操作,且同一订单不可重复红冲。
常见业务错误码(sub_code)
| 错误码 | 含义与处理 |
|---|---|
| CLERK_NOT_EXIST / CLERK_UNAVAILABLE | 营业员不存在/不可用:先维护并确认营业员 |
| COMPANY_ABILITY_AUTH_INVALID | 乐企能力授权状态无效:检查乐企授权后刷新企业信息 |
| COMPANY_QUOTA_DEFICIENT | 乐企授信额度不足:联系财务确认额度 |
| COMPANY_AGENT_TAX_NOT_DECLARE | 代办税费未申报:财务完成申报后刷新企业信息 |
| ACCOUNT_BALANCE_INSUFFICIENT | 企业资金账户余额不足:充值后重试 |
| ORDER_STATUS_ERROR | 订单状态不满足当前操作(审核/取消/重试/红冲各有状态要求) |
| ORDER_ITEM_NOT_EDIT | 审核仅可修改单价/金额/数量 |
| SELLER_INVOICE_AMOUNT_EXCEEDED | 自然人年累计开票额超 500 万,不可继续 |
| SELLER_INVOICE_BLOCK | 自然人不具备反向开票资格 |
| MERCHANT_TAX_NOT_CORRECT | 税号不匹配:核对税号 |
| PRODUCT_NOT_OPENED / PRODUCT_NOT_RECYCLING | 产品未开通/产品ID非反向产品 |
响应 code = 10000 为成功;业务失败时按 sub_code / sub_msg 提示处理。平台层错误码(鉴权/限流/余额)与腾讯系一致,见 错误处理。
