account_lookup。对账单上传和微额打款在两者之后仍作为后备方案,并且用户始终可以在不使用银行验证的情况下继续。若要直接从您的后端核验账户而无需创建会话(例如在付款前),请使用账户核验 API。
银行验证是根据另一个步骤已确立的身份来确认谁拥有该账户,因此它本身不能作为身份证明。请在此步骤之前加入身份证件验证、数据库核验、问卷或
expected_details。用户无需为该核验输入姓名:Didit 始终比对会话中已经验证的姓名。工作原理
1
用户选择其国家/地区
在银行验证步骤中,用户选择该步骤支持的国家/地区。如果账户核验在当地排在首位,该步骤会以该国家/地区的账户格式打开一个简短表单。如果银行登录排在首位,用户选择输入您的账户信息即可进入该表单。
2
用户输入其账户信息
例如 IBAN、分行代码和账号,或者 CLABE。验证流程会根据 API 针对该国家/地区返回的内容生成表单,因此 Didit 日后新增国家/地区时,您无需在己方进行任何更改。
3
Didit 首先检查格式
在进行任何计费之前,Didit 会检查每个值:长度、字符、校验位,对于 IBAN 还会检查其是否属于所选国家/地区。未通过的值会被拒绝并指出需要修正的字段。用户在当前界面直接修改,不会消耗尝试次数。
4
银行核对账户上的姓名
Didit 针对会话已验证的姓名执行一次核验。客户端发送的任何其他内容都会被忽略。
5
该步骤做出判定
返回的结果成为账户所有权结果,该步骤的操作会将其转化为最终裁决,方式与银行登录完全相同。
该核验支持的地区
覆盖范围按国家/地区划分。在生产环境中,该核验目前在尼日利亚、加纳和肯尼亚运行。Didit 在某国家/地区具备定价路由后,会逐个开放;没有路由的国家/地区则不提供此功能,银行验证定价始终显示当前名单。随着时间推移会新增更多国家/地区,且该步骤始终读取最新名单,因此在新增国家/地区时,您无需修改集成代码。 在已覆盖的国家/地区内,该步骤的方法配置决定了用户是否会看到它:- 步骤顺序。
bank_method_order设置每个国家/地区提供哪些方法以及哪种方法优先。默认值["open_banking", "account_lookup"]会首先展示银行登录,并将账户核验作为后备选项。 - 国家/地区自定顺序。
bank_countries中某个国家/地区的methods会覆盖该地区的步骤顺序,例如["account_lookup"]表示仅使用账户核验,或["account_lookup", "open_banking"]表示优先使用它。 - 银行服务故障。 在提供账户核验的国家/地区,它还可以作为银行登录服务降级或故障时的后备方案:在该用户仍可进行账户核验的情况下,该步骤会在请求任何同意授权之前直接切换到账户表单。
- 该核验在 Didit 自有路由上运行。 在您自有的应用市场提供商(
provider_key)上运行的步骤,仅在开启fallback_to_native时才提供此功能。 - 企业账户。 在企业验证会话中,在 Didit 支持核验企业账户的国家/地区,该核验会将企业账户与已验证的企业进行比对。
用户输入的内容
以下是表单支持的账户格式。这并非覆盖范围名单:某国家/地区是否支持该核验取决于支持的地区,且该步骤始终显示该国家/地区的具体字段。
在某些国家/地区,表单还会要求填写注册号:适用于企业账户,以及在少数国家/地区适用于所有账户。
在对输入值进行检查前,系统会自动移除空格、破折号和点号,并将英文字母转为大写,因此用户可以完全按照银行打印的格式输入账户信息。
启用
新步骤默认提供账户核实,作为银行登录的备选方案。要从此方式开始,或仅提供此方式,请在顺序中将account_lookup 置于首位:
结果
返回结果的核验
以下每种情况均计费一次,并消耗用户的一次账户核实次数(bank_account_check_max_attempts)。在步骤完成前,只要剩余次数大于零,用户就可以使用其他账户重试。结果显示在 ownership.result 中,但对于不存在的账户,结果显示在 connection.reason_code 中。
若关闭
bank_account_check_accept_close_match,上述两种相近匹配都将转为 no_match,原因代码为 OWNER_NAME_MISMATCH:系统绝不会要求用户确认姓名,并由 bank_no_match_action 决定结果。无论何种情况,银行登录均保留其相近匹配逻辑。
一旦用户用尽所有账户核实次数,以及在支持银行登录的国家/地区用尽所有银行登录尝试次数,且未成功连接,只要步骤仍提供流水上传且尚有剩余次数,步骤便保持开启状态:参见流水上传。当没有其他途径可用时,步骤以 bank_attempts_exhausted_action 结束(默认为 DECLINE),除非先前的尝试已得出结论(例如姓名不匹配)。此时该判定仍然有效。
绝不计费的结果
以下情况均不消耗核验次数。每种情况都会显示在connection.reason_code 中。
在决策中
会话决策在bank_verifications[] 下列出该步骤。账户完成评估后,method 显示为 account_lookup。在未对账户进行评估时,method 和 ownership 为 null,且 connection.reason_code 会说明原因,例如 ACCOUNT_NOT_FOUND、PROVIDER_UNAVAILABLE 或 REFERENCE_IDENTITY_MISSING。
该核验无需选择银行,因此 connection.institution_id、connection.institution_name 和 connection.oauth 均为 null,而 connection.institution_country 为用户选择的国家/地区。步骤完成后,Didit 不会保留对账户的访问权限,因此以匹配结束的核验显示为 connection.status: revoked,且 reason_code: VERIFICATION_COMPLETED。结果本身会保留在会话中。
账户核实不会读取余额、交易记录或收入。当步骤要求获取这些信息时,financial_data.not_collected 会列出它们;参见财务数据需要银行登录。
method 即可区分账户核实与银行登录:该字段专门用于此目的。
在工作流规则和报告中
- 分支与状态规则:
bank.method为account_lookup(规则构建器中为 账户核实),且bank.reason_code可以是ACCOUNT_NOT_FOUND。 - 会话 PDF 报告: 验证方式 行显示为 账户核实。
定价
每次返回结果的核查均计为一次 Bank Verification 费用:匹配、高度相似、不匹配、无法验证的账户以及未找到的账户均会计费。核查前被拒绝的值、不可用的核查以及没有已核验姓名可供比对的会话均不会计费。价格按国家/地区设定:请参阅 Bank Verification 定价。 账户核查本身就是一种独立付费方式,绝非后备方案:bank_fallback_used_action 不会对其触发。在完成一次计费核查后,如果该步骤启用了小额存款和对账单上传且所在国家/地区支持这些功能,则在同一会话中包含它们,不收取额外费用。
在沙盒中测试
在沙盒应用中,核查在模拟服务上运行,不会产生任何计费。沙盒在所有国家/地区按步骤设置的顺序提供这两种方式:在默认顺序下,选择输入您的账户信息即可运行核查,或者将bank_method_order 设置为 ["account_lookup", "open_banking"] 直接开始该核查。
用户输入的账户(IBAN,否则为账号)的最后四位字符决定了返回的响应结果。任何其他结尾均与已核验姓名匹配。
沙盒会将每次返回响应的核查记录为免费用量,以便您了解生产环境会话会对哪些核查计费。
IBAN、CLABE 和 CBU 包含校验码,因此您不能仅仅更改其最后四位字符。请使用以下能够通过所有格式校验的值:
- 德国 (IBAN)
- 英国
- 美国
- 墨西哥 (CLABE)
- 阿根廷 (CBU)
- 印度