修改发票
修改一张尚未开具的发票申请(例如待审核、审核驳回、开票失败的记录)。参数与 开具发票 基本一致,修改后不会自动重新开票,需要再调用 重试开票 或在控制台操作。
PUT
/invoice/{id}路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | int | 必填 | 发票 ID(invoiceId),通过 查询发票 获取;必须属于当前企业 |
请求参数
请求体为 JSON,字段含义见 开具发票 - 请求参数。与开票接口的差异:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| appKey | string | 条件必填 | 服务密钥 Key,与 appSecret 成对使用;传了 accessToken 时可不传 |
| appSecret | string | 条件必填 | 服务密钥 Secret |
| accessToken | string | 条件必填 | 访问令牌,通过 获取访问令牌 接口获取;传了 accessToken 则无需 appKey / appSecret |
| taxNumber | string | 必填 | 企业纳税人识别号,指定本次操作的开票企业;必须是该密钥已关联的企业 |
| outOrderNo | string | 必填 | 外部订单号 |
| type | string | 必填 | 抬头类型:个人、企业 |
| category | string | 必填 | 发票类型 |
| purchaserName | string | 条件必填 | 企业抬头时必填 |
| purchaserTaxpayerNumber | string | 条件必填 | 企业抬头时必填 |
| items | array | 必填 | 商品明细;未传 sum 时 price 与 number 都必填 |
| 其他字段 | - | 选填 | 同开票接口(购买方信息、交付信息、备注、特定业务、扩展信息等) |
请求示例
{
"appKey": "你的appKey",
"appSecret": "你的appSecret",
"taxNumber": "91320211MA1WML8X6T",
"outOrderNo": "ORDER20260101001",
"type": "企业",
"category": "全电电子普通发票",
"purchaserName": "深圳市腾讯计算机系统有限公司",
"purchaserTaxpayerNumber": "91440300708461136T",
"email": "finance@example.com",
"items": [
{
"name": "技术服务费",
"no": "3040201010000000000",
"taxRate": 0.06,
"number": 1,
"price": 1200,
"sum": 1200
}
]
}
响应示例
content 为更新后的发票记录:
{
"code": 1,
"message": "更新成功",
"content": {
"id": 10001,
"outOrderNo": "ORDER20260101001",
"category": "全电电子普通发票",
"state": -1,
"price": 1200,
"purchaserName": "深圳市腾讯计算机系统有限公司",
"...": "其他字段"
}
}
错误信息
| message | 说明 |
|---|---|
| 非法发票ID参数 | id 不属于当前企业 |
| 非法主键参数 | id 不存在 |
| 缺少外部订单号 / 请选择个人或企业 / 非法发票类型category | 必填项缺失 |
| 请输入抬头税号 | 企业抬头缺少名称或税号 |
| 缺少数量 参数:number | 未传 sum 时必须同时传 price 和 number |
| 其他 | 同 开具发票 - 错误信息 |