文档中心 > API类目 > 电子发票

alibaba.einvoice.prod.create (发票中台-请求开票接口)

请求开票接口,返回请求受理结果

公共参数

请求参数

名称 类型 是否必须 示例值 更多限制 描述
invoice_create_req InvoiceCreateDto 必须 开票请求
  • └ sum_tax
  • String
  • 可选
  • 170.00
  • 合计税额,格式为2位小数。 当开红票时,该字段为负数。当auto_preprocess=true勿传,由中台自动计算。当auto_preprocess=false必填
  • └ platform_tid
  • String
  • 必须
  • 123456
  • 业务平台对应的订单号
  • └ invoice_amount
  • String
  • 可选
  • 1170.00
  • 合计含税金额(开票金额),当开红票时,该字段为负数。auto_cal_tax=true时,与sum_price不能同时为空。 auto_cal_tax=false时均必填。当auto_preprocess=true 不可同时为空,且必须和明细成对出现。当auto_preprocess=false全部必填
  • └ payee_receiver
  • String
  • 可选
  • 王五
  • 收款人
  • └ payee_register_no
  • String
  • 必须
  • 987654321234567
  • 销方税务登记证号
  • └ platform_user_id
  • String
  • 必须
  • 12345678
  • 业务平台商户ID/卖家用户ID,用于归集发票
  • └ invoice_type
  • String
  • 必须
  • red
  • 发票(开票)类型,可选值:蓝票blue, 红票red
  • └ invoice_memo
  • String
  • 可选
  • 电子发票测试
  • 发票备注,会显示在票面
  • └ payer_email
  • String
  • 可选
  • test@alibaba.com
  • 购方电子邮箱
  • └ auto_preprocess
  • Boolean
  • 可选
  • false
  • 是否自动预处理(价税分离与拆单)。 true 是,false 否。默认false。 为true时中台会自动计算含税金额,不含税金额,税额。 并且根据企业限额将当前开票请求拆分为多个开票请求。
  • └ payee_bank_account_id
  • String
  • 可选
  • 92523123213412341234
  • 销方银行帐号 auto_fill_payee_info=false时必填
  • └ payee_checker
  • String
  • 可选
  • 李四
  • 复核人
  • └ normal_invoice_code
  • String
  • 可选
  • 111100000000
  • 原发票代码(开红票时必须)
  • └ payee_address
  • String
  • 可选
  • 浙江省杭州市
  • 销方地址 auto_fill_payee_info=false时必填
  • invoice_items
  • InvoiceItemData []
  • 必须
  • 发票明细
  • └ sum_price
  • String
  • 可选
  • 1000.00
  • 总价 (不含税),格式为2位小数 单位:元,精度2位小数。当auto_preprocess=true 不可同时为空。当auto_preprocess=false全部必填
  • └ amount
  • String
  • 可选
  • 1170.00
  • 价税合计。(等于sumPrice和tax之和), 单位:元,格式为2位小数,精度2位小数。当auto_preprocess=true 不可同时为空。当auto_preprocess=false全部必填
  • └ tax
  • String
  • 可选
  • 170.00
  • 税额, 格式为2位小数。当auto_preprocess=true勿传,由中台自动计算。当auto_preprocess=false必填
  • └ tax_rate
  • String
  • 可选
  • 0.17
  • 税率。税率只能为0或0.03或0.04或0.06或0.11或0.13或0.17. 当auto_matching_taxcode=true时,可为空。当auto_matching_taxcode=false时都为必填
  • └ unit
  • String
  • 可选
  • 单位。折扣行不能传,非折扣行必传
  • └ specification
  • String
  • 可选
  • XX100
  • 规格型号
  • └ row_type
  • Number
  • 必须
  • 0
  • 发票行性质。 0表示正常行,1表示折扣行,2表示被折扣行。 比如充电器单价100元,折扣10元,则明细为2行,充电器行性质为2,折扣行性质为1。如果充电器没有折扣,则值应为0
  • └ quantity
  • String
  • 可选
  • 10
  • 数量(8位精度)。 折扣行此参数不能传,非折扣行必传。存在则需>0
  • └ price
  • String
  • 可选
  • 100.00
  • 单价(不含税),格式为2位小数。最大支持6位小数,不足2位小数时需转化为2位小数格式。 折扣行此参数不能传,非折扣行必传。
  • └ item_no
  • String
  • 可选
  • 1010101010000000000
  • 发票项目编号(或商品编号)。当auto_matching_taxcode=true时,可为空。当auto_matching_taxcode=false时都为必填。
  • └ item_name
  • String
  • 必须
  • 稻谷
  • 发票项目名称(或商品名称)
  • └ zero_rate_flag
  • String
  • 可选
  • 0
  • 0税率标识,只有税率为0的情况才有值,0=出口零税率,1=免税,2=不征收,3=普通零税率
  • └ tax_price
  • String
  • 可选
  • 117.00
  • 单价(含税),格式为2位小数。最大支持6位小数,不足2位小数时需转化为2位小数格式。 折扣行此参数不能传,非折扣行必传。当auto_preprocess=true 只能传一个,不能同时传。当auto_preprocess=false, taxPrice字段无用,勿传。此时开票需要传price
  • └ payee_operator
  • String
  • 可选
  • 张三
  • 开票人 auto_fill_payee_info=false时必填
  • └ payer_register_no
  • String
  • 可选
  • 2095020123123
  • 购方方税务登记证号。 开企业抬头时必填。
  • └ auto_fill_payee_info
  • Boolean
  • 可选
  • false
  • 是否自动填充企业信息,true: 中台查询销方信息后自动填充(字段为null时才会填充),以“payee_”开头的字段。 false: 中台不填充,由业务前台传入。 默认false
  • └ platform_code
  • String
  • 必须
  • ABC
  • 业务平台code, 由发票中台分配
  • └ payee_phone
  • String
  • 可选
  • 0100-8888888
  • 销方电话 auto_fill_payee_info=false时必填
  • └ sum_price
  • String
  • 可选
  • 1000.00
  • 合计金额,当开红票时,该字段为负数。auto_cal_tax=true时,不能同时为空。 auto_cal_tax=false时与invoice_amount均必填。当auto_preprocess=true 不可同时为空,且必须和明细成对出现。当auto_preprocess=false全部必填
  • └ tax_token
  • String
  • 可选
  • asdfqewqweasdf
  • 入驻商户税控盘未托管的开票链路,此参数必传。 云化税控可不填
  • └ payee_name
  • String
  • 可选
  • 阿里巴巴测试公司
  • 开票方名称,公司名(如:XX商城) auto_fill_payee_info=false时必填
  • └ payer_name
  • String
  • 必须
  • 张三
  • 购方抬头
  • └ platform_buyer_id
  • String
  • 可选
  • 2331213
  • 买家id,用于买家归集,支付宝开票必传
  • └ payer_bank_account_id
  • String
  • 可选
  • 123412341234
  • 购方银行账号
  • └ payer_bank_name
  • String
  • 可选
  • 招商银行
  • 购方开户行名称,开户行账号加名称不超出100字符
  • └ payer_phone
  • String
  • 可选
  • 0100-12345678
  • 购方联系电话
  • └ normal_invoice_no
  • String
  • 可选
  • 00004349
  • 原发票号码(开红票时必须)
  • └ product_code
  • String
  • 可选
  • CLOUDTAX_GP
  • 税控产品Code,由中台定义的产品码
  • └ payer_address
  • String
  • 可选
  • 浙江省杭州市余杭区文一西路xxx号
  • 购方地址
  • └ payee_bank_name
  • String
  • 可选
  • 招商银行
  • 销方开户行名称,开户行账号加名称不超出100字符auto_fill_payee_info=false时必填
  • └ erp_tid
  • String
  • 可选
  • 12345678
  • ERP系统中的单据号。如果没有erp的唯一单据号。建议使用platform_code+”_”+ platform_tid的组合方式
  • └ outer_id
  • String
  • 必须
  • 123456
  • 请求的唯一标志,请求幂等ID,由调用平台生成
  • └ invoice_kind
  • Number
  • 必须
  • 0
  • 开票发票类型 可选值: 0: 电票 1:纸质普票 2:纸质专票
  • └ business_type
  • Number
  • 必须
  • 0
  • 抬头类型。可选值: 0:个人 1:企业
  • └ special_flag
  • String
  • 可选
  • 02
  • 特殊票种标识,可选值: 02: 农产品收购票
  • └ levy_type
  • Number
  • 可选
  • 0
  • 征税方式,0普通征收,1减按征收,2差额征收
  • └ auto_matching_taxcode
  • Boolean
  • 可选
  • false
  • 是否自动匹配税编规则,ture是,false否。默认false。 为ture时中台会自动匹配由商户维护的商品税编规则,自动读取税收分类编码和税率
  • └ ignore_split_order
  • Boolean
  • 可选
  • false
  • 原子粒度控制:是否忽略拆单,可以由外部指定。适用于 前台不需要拆单,但需要其他预处理能力的场景。
  • └ ext_json
  • String
  • 可选
  • {"tax_office_reg_no":"123abc"}
  • 拓展字段,税控产品为GENERAL_ZJ时必传tax_office_reg_no
  • └ source_platform_code
  • String
  • 可选
  • TB
  • 特殊场景:当开票主体入驻在淘宝发票平台,需调用中台此接口申请发票时,sourcePlatformCode = TB. 非特殊场景该字段勿传

