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

alibaba.einvoice.prod.apply (提交发票申请)

提交开票申请,如果商户授权自动开票则自动转开票,否则等待商户审核。

公共参数

请求参数

名称 类型 是否必须 示例值 更多限制 描述
param_invoice_apply_dto InvoiceApplyDto 必须 申请开票请求
  • └ apply_amount
  • String
  • 必须
  • 100.00
  • 合计实付金额(申请开票的总金额,含税),格式为2位小数。开红票时传正数。需满足公式:开票总金额(invoiceAmount) = 各项明细的交易金额(amount)之和 - 各项明细的优惠金额(discount)之和
  • └ apply_mode
  • String
  • 可选
  • normal
  • 发票申请模式,可选值: pre_apply_url: URL预申请模式;适用于扫码开票(一单一码)的业务场景:业务前台提交开票金额等信息,请求阿里发票平台生成一个对应的发票申请页面URL。用户可在该页面中填写抬头等信息,然后提交正式的发票申请。 normal(默认为此模式): 正式提交用户的发票申请,商户根据此发票申请自动或审核开票。
  • └ apply_source
  • String
  • 可选
  • order
  • 请求来源:order: 下单
  • └ auto_create_invoice
  • Boolean
  • 可选
  • true
  • 当前申请单是否自动开票。当业务前台传入了该字段时,以前台传入的值为准。当前台未传值时,中台会读取商户在中台维护的自动开票配置。true: 申请单会自动转开票请求,调用税控进行开票。false: 申请单数据会在中台落地,状态为申请中。不会发起开票请求。适用于商户需要人工审核之后,再确认开票的场景。
  • └ business_type
  • Number
  • 可选
  • 1
  • 抬头类型。可选值:0:个人1:企业;当apply_mode=pre_apply_url时可选
  • create_inv_payee_info
  • InvoiceCreatePayeeInfoDto
  • 可选
  • 请求开票的销方信息。 传了此参数,则使用传入的销方信息进行开票。 未传则会以商户维护在阿里发票平台的销方信息为准。 业务前台请根据商户在哪维护销方信息进行选择,推荐后者。
  • └ payee_address
  • String
  • 可选
  • 杭州市西溪路
  • 销方地址,销方电话加地址不超出100字符
  • └ payee_bank_account_id
  • String
  • 可选
  • 1234567890123456
  • 销方银行帐号
  • └ payee_bank_name
  • String
  • 可选
  • 招商银行
  • 销方开户行名称,开户行账号加名称不超出100字符
  • └ payee_checker
  • String
  • 可选
  • 李四
  • 复核人
  • └ payee_name
  • String
  • 可选
  • 阿里巴巴测试企业
  • 销方名称,公司名
  • └ payee_operator
  • String
  • 可选
  • 张三
  • 开票人
  • └ payee_phone
  • String
  • 可选
  • 18899999999
  • 销方电话
  • └ payee_receiver
  • String
  • 可选
  • 王五
  • 收款人
  • └ payee_register_no
  • String
  • 可选
  • QWERTY123456789
  • 销方税务登记证号
  • └ device_id
  • String
  • 可选
  • 001
  • 指定的开票税控设备ID 传了此参数,则使用传入的设备ID进行开票。 未传则会使用商户维护在阿里发票平台的默认设备开票。 业务前台请根据商户在哪维护税控设备进行选择,推荐后者。
  • invoice_items
  • InvoiceApplyItemsDto []
  • 可选
  • 开票明细
  • └ amount
  • String
  • 可选
  • 1170.00
  • 交易金额(含税)=?单价*数量。单位:元,格式为2位小数,精度2位小数。开红票时传正数。
  • └ biz_memo
  • String
  • 可选
  • 明细备注
  • 开票明细备注
  • └ discount
  • String
  • 可选
  • 0
  • 优惠金额(含税)可为0,交易金额-优惠金额=实付金额。单位:元,格式为2位小数,精度2位小数。开红票时传正数。
  • └ item_id
  • String
  • 可选
  • 123456
  • 商品ID.当商户配置了按照商品ID匹配税编的税编规则时,该字段可用于税编规则匹配
  • └ item_name
  • String
  • 可选
  • 电视机
  • 商品名称/货物名称
  • └ item_no
  • String
  • 可选
  • 1010101010000000000
  • 发票项目编号(或商品编号)业务前台未传值中台会做税编规则匹配。业务前台有传值则优先取前台传入的值。
  • └ item_type
  • String
  • 可选
  • 新零售
  • 商品类型名称,如新零售、餐饮等等。当商户配置了按照类型匹配税编的税编规则时,该字段可用于税编规则匹配
  • └ quantity
  • String
  • 可选
  • 1
  • 数量,最多6位小数
  • └ specification
  • String
  • 可选
  • X100
  • 规格型号
  • └ tax_price
  • String
  • 可选
  • 100.00
  • 单价(含税),格式为2位小数。最大支持6位小数,不足2位小数时需转化为2位小数格式。
  • └ tax_rate
  • String
  • 可选
  • 0.17
  • 税率。格式为2位小数,业务前台未传值中台会做税编规则匹配。业务前台有传值则优先取前台传入的值。
  • └ unit
  • String
  • 可选
  • 单位
  • └ zero_rate_flag
  • String
  • 可选
  • 1
  • 0税率标识,只有税率为0的情况才有值,0=出口零税率,1=免税,2=不征收,3=普通零税率
  • └ invoice_kind
  • Number
  • 必须
  • 0
  • 开票发票类型可选值:0: 电票1:纸质普票2:纸质专票
  • └ invoice_memo
  • String
  • 可选
  • 备注下
  • 发票备注,会显示在票面
  • └ invoice_type
  • String
  • 必须
  • blue
  • 发票(开票)类型,可选值:blue: 蓝票red: 红票
  • └ levy_type
  • Number
  • 可选
  • 0
  • 征税方式,0普通征收,1减按征收,2差额征收
  • └ normal_invoice_code
  • String
  • 可选
  • 111100000000
  • 原发票代码(开红票时使用)
  • └ normal_invoice_no
  • String
  • 可选
  • 00004349
  • 原发票号码(开红票时使用)
  • └ outer_id
  • String
  • 必须
  • 10001
  • 外部业务方发起开票申请的唯一幂等ID,?由调用平台生成。只能由字母和数字组成。
  • └ payee_register_no
  • String
  • 可选
  • QWERT1234567890987
  • 销方税务登记证号,长度要求15~20位。 传了此参数,则阿里发票平台会使用传入的销方税号进行开票。 未传则阿里发票平台会自动选择商户入驻的税号进行开票。
  • └ payer_address
  • String
  • 可选
  • 浙江省杭州市余杭区文一西路xxx号
  • 购方地址,专票必填。
  • └ payer_bank_account_id
  • String
  • 可选
  • 123412341234
  • 购方银行账号,专票必填。
  • └ payer_bank_name
  • String
  • 可选
  • 招商银行
  • 购方开户行名称,专票必填。
  • └ payer_email
  • String
  • 可选
  • mytest@xxx.com
  • 购方电子邮箱,需满足邮箱格式。 格式要求:\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*
  • payer_logistics_info
  • PayerLogisticsInfoDto
  • 可选
  • 购方收票物流信息,用于纸票场景。
  • └ contact_addr
  • String
  • 可选
  • 浙江省xxx
  • 收件人地址
  • └ contact_mobile
  • String
  • 可选
  • 13888889999
  • 收件人电话
  • └ contact_name
  • String
  • 可选
  • 李四
  • 收件人姓名
  • └ payer_memo
  • String
  • 可选
  • 测试
  • 购方开票备注。不会显示在票面
  • └ payer_name
  • String
  • 可选
  • 张三
  • 购方抬头;当apply_mode=pre_apply_url时可选
  • └ payer_phone
  • String
  • 可选
  • 18234561212
  • 购方联系电话,专票必填。
  • └ payer_register_no
  • String
  • 可选
  • 2015020123123
  • 购方方税务登记证号,由大写字母或数字组成,长度要求15~20位。开企业抬头时必填,专票必填。
  • └ payer_uid
  • String
  • 可选
  • 123456
  • 购方UID
  • └ phone_number
  • String
  • 可选
  • 18234561212
  • 购方联系电话,专票必填。
  • └ platform_biz_flag
  • String
  • 可选
  • 1,2
  • 业务前台的业务标记。提供给业务前台打上特殊的业务标识,解决前台一些特殊场景,中台不关心该字段的业务含义。
  • └ platform_code
  • String
  • 必须
  • TB
  • 请求来源平台Code, 由发票中台分配
  • └ platform_tid
  • String
  • 必须
  • 100011101
  • 业务平台发票申请对应的订单号。
  • └ platform_user_id
  • String
  • 必须
  • 12345678
  • 业务平台商户ID/用户ID
  • └ red_notice_no
  • String
  • 可选
  • 12312312
  • 红字通知单号,专票冲红时需要,商家跟税局申请
  • └ source_flag
  • String
  • 可选
  • 12312312
  • 来源标识
  • └ source_platform_code
  • String
  • 可选
  • TB,TM
  • 业务来源平台, 由发票中台分配
  • └ special_flag
  • String
  • 可选
  • 02
  • 特殊票种标识,可选值:02: 农产品收购票
  • └ trade_time
  • Date
  • 可选
  • 2020-01-01 00:00:00
  • 交易时间

