Skip to content

税务数据契约

税务有两种输出,来自同一次采集,用途不同。

ALLSTANDARD
接口POST /api/channel/data/tax/allPOST /api/channel/data/tax/standardTable
schemaVersion无(固定 V2 结构)tax-standard.v2
结构37 个顶层节点24 个模块
语义税局原始 / 映射数据平台加工后的标准化结构
成功业务码200200

税务 ALL

版本

税务 ALL 固定返回 V2,查询请求不需要也不接受版本参数。

平台 1.5.3 为每个 TAX ALL 结果快照记录已发布映射的修订清单与目录哈希。 同一 job_id + attempt_id 首次生成后,后续重复查询复用同一快照;后台后来发布、 回滚或停用映射不会改写这笔历史结果。客户端仍不需要提交任何映射版本参数。

响应固定包含 37 个节点 —— 在原 35 个节点基础上追加两张扩展表:

扩展节点粒度承接内容
taxCompanyEnterpriseExtendedInfoDtoPageResult企业一条记录组织机构代码、增值税企业类型、出口退税/千户集团标志、存款账户、企业标志、跨区域财产税登记主体标志、注册地及经营地邮编、投资总额、核算方式、外籍/合伙/雇工/固定工人数、总分机构类型,以及法人、财务负责人、办税人员各自的固定电话与邮箱
taxDeclarationHandlerInfoDtoPageResult一张增值税主表或 A200000 预缴申报表一条记录表级元数据:银行账号、声明人、经办人及证件、代理机构、主管/受理机关、接收/受理人和日期、金额单位、原工作表名及稳定 formInstanceKey

扩展表不改写原节点

两张扩展表是追加的,不修改 taxCompanyEnterpriseInfoDtoPageResult 等既有节点。 全部字段按 Worker 原值转为稳定字符串:真实 0 保留为 "0",来源为空时为 ""

部分来源未取得不等于整单失败

1.5.3 会保留已取得的税务数据并继续加工,非阻断缺失通过订单/产品结果中的 qualityStatuscollectionResultqualityIssuesdataQuality 披露。 消费 37 个节点时,应把质量摘要与数据快照一并保存。

申报方式字段不做取反猜测

一般纳税人表保留「是否代理申报」,小规模表保留语义相反的「是否自行申报」。 两者分别通过 declarationModeFielddeclarationModeValue 原样表达, 不会互相取反推导。来源没有的字段保持空字符串。

期间费用

taxEnterpriseYearCostsVOS 按 A104000 实际出现且至少有一个金额的业务行输出 17 字段期间费用记录,不制造源表未返回的空行

  • 六个金额字段分别承接销售费用/境外支付、管理费用/境外支付、财务费用/境外支付。
  • *、空白和不可识别文字保持空字符串;真实 0 与负数原样保留
  • 源表存在第 26 行合计时,系统逐列核对全部已返回明细,任一不一致时 整张表失败关闭,不会污染 A100000。
  • taxIdtaxNo 在税局 RAW 没有同语义来源时保持空。

申报更正

taxCompanyDeclareChangeVOPageResult 保持原有 17 个字段, 但只输出已更正次数为正数或税局明确标记为更正申报的记录

  • 候选列表的当前申报日期不再写入 originalDeclarationDatelatestOperationDate
  • 本次应补退金额不再写入 refundAmountBeforeChange
  • 这些历史字段没有同语义来源时保持空。
  • 节点增量返回申报表名称、当前申报日期、本次应补退金额、申报记录/表单 ID、 征收项目代码、申报类型、更正标志及 correctionEvidenceSource

社保节点

两个历史社保节点保持分离,不互相复制

节点性质当前状态
taxSocialSecurityDtoPageResult17 字段兼容占位节点固定为空
getTaxSocialSecurityPageResult旧接口实际绑定「社保申报表」的 15 字段明细节点当前为空

当前 Worker 尚未调用社保申报接口,因此两者均为空。 未来取得真实社保申报 RAW 后只写入后者,不在两个节点重复复制, 也不从普通缴款信息推导。