响应参数

名称 类型 示例值 描述
result ServiceResult 系统返回的通用结果类
  • invoice_create_result
  • InvoiceCreateResultDto
  • 返回结果
  • invoice_create_reqs
  • InvoiceCreateReqDto []
  • 中台处理之后的真实开票请求。预处理(价税分离与拆单)、或匹配编码规则、或填充销方信息之后的结果。 当auto_preprocess=true, 会返回多笔真实开票请求,当auto_preprocess=false,不会返回该字段,请忽略下面的字段。
  • └ biz_error_code
  • String
  • demo
  • 错误编码, status=create_failed时返回
  • └ biz_error_msg
  • String
  • demo
  • 错误信息, status=create_failed时返回
  • └ device_no
  • String
  • 1
  • 开票所用的税盘编号
  • └ erp_tid
  • String
  • 123456
  • erp_tid
  • └ invoice_amount
  • String
  • 1170.00
  • 合计含税金额(开票金额),格式为2位小数。 当开红票时,该字段为负数。
  • invoice_items
  • InvoiceItemData []
  • 发票明细
  • └ amount
  • String
  • 1170.00
  • 价税合计。(等于sumPrice和tax之和), 单位:元,格式为2位小数,精度2位小数
  • └ item_name
  • String
  • 电视机
  • 发票项目名称(或商品名称)
  • └ item_no
  • String
  • 1010101010000000000
  • 发票项目编号(或商品编号)
  • └ price
  • String
  • 100.00
  • 单价(不含税),2到6位小数。格式为2位小数。 折扣行此参数不能传,非折扣行必传
  • └ quantity
  • String
  • 10
  • 数量,最多6位小数。 折扣行此参数不能传,非折扣行必传。存在则需>0
  • └ row_type
  • Number
  • 0
  • 发票行性质。0表示正常行,1表示折扣行,2表示被折扣行。 比如充电器单价100元,折扣10元,则明细为2行,充电器行性质为2,折扣行性质为1。如果充电器没有折扣,则值应为0。
  • └ specification
  • String
  • x100
  • 规格型号
  • └ sum_price
  • String
  • 1000.00
  • 总价 (不含税),格式为2位小数 单位:元,精度2位小数
  • └ tax
  • String
  • 170.00
  • 税额, 格式为2位小数
  • └ tax_rate
  • String
  • 0.17
  • 税率。税率只能为0或0.03或0.04或0.06或0.11或0.13或0.17
  • └ unit
  • String
  • 单位。折扣行不能传,非折扣行必传
  • └ zero_rate_flag
  • String
  • 1
  • 0税率标识,只有税率为0的情况才有值,0=出口零税率,1=免税,2=不征收,3=普通零税率
  • └ payee_address
  • String
  • 山东省青岛市
  • 销方地址 销方电话加地址不超出100字符auto_fill_payee_info=false时必填
  • └ payee_bank_account_id
  • String
  • 92523123213412341234
  • 销方银行帐号
  • └ payee_bank_name
  • String
  • 招商银行
  • 销方开户行名称,开户行账号加名称不超出100字符
  • └ payee_checker
  • String
  • 小林
  • 复核人
  • └ payee_name
  • String
  • 海尔商城
  • 销方名称,公司名(如:XX商城) auto_fill_payee_info=false时必填
  • └ payee_operator
  • String
  • 小张
  • 开票人 auto_fill_payee_info=false时必填
  • └ payee_phone
  • String
  • 18234561212
  • 销方电话 auto_fill_payee_info=false时必填
  • └ payee_receiver
  • String
  • 小张
  • 收款人
  • └ payee_register_no
  • String
  • 23150201321123
  • 销方税务登记证号
  • └ product_code
  • String
  • CLOUDTAX_GP
  • 税控产品Code,由中台定义的产品码。
  • └ single_serial_no
  • String
  • 1001
  • 开票流水号/序列号,唯一标志一笔开票请求。发票中台生成,用于查询开票结果。
  • └ status
  • String
  • waiting
  • 开票状态 (waiting = 开票中) 、(create_success = 开票成功)、(create_failed = 开票失败)
  • └ sum_price
  • String
  • 1000.00
  • 合计金额(不含税),格式为2位小数。 当开红票时,该字段为负数
  • └ sum_tax
  • String
  • 170.00
  • 合计税额,格式为2位小数。 当开红票时,该字段为负数
  • └ serial_no
  • String
  • 123456
  • 开票流水号/序列号,唯一标志一笔开票请求。发票中台生成,用于查询开票结果。 当auto_preprocess=true,预处理之后可能生成多笔开票请求,此处可能返回多个序列号。多个序列号之间英文逗号(半角)分隔。 当auto_preprocess=false,只会返回一个序列号。
  • └ success
  • Boolean
  • true
  • 开票请求是否受理成功。当拆单时,需要关注拆单后每张发票的状态码 biz_error_code, 可能存在部分失败情况