响应参数

名称 类型 示例值 描述
result ServiceResult alinkappserver系统返回的通用结果类
  • apply_result_dto
  • InvoiceApplyResultDto
  • 申请结果
  • └ apply_id
  • String
  • 123456
  • 中台发票申请ID,由中台生成。字母或数字组成
  • └ apply_status
  • String
  • applying
  • 申请状态,可选值: applying: 申请中,初始状态; cancelled: 申请已取消; confirmed: 商户已确认,待开/录入发票; craeting_inv: 开票中,待发票结果回传; inv_failed: 开票失败; inv_success: 开票成功; inv_part_success: 部分成功(拆单场景下存在。举例:发票申请拆单之后有10张票,其中有1张开票成功时,此时申请状态即为inv_part_success,当10张票全部成功申请状态则为inv_success)
  • create_inv_result_list
  • InvoiceCreateSimpleResultDto []
  • 开票结果
  • └ biz_error_code
  • String
  • demo
  • 错误码
  • └ biz_error_msg
  • String
  • demo
  • 错误描述
  • └ create_status
  • String
  • waitting
  • 开票状态
  • └ error_type
  • String
  • demo
  • 错误类型
  • └ invoice_amount
  • String
  • 100
  • 实际开票金额
  • └ payee_name
  • String
  • test
  • 销售方名称
  • └ payee_register_no
  • String
  • 123123
  • 销方税号
  • └ product_code
  • String
  • UKEY
  • 税控产品
  • └ single_serial_no
  • String
  • 123123
  • 单张票序列号
  • └ sum_price
  • String
  • 100
  • 合计金额(不含税)
  • └ sum_tax
  • String
  • 0
  • 合计税额,格式为2位小数
  • └ apply_url
  • String
  • https://www.taobao.com/xxx
  • 生成的发票申请页面URL, 用户可在该页面中填写抬头等信息,然后提交正式的发票申请。 当apply_mode=create_apply_url 时必须返回。