税务 STANDARD

请求与响应外层

请求不提供模块筛选参数。响应外层:

json
{
  "schemaVersion": "tax-standard.v2",
  "generatedAt": "2026-08-12T10:41:07+00:00",
  "taxpayerId": "91420100XXXXXXXXXX",
  "companyName": "示例企业有限公司",
  "dataAsOf": "2026-07-31",
  "selectedModules": ["NSRJBXX", "…共 24 项"],
  "sourceFingerprint": "sha256:…",
  "sourceWarnings": [],
  "fieldWarnings": [],
  "moduleStatus": {},
  "data": {}
}
字段说明
selectedModules固定列出完整 24 个模块,不受请求影响
sourceFingerprint本次标准化所依据来源的指纹
sourceWarnings来源层面的边界披露(缺年度、缺表单、记录数不一致等)
fieldWarnings字段层面的边界披露(同一项目出现多个不同金额等)
moduleStatus模块代码 → 状态对象
data各模块的标准化数据

24 个模块

业务字段名称统一使用拼音大写缩写,协议级字段保留英文驼峰命名。

代码模块代码模块
NSRJBXX纳税人基本信息NSXYDJLS纳税信用等级历史
RYXX人员信息SSWFWZXX税收违法违章信息
TZFXX企业投资方信息YSHDXX银税互动
NSSBXX纳税申报数据LRBNB利润表年报
ZZSSBMX增值税申报表明细LRBJB利润表季报
QYSDSSBMX企业所得税申报表明细ZCFZBNB资产负债表年报
JKXX缴款信息ZCFZBJB资产负债表季报
QSXX当前欠税信息XJLLBNB现金流量表年报
SBGZ申报更正XJLLBJB现金流量表季报
SWBG税务变更MYSJSEHJ每月实缴税额合计
SBFXX社保费JDSJSETJ已缴税额按季度统计
JCWS稽查文书QYCWZBXX企业财务指标

三类「来源不足」模块

JCWS(稽查文书)、YSHDXX(银税互动)、SBFXX(社保费)、SWBG(税务变更) 当前 Worker 尚未采集对应来源,固定返回 INSUFFICIENT_SOURCE。 这表示来源未采集,不表示企业没有稽查、没有授信记录、没有社保或没有变更。

模块状态

moduleStatus[模块代码]对象,不是字符串:

json
{
  "NSRJBXX": { "status": "AVAILABLE", "recordCount": 1, "message": "" },
  "QSXX":    { "status": "EMPTY", "recordCount": 0, "message": "" },
  "SBFXX":   { "status": "INSUFFICIENT_SOURCE", "recordCount": 0, "message": "…" }
}
status含义客户端应如何解读
AVAILABLE有数据正常消费
EMPTY来源存在且已证明为空可作为「确实没有」的业务结论
NOT_COLLECTED本次采集没有该来源不能解读为「没有」
INSUFFICIENT_SOURCE已采集,但来源不足以无损标准化不能解读为「没有」,看 message
PROCESSING_FAILED标准化过程失败联系平台

空不等于没有

NOT_COLLECTEDINSUFFICIENT_SOURCE 当成「该企业没有欠税/没有更正/没有社保」 是最常见的误用。只有 EMPTY 才是经过证明的空

几个模块的口径

QYSDSSBMX · 企业所得税申报明细

直接从 Worker RAW 加工。新版 Worker 从企业税务登记/设立年份逐年查询到当前年, 对每次所得税申报调用税局 getBbidList 后逐张采集清单内的 A000000、A100000、A200000 及实际选报年度附表。

只有年度连续、全部税务采集项成功且所得税表单范围完整时,TAX 产品才允许入库; 少一年、少一张必需表或任一明细请求失败都会明确失败。

  • 年度主表人民币金额进入 BQJE
  • 月(季)度本年累计及新版金额型附报事项进入 LJJE
  • 税率、比例和选项不会去掉符号后冒充金额。

A000000 和年度附表完整保留在 RAW;现有 12 个业务字段无法无损承接时, 模块用 INSUFFICIENT_SOURCEsourceWarnings 明确披露 「已采集但未标准化」的边界。