请求示例

  • JAVA
  • .NET
  • PHP
  • CURL
  • Python
  • C/C++
  • NodeJS
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
AlibabaEinvoiceProdCreateRequest req = new AlibabaEinvoiceProdCreateRequest();
AlibabaEinvoiceProdCreateRequest.InvoiceCreateDto obj1 = new AlibabaEinvoiceProdCreateRequest.InvoiceCreateDto();
obj1.setSumTax("170.00");
obj1.setPlatformTid("123456");
obj1.setInvoiceAmount("1170.00");
obj1.setPayeeReceiver("王五");
obj1.setPayeeRegisterNo("987654321234567");
obj1.setPlatformUserId("12345678");
obj1.setInvoiceType("red");
obj1.setInvoiceMemo("电子发票测试");
obj1.setPayerEmail("test@alibaba.com");
obj1.setAutoPreprocess(false);
obj1.setPayeeBankAccountId("92523123213412341234");
obj1.setPayeeChecker("李四");
obj1.setNormalInvoiceCode("111100000000");
obj1.setPayeeAddress("浙江省杭州市");
List<AlibabaEinvoiceProdCreateRequest.InvoiceItemData> list3 = new ArrayList<AlibabaEinvoiceProdCreateRequest.InvoiceItemData>();
AlibabaEinvoiceProdCreateRequest.InvoiceItemData obj4 = new AlibabaEinvoiceProdCreateRequest.InvoiceItemData();
list3.add(obj4);
obj4.setSumPrice("1000.00");
obj4.setAmount("1170.00");
obj4.setTax("170.00");
obj4.setTaxRate("0.17");
obj4.setUnit("袋");
obj4.setSpecification("XX100");
obj4.setRowType(0L);
obj4.setQuantity("10");
obj4.setPrice("100.00");
obj4.setItemNo("1010101010000000000");
obj4.setItemName("稻谷");
obj4.setZeroRateFlag("0");
obj4.setTaxPrice("117.00");
obj1.setInvoiceItems(list3);
obj1.setPayeeOperator("张三");
obj1.setPayerRegisterNo("2095020123123");
obj1.setAutoFillPayeeInfo(false);
obj1.setPlatformCode("ABC");
obj1.setPayeePhone("0100-8888888");
obj1.setSumPrice("1000.00");
obj1.setTaxToken("asdfqewqweasdf");
obj1.setPayeeName("阿里巴巴测试公司");
obj1.setPayerName("张三");
obj1.setPlatformBuyerId("2331213");
obj1.setPayerBankAccountId("123412341234");
obj1.setPayerBankName("招商银行");
obj1.setPayerPhone("0100-12345678");
obj1.setNormalInvoiceNo("00004349");
obj1.setProductCode("CLOUDTAX_GP");
obj1.setPayerAddress("浙江省杭州市余杭区文一西路xxx号");
obj1.setPayeeBankName("招商银行");
obj1.setErpTid("12345678");
obj1.setOuterId("123456");
obj1.setInvoiceKind(0L);
obj1.setBusinessType(0L);
obj1.setSpecialFlag("02");
obj1.setLevyType(0L);
obj1.setAutoMatchingTaxcode(false);
obj1.setIgnoreSplitOrder(false);
obj1.setExtJson("{\"tax_office_reg_no\":\"123abc\"}");
obj1.setSourcePlatformCode("TB");
req.setInvoiceCreateReq(obj1);
AlibabaEinvoiceProdCreateResponse rsp = client.execute(req);
System.out.println(rsp.getBody());

