curl -X POST https://verification.didit.me/v3/bank/account-check/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"country": "GBR",
"account": {"sort_code": "20-45-67", "account_number": "31926819"},
"holder": {"full_name": "Maria Oliveira"},
"vendor_data": "payout_20481"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.bank.account_check(
country="GBR",
account={
"account_number": "31926819",
"sort_code": "20-45-67",
},
holder={
"full_name": "Maria Oliveira",
},
vendor_data="payout_20481",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.bank.accountCheck({
country: "GBR",
account: {
account_number: "31926819",
sort_code: "20-45-67",
},
holder: {
full_name: "Maria Oliveira",
},
vendor_data: "payout_20481",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Bank.AccountCheck(ctx, didit.BankAccountCheckRequest{
Country: "GBR",
Account: didit.BankAccountCheckRequestAccount{
AccountNumber: didit.String("31926819"),
SortCode: didit.String("20-45-67"),
},
Holder: didit.BankAccountCheckHolder{
FullName: didit.String("Maria Oliveira"),
},
VendorData: didit.String("payout_20481"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.BankAccountCheckHolder;
import me.didit.types.BankAccountCheckPersonHolder;
import me.didit.types.BankAccountCheckRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.bank().accountCheck(BankAccountCheckRequest.builder()
.country("GBR")
.account(BankAccountCheckRequest.Account.builder()
.accountNumber("31926819")
.sortCode("20-45-67")
.build())
.holder(BankAccountCheckHolder.ofBankAccountCheckPersonHolder(BankAccountCheckPersonHolder.builder()
.fullName("Maria Oliveira")
.build()))
.vendorData("payout_20481")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->bank->accountCheck([
'country' => 'GBR',
'account' => [
'account_number' => '31926819',
'sort_code' => '20-45-67',
],
'holder' => [
'full_name' => 'Maria Oliveira',
],
'vendor_data' => 'payout_20481',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.bank.account_check(
country: "GBR",
account: {
account_number: "31926819",
sort_code: "20-45-67",
},
holder: {
full_name: "Maria Oliveira",
},
vendor_data: "payout_20481"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Bank.AccountCheckAsync(new BankAccountCheckRequest
{
Country = "GBR",
Account = new()
{
AccountNumber = "31926819",
SortCode = "20-45-67",
},
Holder = new()
{
FullName = "Maria Oliveira",
},
VendorData = "payout_20481",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "c2f4a9e0-7b1d-4c3a-9e55-1d0a6b8f2a47",
"result": "close_match",
"holder_name": "MARIA R OLIVEIRA",
"account": "****6819",
"vendor_data": "payout_20481",
"created_at": "2026-10-21T14:32:08Z"
}口座確認API:送金先の銀行口座名義を確認
DiditのAccount Check APIで、送金前に銀行口座が指定した個人または企業の名義かを確認できます。セッションもサインインも不要です。
curl -X POST https://verification.didit.me/v3/bank/account-check/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"country": "GBR",
"account": {"sort_code": "20-45-67", "account_number": "31926819"},
"holder": {"full_name": "Maria Oliveira"},
"vendor_data": "payout_20481"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.bank.account_check(
country="GBR",
account={
"account_number": "31926819",
"sort_code": "20-45-67",
},
holder={
"full_name": "Maria Oliveira",
},
vendor_data="payout_20481",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.bank.accountCheck({
country: "GBR",
account: {
account_number: "31926819",
sort_code: "20-45-67",
},
holder: {
full_name: "Maria Oliveira",
},
vendor_data: "payout_20481",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Bank.AccountCheck(ctx, didit.BankAccountCheckRequest{
Country: "GBR",
Account: didit.BankAccountCheckRequestAccount{
AccountNumber: didit.String("31926819"),
SortCode: didit.String("20-45-67"),
},
Holder: didit.BankAccountCheckHolder{
FullName: didit.String("Maria Oliveira"),
},
VendorData: didit.String("payout_20481"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.BankAccountCheckHolder;
import me.didit.types.BankAccountCheckPersonHolder;
import me.didit.types.BankAccountCheckRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.bank().accountCheck(BankAccountCheckRequest.builder()
.country("GBR")
.account(BankAccountCheckRequest.Account.builder()
.accountNumber("31926819")
.sortCode("20-45-67")
.build())
.holder(BankAccountCheckHolder.ofBankAccountCheckPersonHolder(BankAccountCheckPersonHolder.builder()
.fullName("Maria Oliveira")
.build()))
.vendorData("payout_20481")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->bank->accountCheck([
'country' => 'GBR',
'account' => [
'account_number' => '31926819',
'sort_code' => '20-45-67',
],
'holder' => [
'full_name' => 'Maria Oliveira',
],
'vendor_data' => 'payout_20481',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.bank.account_check(
country: "GBR",
account: {
account_number: "31926819",
sort_code: "20-45-67",
},
holder: {
full_name: "Maria Oliveira",
},
vendor_data: "payout_20481"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Bank.AccountCheckAsync(new BankAccountCheckRequest
{
Country = "GBR",
Account = new()
{
AccountNumber = "31926819",
SortCode = "20-45-67",
},
Holder = new()
{
FullName = "Maria Oliveira",
},
VendorData = "payout_20481",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "c2f4a9e0-7b1d-4c3a-9e55-1d0a6b8f2a47",
"result": "close_match",
"holder_name": "MARIA R OLIVEIRA",
"account": "****6819",
"vendor_data": "payout_20481",
"created_at": "2026-10-21T14:32:08Z"
}404とcode: bank_verification_not_availableを返し、本番環境のワークフローに銀行口座認証ステップを追加することはできません。
このページでは、エンドポイントが利用可能になった後の動作を説明します。口座情報は各国の表記形式で送信する
| 国 | account |
|---|---|
| IBAN採用国 | {"iban": "..."} |
| イギリス | {"sort_code": "...", "account_number": "..."} |
| アメリカ | {"routing_number": "...", "account_number": "..."} |
| カナダ | {"transit_institution": "...", "account_number": "..."} |
| オーストラリア | {"bsb": "...", "account_number": "..."} |
| インド | {"ifsc": "...", "account_number": "..."} |
| ナイジェリア | {"bank_code": "...", "account_number": "..."} |
| メキシコ | {"clabe": "..."} |
| アルゼンチン | {"cbu_cvu": "..."} |
bicも必要で、法人口座の場合はさらにregistration_idも必要です。スペース、ハイフン、ピリオドは無視されます。その国のチェックに必要なキーが含まれていない場合は、そのキーを示す400が返されます。例えば"field": "account.sort_code", "reason": "required"のようになります。
個人の口座を確認する場合はholder.full_nameを、企業の口座を確認する場合はholder.business_nameを送信します。
結果を確認する
result | 意味 | 一般的な次のステップ |
|---|---|---|
match | 送信した名義で、銀行にその口座が登録されています。 | 送金します。 |
close_match | 銀行には類似した名義でその口座が登録されています。銀行がその名義を返した場合、holder_nameにその名義が入ります。 | holder_nameを比較するか、本人に確認を依頼します。 |
no_match | 銀行には別の名義で登録されているか、該当する口座が存在しません。 | 送金しないでください。 |
cannot_verify | 銀行は名義を照合せずに応答しました。例えば、凍結された口座や解約済みの口座の場合です。 | 独自のポリシーを適用します。例えば、別の口座を求めます。 |
請求と再試行
銀行が応答したチェックは、結果にかかわらず、口座の国の口座チェック料金で1回請求されます。エラーで応答したリクエストが請求されることはありません。対象は、拒否されたリクエストボディ(400)、クレジット不足(402)、まだどのチェックにも対応していない口座(404)、銀行が応答できなかった場合(503)です。
冪等性キーはなく、チェック結果を後から取得するエンドポイントもありません。再試行したリクエストは新しいrequest_idで新しいチェックとして実行され、再度請求されるため、レスポンスを保存してください。Diditが保存するのは請求情報のみで、リクエストID、国、結果、マスクされた口座番号が含まれます。名義や口座番号全体は一切保存しません。
サンドボックスでテストする
サンドボックスのAPIキーでは銀行への照会は行われず、料金も一切発生しません。IBANの末尾4文字、IBANがない場合は口座番号の末尾4文字によって応答が決まります。| 末尾 | 応答 |
|---|---|
0001 | close_match、holder_nameあり |
0002 | close_match、holder_name: null |
0003, 0006 | no_match |
0004 | cannot_verify |
0005 | 503、account_check_unavailable |
0009 | 400、reason: rejected |
| その他 | match |
アクセス
アプリケーションのx-api-key、またはクライアントクレデンシャルのBearerトークンで認証します。スコープ付きAPIキーには、セッションへの書き込み権限が必要です。このエンドポイントは、APIキーごとに毎分300リクエストの書き込みレート制限を他のエンドポイントと共有します。承認
お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権(なし、読み取り、書き込み)、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください: https://docs.didit.me/console/api-keys
ボディ
口座の国。ISO 3166-1 alpha-3コードで指定します(例: GBR)。小文字も使用できます。
3"GBR"
その国の表記方法による口座情報です。iban、またはその国が必要とする銀行コードや支店コード(sort_code、routing_number、transit_institution、bsb、ifsc、bank_codeまたはbic)を伴うaccount_numberを指定します。メキシコはclabe、アルゼンチンはcbu_cvuを受け付け、これらはすでに銀行を特定しています。法人口座では、国が求める場合にregistration_idを追加します。スペース、ハイフン、ドットは無視されます。その国のチェックで使用されないキーは無視されます。必要なキーが指定されていない場合は、そのキー名を示す400が返されます。
Show child attributes
Show child attributes
{
"sort_code": "20-45-67",
"account_number": "31926819"
}
口座の照合に使用される名前です。full_nameとbusiness_nameのうち、どちらか一方のみを送信してください。
- Option 1
- Option 2
Show child attributes
Show child attributes
このチェックに対するお客様独自の参照値で、変更されずに返されます。
"payout_20481"
レスポンス
銀行が応答しました。結果にかかわらず、チェックは課金されます。
このチェックのID。
match: 送信した名義で銀行に口座があります。close_match: 近い名義で口座があります(例: ミドルネームの欠落や誤字)。no_match: 別の名義で口座がある、またはその口座が存在しません。cannot_verify: 銀行が名義を照合せずに回答しました(例: 凍結または解約された口座の場合)。
match, close_match, no_match, cannot_verify close_matchの場合で、かつ銀行が返した場合のみ: 銀行が保持している口座名義です。それ以外の場合はnullです。
末尾4文字以外をマスクした口座。
送信したとおりのお客様独自の参照値です。
チェックが実行された日時(UTC)。