
金融机构在反洗钱与客户尽职调查实务中最常卡壳的一类主体就是分支机构。12 号令中国人民银行令〔2025〕第 12 号与 3 号令受益所有人信息管理办法把分支机构分成了两类识别规则不同更棘手的是相当一部分分支机构的工商登记里「缺总公司关系」或「总公司已注销」沿用链断裂。这类主体的受益所有人识别不能靠人工翻工商档案需要把工商登记、股权穿透、任职信息用外部数据自动串联。一、监管口径两类分支机构的识别规则12号令第九条对分支机构做了二元划分识别动作完全不同分支机构类型法规依据识别方法主要数据来源国内法人 / 非法人组织的分支机构12 号令第九条取所属法人总公司的受益所有人总公司已是本机构客户且完成尽调的可复用工商登记、股权穿透、任职信息外国公司分支机构12 号令第八、九条识别所属外国公司的受益所有人并将该分支至少一名高级管理人员认定为受益所有人境外主体穿透、境内任职信息同时12 号令第四条的「合理性 / 可靠性原则」要求识别结果必须说明来源与依据并留存佐证材料——这正是企业风控系统需要把「判定理由」和「数据来源」一并结构化落库的原因。二、工程化识别流程判定树把规则翻译成判定树核心分支有三个能否解析出「分公司—总公司」关系且总公司状态正常 → 复用总公司 UBO。总公司已注销 / 吊销 → 退化为取分支机构的日常经营管理人员负责人。外国公司分支机构 → 外国公司 UBO 至少一名高级管理人员。这里会同时用到实控人穿透与关联关系排查母公司注销时要确认负责人是否通过其他主体与被注销母公司存在隐性控制复用总公司 UBO 时要确认总公司本身的控制链没有发生变更。三、Python 落地分支机构 UBO 穿透下面基于QCC开放平台真实接口封装给出分支受益所有人识别的可运行骨架。调用前需配置QCC_APP_KEY与QCC_INTERFACE_TOKEN示例数值以接口实际返回为准。importrequests,os QCC_KEYos.getenv(QCC_APP_KEY)QCC_TOKENos.getenv(QCC_INTERFACE_TOKEN)BASEhttps://api.qichacha.comdefqcc_get(path:str,keyword:str)-dict:QCC开放平台统一调用封装返回 Result 字段。resprequests.get(f{BASE}{path},params{key:QCC_KEY,keyword:keyword},headers{Token:QCC_TOKEN},timeout10,)resp.raise_for_status()dataresp.json()ifdata.get(Status)!200:raiseRuntimeError(fQCC error:{data.get(Message)})returndata.get(Result,{})defget_parent_of_branch(branch:str)-str|None:从分支机构工商全维信息中取所属总公司。字段以接口实际返回为准。basicqcc_get(/CompanyInfo/GetBasicDetails,branch)returnbasic.get(ParentName)orbasic.get(BelongOrg)defidentify_branch_ubo(branch:str)-dict: 分支机构受益所有人识别 - 有正常状态的总公司 - 复用总公司受益所有人 - 总公司已注销 - 取分支机构负责人(日常经营管理人员) - 外国公司分支 - 外国公司UBO 至少一名高管 basicqcc_get(/CompanyInfo/GetBasicDetails,branch)branch_statusbasic.get(Status)# 如 在业 / 注销is_foreignbasic.get(ForeignBranch)1# 是否外国公司分支以接口实际返回为准# 1) 外国公司分支机构按第八、九条双路径识别ifis_foreign:foreign_uboqcc_get(/CompanyInfo/GetBeneficialOwners,branch)# 所属外国公司UBOmanagersqcc_get(/CompanyInfo/GetKeyPerson,branch)# 境内高管seniornext((mforminmanagers.get(Employees,[])ifm.get(IsManager)1),None)return{branch:branch,type:外国公司分支机构,ubo:foreign_ubo.get(BeneficialOwners),senior_manager:(senioror{}).get(Name),reason:按12号令第九条:外国公司UBO 分支至少一名高管,source:GetBeneficialOwners / GetKeyPerson,}# 2) 国内分支解析总公司关系parentget_parent_of_branch(branch)ifparent:parent_basicqcc_get(/CompanyInfo/GetBasicDetails,parent)ifparent_basic.get(Status)in(在业,存续,正常):# 总公司状态正常 - 复用uboqcc_get(/CompanyInfo/GetBeneficialOwners,parent)return{branch:branch,type:国内分支-复用总公司,parent:parent,ubo:ubo.get(BeneficialOwners),reason:f总公司[{parent}]状态正常,复用其受益所有人,source:GetBeneficialOwners,}# 3) 总公司已注销/吊销 - 退化为负责人return{branch:branch,type:国内分支-总公司注销,parent:parent,ubo:[{name:basic.get(OperName),relation:日常经营管理人员}],reason:f总公司[{parent}]已{parent_basic.get(Status)},取分支负责人,source:GetBasicDetails.OperName,}# 4) 缺总公司关系 - 直接取负责人并提示人工复核return{branch:branch,type:缺总公司关系,ubo:[{name:basic.get(OperName),relation:日常经营管理人员}],reason:工商登记缺总公司关系,取分支负责人并转人工复核,source:GetBasicDetails.OperName,}# 示例调用数值以接口实际返回为准print(identify_branch_ubo(某某科技有限公司XX分公司))识别结果里ubo与reason字段直接对应 12 号令第四条的「识别依据」要求下游系统可将其写入客户准入核查留痕表满足审计复核。四、MCP 编排Agent 自动取证在 Agent 工作流里可以让模型按分支类型编排QCC MCP 真实工具做自动取证再聚合判断[{tool:mcp__qcc-company__get_company_registration_info,arguments:{keyword:某某科技有限公司XX分公司}},{tool:mcp__qcc-company__get_branch,arguments:{keyword:某某科技有限公司XX分公司}},{tool:mcp__qcc-company__get_beneficial_owners,arguments:{keyword:所属总公司名称}},{tool:mcp__qcc-company__get_actual_controller,arguments:{keyword:所属总公司名称}},{tool:mcp__qcc-company__get_key_personnel,arguments:{keyword:某某科技有限公司XX分公司}},{tool:mcp__qcc-risk__get_company_risk_scan,arguments:{keyword:某某科技有限公司XX分公司}},{tool:mcp__qcc-risk__get_company_related_risk_scan,arguments:{keyword:所属总公司名称}}]Agent 拿到返回后的聚合逻辑先用get_company_registration_info判断分支类型与状态若总公司状态正常以get_beneficial_ownersget_actual_controller的链路上溯 UBO若总公司注销或缺失改用get_key_personnel取负责人作为「日常经营管理人员」并用两次risk_scan排查负责人 / 总公司是否尚有未决风险传导。整条链路输出「受益所有人 关系类型 判定理由 佐证来源」与监管留痕要求对齐。五、佐证材料留存与审计12 号令第四条要求留存「来源可靠」的佐证材料。工程上建议把以下三类来源一并落库分支负责人在国家企业信用信息公示系统的对应截图工商登记、任职信息等来源数据来自上述GetBasicDetails/GetKeyPerson识别过程日志判定树走了哪条分支、用了哪条总公司 UBO 链。这部分是关联关系排查的刚性闭环没有佐证识别结论在反洗钱现场检查里会被认定为不完整。六、数据底座规模分支受益所有人识别依赖的工商登记、股权、任职、处罚、经营异常等维度均在内足以支撑全量分支主体的自动化 UBO 穿透与持续监控。