特定业务开票
数电发票(category 为 全电电子普通发票 / 全电电子专用发票)支持按税局要求填写特定业务信息。开票时在 开具发票 接口中传入 specificBusinessCode 与 specificBusiness 即可,其他参数与普通开票一致。
| specificBusinessCode | 业务类型 | specificBusiness 格式 |
|---|---|---|
03 |
建筑服务 | JSON 对象 |
04 |
货物运输服务 | JSON 数组,每个元素一条运输记录 |
05 |
不动产销售 | JSON 对象 |
06 |
不动产经营租赁服务 | JSON 对象 |
09 |
旅客运输服务 | JSON 数组,每个元素一位出行人 |
10 |
医疗服务(住院) | JSON 对象,见 医疗服务发票对接 |
11 |
医疗服务(门诊) | JSON 对象,见 医疗服务发票对接 |
特定业务仅对数电发票生效
category 不是 全电 开头时,specificBusinessCode 与 specificBusiness 会被忽略。specificBusiness 必须是合法的 JSON 对象或数组,否则返回 特定业务内容格式不正确。
建筑服务(03)
specificBusiness 为 JSON 对象:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| serviceArea | array | 必填 | 建筑服务发生地(省 / 市 / 区县名称数组),如 ["上海市", "上海市", "宝山区"] |
| serviceAddress | string | 必填 | 详细地址 |
| projectName | string | 必填 | 建筑项目名称 |
| projectNumber | string | 选填 | 土地增值税项目编号 |
| intercityFlag | boolean | 选填 | 是否跨地(市)标志 |
{
"specificBusinessCode": "03",
"specificBusiness": {
"serviceArea": ["上海市", "上海市", "宝山区"],
"serviceAddress": "蠡太路118号",
"projectName": "某某园区装修工程",
"projectNumber": "",
"intercityFlag": false
}
}
货物运输服务(04)
specificBusiness 为 JSON 数组,每个元素字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| transportKind | string | 必填 | 运输工具种类:铁路运输、公路运输、水路运输、航空运输、管道运输、其他运输工具 |
| transportNumber | string | 必填 | 运输工具牌号 |
| departurePlace | string | 必填 | 起运地 |
| destinationPlace | string | 必填 | 到达地 |
| goodsName | string | 必填 | 运输货物名称 |
{
"specificBusinessCode": "04",
"specificBusiness": [
{
"transportKind": "公路运输",
"transportNumber": "沪A12345",
"departurePlace": "上海市",
"destinationPlace": "杭州市",
"goodsName": "电子元器件"
}
]
}
不动产销售(05)
specificBusiness 为 JSON 对象:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| area | array | 必填 | 不动产地址(省 / 市 / 区县名称数组) |
| address | string | 必填 | 详细地址 |
| propertyContractNumber | string | 选填 | 不动产单元代码 / 网签合同备案编号 |
| propertyNumber | string | 选填 | 产权证书 / 不动产权证号 |
| unit | string | 选填 | 面积单位:平方千米、平方米、公顷、亩、hm²、km²、㎡ |
| intercityFlag | boolean | 选填 | 是否跨地(市)标志 |
| projectNumber | string | 选填 | 土地增值税项目编号 |
| price | decimal | 选填 | 核定计税价格 |
| taxAmount | decimal | 选填 | 实际成交含税金额 |
不动产经营租赁服务(06)
specificBusiness 为 JSON 对象:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| area | array | 必填 | 不动产地址(省 / 市 / 区县名称数组) |
| address | string | 必填 | 详细地址 |
| startDate | string | 必填 | 租赁期起,yyyy-MM-dd |
| endDate | string | 必填 | 租赁期止,yyyy-MM-dd |
| propertyNumber | string | 必填 | 产权证书 / 不动产权证号,没有时填写 无 |
| unitOfArea | string | 必填 | 面积单位:平方千米、平方米、公顷、亩、hm²、km²、㎡ |
| intercityFlag | boolean | 选填 | 是否跨地(市)标志 |
| plateNumber | string | 选填 | 车牌号(停车位租赁时填写) |
{
"specificBusinessCode": "06",
"specificBusiness": {
"area": ["上海市", "上海市", "宝山区"],
"address": "蠡太路118号天圣达科创中心A栋502室",
"startDate": "2026-01-01",
"endDate": "2026-12-31",
"propertyNumber": "沪(2020)宝字不动产权第000000号",
"unitOfArea": "平方米",
"intercityFlag": false
}
}
旅客运输服务(09)
specificBusiness 为 JSON 数组,每个元素一位出行人:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| traveler | string | 必填 | 出行人姓名 |
| travelDate | string | 必填 | 出行日期,yyyy-MM-dd |
| idType | int | 必填 | 出行人证件类型代码,见 证件类型代码;201 居民身份证会校验号码格式 |
| idNumber | string | 必填 | 出行人证件号码,不超过 20 个字符 |
| travelDeparturePlace | string | 必填 | 出发地,不超过 80 个字符 |
| travelDestinationPlace | string | 必填 | 到达地,不超过 80 个字符 |
| vehicleType | int | 必填 | 交通工具类型:1 飞机、2 火车、3 长途汽车、4 公共交通、5 出租车、6 汽车、7 船舶、9 其他 |
| level | string | 条件必填 | 等级。飞机:公务舱、头等舱、经济舱;火车:一等座、二等座、软席(软座、软卧)、硬席(硬座、硬卧);船舶:一等舱、二等舱、三等舱;其他交通工具可不传 |
{
"specificBusinessCode": "09",
"specificBusiness": [
{
"traveler": "张三",
"travelDate": "2026-03-01",
"idType": 201,
"idNumber": "310101199001011234",
"travelDeparturePlace": "上海",
"travelDestinationPlace": "北京",
"vehicleType": 2,
"level": "二等座"
}
]
}
医疗服务(10 / 11)
医疗服务(住院 10、门诊 11)字段较多,且需要通过行号与商品明细关联,请阅读 医疗服务发票对接。
校验错误
| message | 说明 |
|---|---|
| 特定业务内容格式不正确 | specificBusiness 不是合法 JSON |
| 请输入出行人 / 请选择出行日期 / 请选择出行人证件类型 / 请输入出行人证件号码 | 旅客运输必填项缺失 |
| 请输入20字符内的出行人证件号码 / 请输入正确的居民身份证号码 | 证件号码格式错误 |
| 请输入80字符内的出发地 / 请输入80字符内的目的地 | 出发地、到达地缺失或过长 |
| 请选择交通工具类型 | vehicleType 缺失 |
| 交通工具类型为飞机时,等级必须为公务舱、头等舱、经济舱 | level 与交通工具不匹配(火车、船舶同理) |