响应示例

  • XML示例
  • JSON示例
<alibaba_einvoice_prod_create_response>
    <result>
        <invoice_create_result>
            <invoice_create_reqs>
                <invoice_create_req_dto>
                    <biz_error_code>demo</biz_error_code>
                    <biz_error_msg>demo</biz_error_msg>
                    <device_no>1</device_no>
                    <erp_tid>123456</erp_tid>
                    <invoice_amount>1170.00</invoice_amount>
                    <invoice_items>
                        <invoice_item_data>
                            <amount>1170.00</amount>
                            <item_name>电视机</item_name>
                            <item_no>1010101010000000000</item_no>
                            <price>100.00</price>
                            <quantity>10</quantity>
                            <row_type>0</row_type>
                            <specification>x100</specification>
                            <sum_price>1000.00</sum_price>
                            <tax>170.00</tax>
                            <tax_rate>0.17</tax_rate>
                            <unit>台</unit>
                            <zero_rate_flag>1</zero_rate_flag>
                        </invoice_item_data>
                    </invoice_items>
                    <payee_address>山东省青岛市</payee_address>
                    <payee_bank_account_id>92523123213412341234</payee_bank_account_id>
                    <payee_bank_name>招商银行</payee_bank_name>
                    <payee_checker>小林</payee_checker>
                    <payee_name>海尔商城</payee_name>
                    <payee_operator>小张</payee_operator>
                    <payee_phone>18234561212</payee_phone>
                    <payee_receiver>小张</payee_receiver>
                    <payee_register_no>23150201321123</payee_register_no>
                    <product_code>CLOUDTAX_GP</product_code>
                    <single_serial_no>1001</single_serial_no>
                    <status>waiting</status>
                    <sum_price>1000.00</sum_price>
                    <sum_tax>170.00</sum_tax>
                </invoice_create_req_dto>
            </invoice_create_reqs>
            <serial_no>123456</serial_no>
        </invoice_create_result>
        <success>true</success>
    </result>
</alibaba_einvoice_prod_create_response>

异常示例

  • XML示例
  • JSON示例
<error_response>
    <code>50</code>
    <msg>Remote service error</msg>
    <sub_code>isv.invalid-parameter</sub_code>
    <sub_msg>非法参数</sub_msg>
</error_response>

错误码解释

错误码 错误描述 解决方案

API工具

如何获得此API

FAQ

返回
顶部