金融机构在反洗钱与客户尽职调查实务中,最常卡壳的一类主体就是分支机构。12 号令(中国人民银行令〔2025〕第 12 号)与 3 号令(受益所有人信息管理办法)把分支机构分成了两类,识别规则不同;更棘手的是,相当一部分分支机构的工商登记里「缺总公司关系」,或「总公司已注销」,沿用链断裂。这类主体的受益所有人识别不能靠人工翻工商档案,需要把工商登记、股权穿透、任职信息用外部数据自动串联。
一、监管口径:两类分支机构的识别规则
12号令第九条对分支机构做了二元划分,识别动作完全不同:
| 分支机构类型 | 法规依据 | 识别方法 | 主要数据来源 |
|---|---|---|---|
| 国内法人 / 非法人组织的分支机构 | 12 号令第九条 | 取所属法人(总公司)的受益所有人;总公司已是本机构客户且完成尽调的,可复用 | 工商登记、股权穿透、任职信息 |
| 外国公司分支机构 | 12 号令第八、九条 | 识别所属外国公司的受益所有人,并将该分支至少一名高级管理人员认定为受益所有人 | 境外主体穿透、境内任职信息 |
同时,12 号令第四条的「合理性 / 可靠性原则」要求识别结果必须说明来源与依据,并留存佐证材料——这正是企业风控系统需要把「判定理由」和「数据来源」一并结构化落库的原因。
二、工程化识别流程(判定树)
把规则翻译成判定树,核心分支有三个:
- 能否解析出「分公司—总公司」关系且总公司状态正常 → 复用总公司 UBO。
- 总公司已注销 / 吊销 → 退化为取分支机构的日常经营管理人员(负责人)。
- 外国公司分支机构 → 外国公司 UBO + 至少一名高级管理人员。
这里会同时用到实控人穿透与关联关系排查:母公司注销时,要确认负责人是否通过其他主体与被注销母公司存在隐性控制;复用总公司 UBO 时,要确认总公司本身的控制链没有发生变更。
三、Python 落地:分支机构 UBO 穿透
下面基于QCC开放平台真实接口封装,给出分支受益所有人识别的可运行骨架。调用前需配置QCC_APP_KEY与QCC_INTERFACE_TOKEN,示例数值以接口实际返回为准。
importrequests,os QCC_KEY=os.getenv("QCC_APP_KEY")QCC_TOKEN=os.getenv("QCC_INTERFACE_TOKEN")BASE="https://api.qichacha.com"defqcc_get(path:str,keyword:str)->dict:"""QCC开放平台统一调用封装,返回 Result 字段。"""resp=requests.get(f"{BASE}{path}",params={"key":QCC_KEY,"keyword":keyword},headers={"Token":QCC_TOKEN},timeout=10,)resp.raise_for_status()data=resp.json()ifdata.get("Status")!="200":raiseRuntimeError(f"QCC error:{data.get('Message')}")returndata.get("Result",{})defget_parent_of_branch(branch:str)->str|None:"""从分支机构工商全维信息中取所属总公司。字段以接口实际返回为准。"""basic=qcc_get("/CompanyInfo/GetBasicDetails",branch)returnbasic.get("ParentName")orbasic.get("BelongOrg")defidentify_branch_ubo(branch:str)->dict:""" 分支机构受益所有人识别: - 有正常状态的总公司 -> 复用总公司受益所有人 - 总公司已注销 -> 取分支机构负责人(日常经营管理人员) - 外国公司分支 -> 外国公司UBO + 至少一名高管 """basic=qcc_get("/CompanyInfo/GetBasicDetails",branch)branch_status=basic.get("Status")# 如 在业 / 注销is_foreign=basic.get("ForeignBranch")=="1"# 是否外国公司分支,以接口实际返回为准# 1) 外国公司分支机构:按第八、九条双路径识别ifis_foreign:foreign_ubo=qcc_get("/CompanyInfo/GetBeneficialOwners",branch)# 所属外国公司UBOmanagers=qcc_get("/CompanyInfo/GetKeyPerson",branch)# 境内高管senior=next((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) 国内分支:解析总公司关系parent=get_parent_of_branch(branch)ifparent:parent_basic=qcc_get("/CompanyInfo/GetBasicDetails",parent)ifparent_basic.get("Status")in("在业","存续","正常"):# 总公司状态正常 -> 复用ubo=qcc_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_owners+get_actual_controller的链路上溯 UBO;若总公司注销或缺失,改用get_key_personnel取负责人作为「日常经营管理人员」,并用两次risk_scan排查负责人 / 总公司是否尚有未决风险传导。整条链路输出「受益所有人 + 关系类型 + 判定理由 + 佐证来源」,与监管留痕要求对齐。
五、佐证材料留存与审计
12 号令第四条要求留存「来源可靠」的佐证材料。工程上建议把以下三类来源一并落库:
- 分支负责人在国家企业信用信息公示系统的对应截图;
- 工商登记、任职信息等来源数据(来自上述
GetBasicDetails/GetKeyPerson); - 识别过程日志(判定树走了哪条分支、用了哪条总公司 UBO 链)。
这部分是关联关系排查的刚性闭环:没有佐证,识别结论在反洗钱现场检查里会被认定为不完整。
六、数据底座规模
分支受益所有人识别依赖的工商登记、股权、任职、处罚、经营异常等维度均在内,足以支撑全量分支主体的自动化 UBO 穿透与持续监控。