请求示例

  • JAVA
  • .NET
  • PHP
  • CURL
  • Python
  • C/C++
  • NodeJS
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
AlibabaEinvoiceProdApplyRequest req = new AlibabaEinvoiceProdApplyRequest();
AlibabaEinvoiceProdApplyRequest.InvoiceApplyDto obj1 = new AlibabaEinvoiceProdApplyRequest.InvoiceApplyDto();
obj1.setApplyAmount("100.00");
obj1.setApplyMode("normal");
obj1.setApplySource("order");
obj1.setAutoCreateInvoice(true);
obj1.setBusinessType(1L);
AlibabaEinvoiceProdApplyRequest.InvoiceCreatePayeeInfoDto obj2 = new AlibabaEinvoiceProdApplyRequest.InvoiceCreatePayeeInfoDto();
obj2.setPayeeAddress("杭州市西溪路");
obj2.setPayeeBankAccountId("1234567890123456");
obj2.setPayeeBankName("招商银行");
obj2.setPayeeChecker("李四");
obj2.setPayeeName("阿里巴巴测试企业");
obj2.setPayeeOperator("张三");
obj2.setPayeePhone("18899999999");
obj2.setPayeeReceiver("王五");
obj2.setPayeeRegisterNo("QWERTY123456789");
obj1.setCreateInvPayeeInfo(obj2);
obj1.setDeviceId("001");
List<AlibabaEinvoiceProdApplyRequest.InvoiceApplyItemsDto> list4 = new ArrayList<AlibabaEinvoiceProdApplyRequest.InvoiceApplyItemsDto>();
AlibabaEinvoiceProdApplyRequest.InvoiceApplyItemsDto obj5 = new AlibabaEinvoiceProdApplyRequest.InvoiceApplyItemsDto();
list4.add(obj5);
obj5.setAmount("1170.00");
obj5.setBizMemo("明细备注");
obj5.setDiscount("0");
obj5.setItemId("123456");
obj5.setItemName("电视机");
obj5.setItemNo("1010101010000000000");
obj5.setItemType("新零售");
obj5.setQuantity("1");
obj5.setSpecification("X100");
obj5.setTaxPrice("100.00");
obj5.setTaxRate("0.17");
obj5.setUnit("台");
obj5.setZeroRateFlag("1");
obj1.setInvoiceItems(list4);
obj1.setInvoiceKind(0L);
obj1.setInvoiceMemo("备注下");
obj1.setInvoiceType("blue");
obj1.setLevyType(0L);
obj1.setNormalInvoiceCode("111100000000");
obj1.setNormalInvoiceNo("00004349");
obj1.setOuterId("10001");
obj1.setPayeeRegisterNo("QWERT1234567890987");
obj1.setPayerAddress("浙江省杭州市余杭区文一西路xxx号");
obj1.setPayerBankAccountId("123412341234");
obj1.setPayerBankName("招商银行");
obj1.setPayerEmail("mytest@xxx.com");
AlibabaEinvoiceProdApplyRequest.PayerLogisticsInfoDto obj6 = new AlibabaEinvoiceProdApplyRequest.PayerLogisticsInfoDto();
obj6.setContactAddr("浙江省xxx");
obj6.setContactMobile("13888889999");
obj6.setContactName("李四");
obj1.setPayerLogisticsInfo(obj6);
obj1.setPayerMemo("测试");
obj1.setPayerName("张三");
obj1.setPayerPhone("18234561212");
obj1.setPayerRegisterNo("2015020123123");
obj1.setPayerUid("123456");
obj1.setPhoneNumber("18234561212");
obj1.setPlatformBizFlag("1,2");
obj1.setPlatformCode("TB");
obj1.setPlatformTid("100011101");
obj1.setPlatformUserId("12345678");
obj1.setRedNoticeNo("12312312");
obj1.setSourceFlag("12312312");
obj1.setSourcePlatformCode("TB,TM");
obj1.setSpecialFlag("02");
obj1.setTradeTime(StringUtils.parseDateTime("2020-01-01 00:00:00"));
req.setParamInvoiceApplyDto(obj1);
AlibabaEinvoiceProdApplyResponse rsp = client.execute(req);
System.out.println(rsp.getBody());

响应示例

  • XML示例
  • JSON示例
<alibaba_einvoice_prod_apply_response>
    <result>
        <apply_result_dto>
            <apply_id>123456</apply_id>
            <apply_status>applying</apply_status>
            <create_inv_result_list>
                <invoice_create_simple_result_dto>
                    <biz_error_code>demo</biz_error_code>
                    <biz_error_msg>demo</biz_error_msg>
                    <create_status>waitting</create_status>
                    <error_type>demo</error_type>
                    <invoice_amount>100</invoice_amount>
                    <payee_name>test</payee_name>
                    <payee_register_no>123123</payee_register_no>
                    <product_code>UKEY</product_code>
                    <single_serial_no>123123</single_serial_no>
                    <sum_price>100</sum_price>
                    <sum_tax>0</sum_tax>
                </invoice_create_simple_result_dto>
            </create_inv_result_list>
            <apply_url>https://www.taobao.com/xxx</apply_url>
        </apply_result_dto>
    </result>
</alibaba_einvoice_prod_apply_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

返回
顶部