JKXX · 缴款信息

直接从 Worker RAW 加工,不经过 ALL 或 queryTaxInfo。 新版 Worker 从企业税务登记/设立年份开始,按「缴款日期」逐年分页查询, 并在税务采集清单中证明连续年度和返回记录数;服务端还会反查清单起始年度、 记录数和 RAW 缴款日期,任一不一致均返回 INSUFFICIENT_SOURCE

  • RKRQ 只接受独立入库日期,绝不复制 JKRQ 缴款日期。
  • 缺失实缴金额不会被填成零。
  • 晚于缴款日的后续申报/更正日期不会被误配为 SBRQ
  • 企业主管税务机关不会冒充单笔缴款机关。

旧 Worker 只有最近四年范围,旧记录仍可读取,但不能当作企业完整历史。 只有完整年度清单与记录数共同证明零记录时,模块才返回 EMPTY

QSXX · 欠税信息

从 Worker 当前欠税接口 RAW 生成,不合并历史欠税。 入库时要求清单条数与「欠税信息」RAW 行数完全一致。

  • QSJLID 只使用税局真实 ID;
  • YBTSE 只使用当前欠缴金额;
  • SKZL / YZPZLMC 分别表示税款种类和应征凭证种类;
  • 缺失字段保持 null

NSRJBXX.DQSFQS 只有在税局明确标记欠税/逾期,或快照日已晚于具体缴款期限 且欠缴金额为正时才为 true;尚未到期为 false;旧采集证据不足时为 null

旧文件没有欠税工作表不能解释为「无欠税」。

SBGZ · 申报更正

只输出有明确更正证据的申报记录。

税局「申报更正与作废」页面首先返回的是可供用户选择处理的已申报表, 并不表示这些申报都发生过更正。新版 Worker 因此将该 RAW 明确命名为 「申报更正候选申报列表」,完整分页并继续入库,但候选来源缺失或查询不完整 不会阻断其他税务数据入库。

  • 没有更正次数或更正标志的候选行不会写入 SBGZ
  • 候选列表的当前申报日期绝不冒充原申报日期。
  • YWZJ 不使用更正次数、日期或金额等可变属性。

只有候选列表而没有真实更正历史证明时,模块返回 INSUFFICIENT_SOURCE, 而不是虚构更正记录。

SWBG · 税务变更

只接受税局真实企业变更历史。当前 Worker 只采集企业当前登记信息, 没有调用变更历史接口,因此当前结果明确返回 INSUFFICIENT_SOURCE —— 不能解释为企业没有发生变更

变更项目名称、代码、变更前内容、变更后内容和日期只读取同语义 RAW 字段; 当前地址、法人、注册资本等快照不会被拿来倒推历史。

SBFXX · 社保费信息

只接受企业社保费申报明细。当前 Worker 没有调用社保费申报接口, 现有缴款记录也缺少费种、征收品目、人数、缴费基数和费率, 不能转换成社保申报,因此模块返回 INSUFFICIENT_SOURCE

未来真实来源接入后,16 个字段逐项直取;应缴费额、基数和减免费额严格按货币解析, 人数和顺序按非负整数输出。「抵缴费额」不会冒充减免费额,征收子目不会冒充征收品目。

组合获取

POST /api/channel/data/tax/results 一次返回多种输出:

json
{
  "channelCode": "BANK",
  "channelOrderNo": "BANK-20260812-0001",
  "orderNo": "1e3f2f55-8da4-4ba9-b941-84860eb1d243",
  "taxDataTypes": ["ALL", "STANDARD"]
}

data 的键即请求的输出类型。规则见获取数据

完整字段字典

本页说明的是口径与边界。逐字段的类型、必填性与取值范围以交付包内的 税务 ALL / STANDARD 字段附件(JSON / CSV)为准, 请求/响应 Schema 以接口参考为准。

适配平台 1.5.3 · 客户交付 R4.4;本文档仅供已签约渠道客户使用。