> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 银行验证方式：银行登录与账户核验

> Didit 银行验证支持银行登录与账户核验：了解各验证方式证明与返回的内容，以及如何按国家/地区进行选择与排序。

Bank Verification 用于确认银行账户是否属于您工作流中先前步骤已验证的个人或企业。这是包含两种方式的单一工作流步骤：用户既可以在其银行登录，也可以输入其账户信息并由银行确认账户上的姓名。您可以选择每个国家/地区提供哪些方式以及哪种方式优先展示。

> [!NOTE]
>
> 在生产环境中，银行登录支持尼日利亚和新西兰，账户核验支持尼日利亚、加纳和肯尼亚。
> 随着时间推移将支持更多国家/地区，[Bank Verification 定价](https://docs.didit.me/zh/getting-started/bank-verification-pricing.md)始终显示各国家/地区当前支持的功能。

> [!NOTE]
>
> Bank Verification 会将账户持有人与**其他步骤**已确立的身份进行比对，因此其本身不能作为身份证明。请在此步骤之前配置身份证件验证、数据库核验、问卷或 `expected_details`。用户绝不会自行输入待核验的姓名：Didit 始终比对该会话已验证的姓名。

## 两种方式

| | 银行登录 | 账户核验 |
| - | - | - |
| 方式值 | `open_banking` | `account_lookup` |
| 用户的操作 | 登录其银行并共享账户。 | 输入账户信息：IBAN、分行代码（sort code）和账号、CLABE 等。无需登录。 |
| 证明的内容 | 对账户的控制权，以及银行返回的持有人信息。 | 银行提供的该账户持有人姓名与已验证的姓名相符。 |
| 补充的数据 | 余额、交易和收入（当步骤要求时）。 | 无：仅所有权。 |
| 典型用途 | 入驻、借贷、负担能力评估、高风险客户。 | 出款与提现、低摩擦入驻、不支持银行登录的国家/地区。 |

两种方式提供相同类型的结果：持有人是否匹配、银行返回的持有人姓名以及掩码后的账户。各国家/地区支持的方式有所不同，一个国家/地区可以提供其中一种、两种都提供，或以任意顺序提供两种。有关账户格式、结果及沙盒测试值，请参阅[账户核验](https://docs.didit.me/zh/core-technology/bank-verification/account-check.md)。

对账单上传和微额存款作为这两种方式之后的兜底方案（`bank_statement_enabled`、`bank_microdeposits_enabled`），且用户始终可以选择在没有银行的情况下继续。微额存款仅在同一会话中已计费的银行登录或账户核验之后提供，无需额外费用。对账单上传也包含在任一方式之后，也可以在任何国家/地区未经前置银行尝试的情况下直接提供。请参阅[当用户无法验证其银行时](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md)。

## 用户看到的内容

在每个国家/地区中，用户从该国家/地区提供的第一种方式开始。第二种方式作为其备选方案：

* **优先银行登录：**银行选择器打开。其最后一行**输入您的账户信息**将启动账户核验。如果银行登录失败，同一行会再次出现在**其他验证方式**下方。
* **优先账户核验：**账户表单打开，下方带有**改为登录您的银行**链接。
* **仅提供一种方式：**用户仅会看到该方式。

当某个国家/地区支持账户核验时，若某家银行当前由于性能降级或服务中断而无法通过银行登录连接，账户核验也会作为备用方式：只要用户还有剩余的账户核验次数，在征求任何同意之前就会引导用户进入账户表单。在某个国家/地区没有通道支持的方式会被排除，因此用户绝不会看到无法运行的方式。完全没有通道支持的国家/地区仅提供其兜底方案和**不使用您的银行继续**。

## 按国家/地区选择方式

### 步骤顺序

对于未自行设置方式的每个国家/地区，`bank_method_order` 用于设置该步骤提供哪些方式以及按何种顺序提供。它列出 `open_banking`、`account_lookup` 或两者兼有，排在前面的方式优先展示。

```json theme={null}
{
  "bank_method_order": ["open_banking", "account_lookup"]
}
```

保存时若未发送 `bank_method_order`，其默认值为 `["open_banking", "account_lookup"]`：优先银行登录，账户核验作为备选方案。空列表会被拒绝并提示 `Choose a method: bank sign-in, account check, or both.`。

步骤顺序是一个默认值。在某个国家/地区中，若没有通道支持其中某种方式，该方式将被排除，该国家/地区仅提供其余方式。如果某个国家/地区有通道支持，但步骤顺序设置导致其没有可用方式，保存时将被拒绝，例如 `Choose a method: bank sign-in, account check, or both. ARE offers account check.`。完全没有银行通道支持的国家/地区仍会保留，但仅提供其兜底方案：请参阅[没有银行通道支持的国家/地区](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md#无银行路由支持的国家/地区)。

### 国家/地区专属顺序

`bank_countries` 中某个国家/地区的 `methods` 会覆盖该国家/地区的步骤顺序。用户从第一种方式开始，第二种方式作为备选方案提供。

```json theme={null}
{
  "bank_method_order": ["open_banking", "account_lookup"],
  "bank_countries": {
    "GBR": { "enabled": true, "institutions": "all" },
    "NOR": {
      "enabled": true,
      "institutions": "all",
      "methods": ["open_banking"]
    },
    "MEX": {
      "enabled": true,
      "institutions": "all",
      "methods": ["account_lookup", "open_banking"]
    }
  }
}
```

在此示例中，英国遵循步骤顺序，挪威仅提供银行登录，而墨西哥优先提供账户核验并将银行登录作为备选方案。`methods` 设置为 `null` 或缺少该键的国家/地区将遵循步骤顺序。当已启用的国家/地区出现以下情况时，保存将在 `bank_countries.<ISO3>` 下被拒绝：

* 将 `methods` 设置为空列表，即使在没有通道支持的国家/地区也是如此，或
* 指定了当地没有通道支持的方式，例如 `Account check is not available in NOR.`

完全没有通道支持的国家/地区可省略 `methods` 或将其设置为 `null`，且仅提供其兜底方案：请参阅[没有银行通道支持的国家/地区](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md#无银行路由支持的国家/地区)。

### 在控制台中

在银行验证步骤中，**国家/地区与方式**列出了每个国家/地区中银行登录和账户核验各自的支持情况，以及哪种方式优先。其预设可以一次性填充所有国家/地区：

| 预设 | 顺序 |
| - | - |
| 银行登录，账户核验作为备选（默认） | `["open_banking", "account_lookup"]` |
| 仅银行登录 | `["open_banking"]` |
| 仅账户核验 | `["account_lookup"]` |
| 账户核验，银行登录作为备选 | `["account_lookup", "open_banking"]` |

预设绝不会让某个国家/地区没有任何可用方式：如果某个国家/地区仅支持这两种方式中的一种，该方式将保持启用状态。

## 财务数据需要银行登录

只有银行登录才能读取余额、交易和收入。当该步骤在 `bank_scopes` 中请求这些数据，并且某个国家/地区提供了账户核验时，通过账户核验进行验证的人无需这些数据即可通过。该步骤不会失败：结果会在 `financial_data.not_collected` 中列出未收集的内容。

```json theme={null}
"financial_data": {
  "balances": null,
  "transactions": null,
  "income": null,
  "categorization": null,
  "not_collected": ["balances", "transactions"]
}
```

只要该方法收集到了该步骤请求的所有内容，`not_collected` 就是一个空列表。如需强制要求提供这些数据，请在需要它们的国家/地区仅提供银行登录。

## 账户核验设置

这些键仅用于配置账户核验。银行登录保留其自身的设置。

| 配置字段 | 效果 |
| - | - |
| `bank_account_check_accept_close_match` | 开启（默认）：银行评分介于 `bank_partial_match_floor` 与 `bank_name_match_threshold` 之间的姓名视为近似匹配。当 `bank_suggest_holder_name` 开启时，用户需确认银行所记录的姓名，并由 `bank_partial_match_action` 决定后续操作。关闭：该近似匹配将被视为不匹配（`OWNER_NAME_MISMATCH`），由 `bank_no_match_action` 决定后续操作，且会消耗一次尝试次数。 |
| `bank_account_check_max_attempts` | 用户可进行的账户核验次数，范围为 `1` 至 `5`，未设置时为 `3`：即他们可以输入多少次账户信息来让银行响应核验。按输入内容直接被拒的账户，或银行无法响应的核验，均不消耗尝试次数。 |

尝试次数按验证方法分别计算。`bank_max_attempts` 计算银行登录尝试次数，小额打款或对账单上传也会消耗其中一次尝试次数。`bank_account_check_max_attempts` 计算账户核验次数。一旦仍向该用户提供的每种验证途径（包括对账单上传）都用尽了尝试次数且未成功建立连接，该步骤将以 `bank_attempts_exhausted_action` 结束：参见[对账单上传](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md#对账单上传)。

## 在结果中读取验证方法

### 决策与 Webhook

在[会话决策](https://docs.didit.me/zh/sessions-api/retrieve-session.md#银行验证)和 [`status.updated` Webhook](https://docs.didit.me/zh/integration/webhooks#v3-复数形式的数组（重要）) 的 `decision` 对象中，每个银行验证步骤都是 `bank_verifications[]` 的一个元素。其 `method` 说明了该账户是如何完成验证的：

| `method` | 显示为 |
| - | - |
| `open_banking` | 银行登录 |
| `account_lookup` | 账户核验 |
| `microdeposits` | 小额打款 |
| `statement` | 对账单上传 |
| `none` | 不使用银行继续 |

在评估账户之前，`method` 为 `null`；当用户在评估任何尝试之前选择不使用银行继续时，其值为 `none`：参见[在结果中读取](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md#在结果中读取)。请读取 `method`，而非 `ownership.method`，来区分不同的验证方法：`ownership.method` 是产生评分的姓名比对方式，例如 `exact` 或 `fuzzy`。

```json theme={null}
{
  "bank_verifications": [
    {
      "node_id": "feature_bank_verification",
      "status": "Approved",
      "method": "account_lookup",
      "ownership": {
        "result": "match",
        "method": "exact"
      },
      "financial_data": {
        "balances": null,
        "transactions": null,
        "income": null,
        "categorization": null,
        "not_collected": []
      }
    }
  ]
}
```

该示例仅展示了本页面讨论的字段。所有字段均可在 [API 参考](https://docs.didit.me/zh/sessions-api/retrieve-session.md)的 `SessionDecision` 模式中找到。

### 工作流规则

分支和自定义状态规则将读取与 `bank.method` 相同的值，在规则构建器中标记为 **Bank Verification Method**，其取值为 **Bank Sign-in**、**Account Check**、**Micro-deposits**、**Statement Upload** 和 **Continued Without a Bank**。规则会比对该方法的值，例如在 AML 筛查步骤之后的一个分支，将具有高风险评分的账户核验发送去审核：

```json theme={null}
{
  "id": "account_check_high_risk",
  "rules": [
    {
      "field": "bank.method",
      "operator": "equals",
      "value": "account_lookup"
    },
    {
      "field": "aml.risk_score",
      "operator": "greater_than",
      "value": 70
    }
  ],
  "logic": "and",
  "goto": "status_in_review"
}
```

### 会话报告

会话 PDF 报告会在其 **验证方法** 这一行标明具体的方法。

## 在引入验证方法之前保存的节点

`bank_open_banking_enabled` 和 `bank_account_lookup_enabled` 已停用。在 `bank_method_order` 存在之前保存的节点，现在按这两个开关原本给出的顺序运行：

| `bank_open_banking_enabled` | `bank_account_lookup_enabled` | 节点运行时采用 |
| - | - | - |
| 开启或未设置 | 关闭或未设置 | `["open_banking"]` |
| 开启或未设置 | 开启 | `["open_banking", "account_lookup"]` |
| 关闭 | 开启 | `["account_lookup"]` |

如果此前在银行登录旁开启了账户核验，用户现在可以在银行选择器中将其作为备选方案看到（**输入您的账户信息**），而不仅限于其开户行发生故障时。两个开关均关闭的节点（此前仅提供小额打款或对账单上传）保持原样；后续保存时必须开启这两种方法中的至少一种。

在某一个过渡版本中，如果保存操作未发送 `bank_method_order`，但发送了任一开关，仍会根据开关设置顺序。每次保存都会反写这两个开关的值，分别表示是否有任何国家/地区提供银行登录，以及是否有任何国家/地区提供账户核验。在新的集成中，请使用 `bank_method_order` 和 `bank_countries.<ISO3>.methods`。

## 定价

每种方法均按其各自的价格收费，因国家/地区而异。请参见[银行验证定价](https://docs.didit.me/zh/getting-started/bank-verification-pricing.md)了解每个国家/地区的价格。

* **银行登录**拥有自身的价格，余额和交易附加组件各自分别计费。
* **账户核验**按银行响应的每次核验计费一次：匹配、近似匹配、不匹配、无法核验的账户以及未找到的账户。按输入内容直接被拒的账户绝不收费。

如果一个国家/地区同时提供这两种方法，会话费用可能是其中任一价格，取决于用户所使用的方法。在产生计费尝试后，对账单上传和小额打款均包含在内，无需额外付费。在没有任何银行尝试记录前进行的对账单上传费用为 \$0.20，而不使用银行继续绝不收费：参见[定价](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md#定价)。[账户核验 API](https://docs.didit.me/zh/standalone-apis/bank-account-check.md) 可从您的后端直接运行相同的核验，无需会话，且价格与账户核验相同。

## 在沙盒中测试

沙盒应用会在所有国家/地区按该步骤设置的顺序提供这两种方法，且不收取任何费用。在默认顺序下，用户首先进入银行登录，并可选择**输入您的账户信息**来运行账户核验。若要首先进入账户核验，请将 `bank_method_order` 设置为 `["account_lookup", "open_banking"]`。账户的最后四位字符将决定账户核验的响应结果：参见[在沙盒中测试](https://docs.didit.me/zh/core-technology/bank-verification/account-check.md#在沙盒中测试)。

## 相关内容

* [账户核验](https://docs.didit.me/zh/core-technology/bank-verification/account-check.md)：账户格式、结果及沙盒测试值。
* [当用户无法验证银行时](https://docs.didit.me/zh/core-technology/bank-verification/fallbacks.md)：回退方案、“无需银行账户直接继续”及其结果。
* [账户核验 API](https://docs.didit.me/zh/standalone-apis/bank-account-check.md)：无需会话，直接从您的后端核验付款账户。
* [银行验证配置键](https://docs.didit.me/zh/management-api/workflows/feature-configs.md#银行验证)：该步骤的所有配置键。
* [沙盒测试](https://docs.didit.me/zh/integration/sandbox-testing.md)。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.