> ## 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을 통해 은행 로그인 없이 사용자가 입력한 계좌 정보만으로 본인 소유 계좌인지 확인하세요. IBAN, 정렬 코드, CLABE, CBU, IFSC 등을 지원합니다.

계좌 검사는 워크플로에서 이미 인증된 사용자에게 해당 은행 계좌가 속해 있는지 사용자가 입력한 계좌 정보를 통해 확인합니다. 은행 로그인이나 동의 화면이 필요하지 않습니다. 사용자는 해당 국가의 표기 방식대로 계좌 정보를 입력하고, 은행은 이전 단계에서 인증된 성명과 계좌의 명의를 대조하여 확인합니다.

이는 은행 로그인과 함께 제공되는 두 가지 [은행 계좌 인증 방식](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md) 중 하나이며, 해당 방식의 값은 `account_lookup`입니다. 명세서 업로드 및 소액 입금은 두 방식 다음의 대체 수단으로 유지되며, 사용자는 언제든지 [은행 계좌 없이 계속 진행](https://docs.didit.me/ko/core-technology/bank-verification/fallbacks.md)할 수 있습니다. 지급 전 등 세션 없이 백엔드에서 계좌를 확인하려면 [Account check API](https://docs.didit.me/ko/standalone-apis/bank-account-check.md)를 사용하십시오.

> [!NOTE]
>
> 은행 계좌 인증은 **다른 단계**에서 설정된 신원을 기준으로 계좌 소유자를 확인하므로, 그 자체로는 신원 증명이 되지 않습니다. 해당 단계 앞에 신분증 인증, 데이터베이스 검증, 설문지 또는 `expected_details`를 배치하십시오. 사용자는 검사를 위해 이름을 직접 입력하지 않으며, Didit은 항상 세션에서 이미 인증된 성명을 비교합니다.

## 작동 방식

**1. 사용자가 국가를 선택합니다**

은행 계좌 인증 단계에서 사용자는 해당 단계에서 제공하는 국가를 선택합니다. 계좌 검사가 먼저 제공되는 경우, 해당 국가의 계좌 형식에 맞춘 간단한 양식이 열립니다. 은행 로그인이 먼저 제공되는 경우, 사용자는 **계좌 정보 입력**을 선택하여 양식으로 이동합니다.

**2. 사용자가 계좌 정보를 입력합니다**

예를 들어 IBAN, sort code(은행 식별 코드) 및 계좌번호, 또는 CLABE를 입력합니다. 인증 흐름은 해당 국가에 대해 API가 반환하는 내용을 기반으로 양식을 구성하므로, Didit이 나중에 국가를 추가하더라도 고객사 측에서 변경할 사항이 없습니다.

**3. Didit이 형식을 먼저 검사합니다**

요금이 청구되기 전에 Didit은 길이, 문자, 체크 디지트 및 IBAN의 경우 선택한 국가에 속하는지 여부 등 각 값을 검사합니다. 유효하지 않은 값은 수정할 필드와 함께 거부됩니다. 사용자는 해당 위치에서 바로 수정할 수 있으며 시도 횟수는 차감되지 않습니다.

**4. 은행이 계좌의 명의를 확인합니다**

Didit은 세션에서 인증된 성명을 대상으로 1회의 검사를 실행합니다. 클라이언트가 전송한 다른 정보는 모두 무시됩니다.

**5. 해당 단계에서 결과를 결정합니다**

응답은 소유권 결과가 되며, 은행 로그인과 동일한 방식으로 단계의 작업을 통해 최종 판정으로 변환됩니다.

## 검사가 제공되는 지역

지원 범위는 국가별로 적용됩니다. 현재 프로덕션 환경에서 이 검사는 나이지리아, 가나, 케냐에서 실행됩니다. Didit은 요금이 책정된 경로가 확보되는 대로 국가별로 이 기능을 활성화합니다. 경로가 없는 국가에서는 제공되지 않으며, 현재 목록은 항상 [은행 계좌 인증 요금](https://docs.didit.me/ko/getting-started/bank-verification-pricing.md)에 표시됩니다. 지원 국가는 지속적으로 추가되며 해당 단계는 항상 최신 목록을 읽어오므로, 국가가 추가될 때 연동 방식을 변경할 필요가 없습니다.

지원 대상 국가 내에서는 단계의 방식 설정에 따라 사용자에게 표시될지 여부가 결정됩니다.

* **단계 순서.** `bank_method_order`는 각 국가에서 제공할 방식과 우선순위를 설정합니다. 기본값인 `["open_banking", "account_lookup"]`은 은행 로그인부터 시작하며 계좌 검사를 백업 수단으로 제공합니다.
* **국가별 자체 순서.** `bank_countries`의 특정 국가에 설정된 `methods`는 해당 국가의 단계 순서보다 우선합니다. 예를 들어 계좌 검사만 제공하려면 `["account_lookup"]`, 계좌 검사부터 시작하려면 `["account_lookup", "open_banking"]`으로 설정할 수 있습니다.
* **은행 서비스 장애.** 계좌 검사를 제공하는 국가에서 계좌 검사는 은행 로그인이 저하되거나 중단된 은행의 백업 역할도 수행합니다. 사용자에게 남은 계좌 검사 횟수가 있다면 동의를 요청하기 전에 단계가 계좌 입력 양식으로 이동합니다.
* **검사는 Didit의 자체 경로에서 실행됩니다.** 자체 마켓플레이스 제공업체(`provider_key`)에서 실행되는 단계는 `fallback_to_native`가 활성화된 경우에만 이 검사를 제공합니다.
* **기업 계좌.** 기업 확인(KYB) 세션의 경우, Didit이 기업 계좌를 검사하는 국가에서 검사를 통해 기업 계좌를 인증된 기업과 비교합니다.

저장 시 적용되는 규칙은 [국가별 방식 선택](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md#국가별-방법-선택)을 참조하십시오.

## 사용자가 입력하는 정보

다음은 양식에서 인식하는 계좌 형식입니다. 이는 지원 국가 목록이 아닙니다. 특정 국가에서 검사가 실행되는지 여부는 [검사가 제공되는 지역](#검사가-제공되는-지역)에 따르며, 해당 단계에는 항상 해당 국가에 맞는 정확한 필드가 표시됩니다.

| 계좌 형식 | 국가 | 사용자가 입력하는 정보 |
| - | - | - |
| IBAN | IBAN을 사용하는 국가 | 전체 IBAN(선택한 국가에 속해야 함) |
| sort code(은행 식별 코드) 및 계좌번호 | 영국 | 6자리 sort code 및 8자리 계좌번호 |
| 라우팅 번호(Routing number) 및 계좌번호 | 미국 | 9자리 ABA 라우팅 번호 및 계좌번호 |
| 트랜짓 번호(Transit number) 및 금융기관 번호 | 캐나다 | 8자리 트랜짓 및 금융기관 번호(5자리 트랜짓 번호 뒤에 3자리 금융기관 번호) 및 계좌번호 |
| BSB 및 계좌번호 | 호주 | 6자리 BSB 및 계좌번호 |
| CLABE | 멕시코 | 은행명이 이미 명시된 18자리 CLABE |
| CBU 또는 CVU | 아르헨티나 | 은행명이 이미 명시된 22자리 CBU 또는 CVU |
| IFSC 및 계좌번호 | 인도 | 11자리 IFSC 및 계좌번호 |
| NUBAN 및 은행 코드 | 나이지리아 | 10자리 NUBAN 및 은행 코드 또는 BIC |
| 계좌번호 | 기타 국가 | 계좌번호, 그리고 해당 국가에서 요구하는 경우 은행 코드 또는 BIC |

일부 국가에서는 양식에서 등록번호를 요청하기도 합니다. 기업 계좌의 경우 요청되며, 일부 국가에서는 모든 계좌에 대해 요청됩니다.

값이 검사되기 전에 공백, 하이픈, 마침표는 제거되고 영문자는 대문자로 변환되므로 사용자는 은행에서 발행한 형태 그대로 계좌 정보를 입력할 수 있습니다.

## 활성화

새 단계는 기본적으로 은행 로그인의 백업 수단으로 계좌 확인을 제공합니다. 먼저 시작하거나 계좌 확인만 단독으로 제공하려면 순서에서 `account_lookup`을 가장 앞에 배치하세요.

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

다음 설정에 따라 확인 동작이 결정됩니다.

| 설정 | 계좌 확인에 미치는 영향 |
| - | - |
| `bank_method_order`, `bank_countries.<ISO3>.methods` | 해당 국가에서 확인을 제공하는지 여부와 은행 로그인 전후 중 어느 시점에 제공할지를 결정합니다. |
| `bank_countries` | 확인은 단계에서 제공하는 국가에서만 실행됩니다. |
| `bank_reference_identity` | 계좌의 명의와 대조할 검증된 성명을 가져올 단계입니다. |
| `bank_account_check_max_attempts` | 사용자에게 부여되는 확인 시도 횟수이며 `1`\~`5`회(기본값 `3`)입니다. 은행 로그인의 `bank_max_attempts`와는 별도로 계산됩니다. |
| `bank_account_check_accept_close_match` | On(기본값): 유사 일치 시 유사 일치 확인 절차로 넘어가거나 `bank_partial_match_action`으로 이동합니다. Off: 모든 유사 일치를 불일치로 처리합니다. |
| `bank_name_match_threshold`, `bank_partial_match_floor` | 은행 로그인과 동일한 성명 점수 구간입니다. 임계값(기본값 85) 이상이면 일치, 하한선(기본값 70)과 임계값 사이는 유사 일치(부분 일치 구간)입니다. |
| `bank_use_provider_score` | On(기본값): 확인 자체의 성명 점수가 Didit의 점수보다 높거나 점수는 반환되지만 예금주 성명이 반환되지 않는 경우 해당 점수로 결정하며, 이때 `ownership.method`는 `provider_only`로 표시됩니다. Off: 예금주 성명이 없는 응답은 `not_verifiable`이 됩니다. |
| `bank_suggest_holder_name` | On(기본값): 예금주 성명이 제공되는 유사 일치의 경우, 사용자가 해당 성명을 확인하고 본인 성명인지 승인하거나 다른 계좌를 시도합니다. |

## 결과

### 응답을 반환하는 확인

이들 각각은 1회 청구되며 사용자의 계좌 확인 횟수(`bank_account_check_max_attempts`) 중 1회를 차감합니다. 단계가 완료될 때까지 사용자는 확인 횟수가 남아 있는 동안 다른 계좌로 다시 시도할 수 있습니다. 결과는 존재하지 않는 계좌(`connection.reason_code`에 표시)를 제외하고 `ownership.result`에 표시됩니다.

| 확인 반환 결과 | 결과 | 결정 기준 |
| - | - | - |
| 계좌가 인증된 사용자 본인의 소유임 | `match` | 다른 확인에서 달리 명시하지 않는 한 단계가 승인됩니다. |
| 예금주 성명이 제공되는 유사 일치 | `partial_match` | `bank_suggest_holder_name`이 켜져 있으면 사용자가 성명을 확인하거나 다른 계좌를 시도합니다. 확인을 완료하면 단계는 `bank_partial_match_action`(기본값 `REVIEW`)으로 종료됩니다. |
| 점수는 반환되지만 예금주 성명이 없는 유사 일치 | `partial_match` | `bank_partial_match_action`(기본값 `REVIEW`)입니다. `ownership.method`는 `provider_only`로 표시됩니다. 기본값인 `bank_use_provider_score`가 켜져 있어야 하며, 꺼져 있는 경우 응답은 `not_verifiable`이 됩니다. |
| 계좌가 타인의 소유임 | `no_match` | `bank_no_match_action`(기본값 `DECLINE`)입니다. |
| 성명 대조가 수행되지 않은 응답 | `not_verifiable` | `bank_not_verifiable_action`(기본값 `REVIEW`)입니다. |
| 해당 정보와 일치하는 계좌가 존재하지 않음 | `ACCOUNT_NOT_FOUND` | 확인 횟수가 남아 있는 동안 사용자가 다른 계좌를 시도할 수 있습니다. |

`bank_account_check_accept_close_match`가 꺼져 있으면 두 유사 일치 모두 사유 코드 `OWNER_NAME_MISMATCH`와 함께 `no_match`가 됩니다. 사용자에게 성명 확인을 요청하지 않으며, `bank_no_match_action`에 따라 결정됩니다. 은행 로그인은 어느 쪽이든 유사 일치를 유지합니다.

사용자가 성공적인 연결 없이 모든 계좌 확인 횟수를 소진하고 해당 국가에서 은행 로그인을 함께 제공하는 경우 은행 로그인 시도 횟수까지 모두 소진했더라도, 시도 횟수가 남은 명세서 업로드를 여전히 제공한다면 단계는 계속 열려 있습니다([명세서 업로드](https://docs.didit.me/ko/core-technology/bank-verification/fallbacks.md#명세서-업로드) 참조). 더 이상 방법이 남아 있지 않으면 단계는 `bank_attempts_exhausted_action`(기본값 `DECLINE`)으로 종료됩니다. 단, 이전 시도에서 이미 성명 불일치 등의 판정에 도달한 경우는 제외되며, 이 경우 해당 판정이 유지됩니다.

### 청구되지 않는 결과

이들 결과는 확인 횟수를 소진하지 않습니다. 각각 `connection.reason_code`에 표시됩니다.

| 발생 상황 | 사유 코드 | 후속 조치 |
| - | - | - |
| Didit의 형식 검사 또는 은행에 의해 입력된 계좌 정보가 거절된 경우 | `INVALID_ACCOUNT_INPUT`(시도가 열려 있는 동안) | 사용자에게 수정할 필드가 안내되며 정보를 바로잡습니다. |
| 현재 확인을 사용할 수 없는 경우 | `PROVIDER_UNAVAILABLE` | 사용자가 다시 시도할 수 있습니다. |
| 대조할 검증된 성명이 세션에 없는 경우 | `REFERENCE_IDENTITY_MISSING` | 확인이 전혀 실행되지 않습니다. 단계는 `bank_reference_identity_missing_action`(기본값 `REVIEW`)으로 종료됩니다. |

### 결정 내 정보

세션 결정에서는 해당 단계가 `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`에 해당 항목들이 나열됩니다. [금융 데이터에는 은행 로그인이 필요합니다](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md#금융-데이터에는-은행-로그인-필요)를 참조하세요.

```json theme={null}
{
  "bank_verifications": [
    {
      "status": "Approved",
      "method": "account_lookup",
      "connection": {
        "status": "revoked",
        "institution_id": null,
        "institution_name": null,
        "institution_country": "NGA",
        "oauth": null,
        "attempts": 1,
        "reason_code": "VERIFICATION_COMPLETED"
      },
      "ownership": {
        "result": "match",
        "method": "exact"
      },
      "financial_data": {
        "balances": null,
        "transactions": null,
        "income": null,
        "categorization": null,
        "not_collected": []
      },
      "billing": {
        "route": "native",
        "billed": true,
        "marketplace_fee": null,
        "usage_type": "bank_verification"
      }
    }
  ]
}
```

이 예시에서는 이 페이지에서 다루는 필드만 보여줍니다. 계좌 평가가 완료되면 `method`를 확인하여 계좌 확인과 은행 로그인을 구분할 수 있으며, 이 필드가 바로 이를 위한 단일 필드입니다.

### 워크플로 규칙 및 보고서 내 정보

* **분기 및 상태 규칙:** `bank.method`는 `account_lookup`(규칙 빌더에서는 **계좌 확인**)이며, `bank.reason_code`는 `ACCOUNT_NOT_FOUND`가 될 수 있습니다.
* **세션 PDF 보고서:** **인증 방법** 행에 **계좌 확인**으로 표시됩니다.

## 요금

결과를 반환하는 각 검사마다 1건의 Bank Verification 요금이 청구됩니다. 일치, 근접 일치, 불일치, 확인할 수 없는 계좌, 찾을 수 없는 계좌 모두 청구 대상입니다. 검사 전에 거부된 값, 사용할 수 없는 검사, 비교할 인증된 성명이 없는 세션에는 요금이 전혀 청구되지 않습니다. 가격은 국가별로 책정됩니다. 자세한 내용은 [Bank Verification 요금](https://docs.didit.me/ko/getting-started/bank-verification-pricing.md)을 참고하십시오.

계좌 검사는 폴백이 아닌 독립적인 유료 방식입니다. 이 검사에는 `bank_fallback_used_action`이 트리거되지 않습니다. 청구된 검사 후 동일한 세션 내에서 단계에 설정되어 있고 해당 국가에서 지원하는 경우, 마이크로 디포짓 및 명세서 업로드가 추가 비용 없이 포함됩니다.

## 샌드박스에서 테스트하기

샌드박스 애플리케이션에서는 검사가 시뮬레이션 서비스에서 실행되며 요금이 청구되지 않습니다. 샌드박스는 단계에서 설정한 순서대로 모든 국가에서 두 가지 방식을 모두 제공합니다. 기본 순서에서는 검사를 실행하기 위해 **계좌 정보 입력**을 선택하거나, 해당 방식으로 시작하도록 `bank_method_order`를 `["account_lookup", "open_banking"]`으로 설정하십시오.

사용자가 입력한 계좌의 마지막 4자리(IBAN이면 IBAN, 그렇지 않으면 계좌번호)에 따라 응답이 결정됩니다. 그 외의 끝자리는 인증된 성명과 일치합니다.

| 끝자리 | 응답 |
| - | - |
| `0001` | 명의자를 명시하는 근접 일치: 사용자에게 이름을 확인하도록 요청합니다. `bank_account_check_accept_close_match`가 비활성화된 경우 불일치로 처리됩니다. |
| `0002` | 명의자 이름이 없는 근접 일치: `bank_partial_match_action`에 따라 결정됩니다. `bank_use_provider_score`가 비활성화된 경우 응답은 `not_verifiable`이며, `bank_account_check_accept_close_match`가 비활성화된 경우 불일치로 처리됩니다. |
| `0003` | 불일치: 계좌가 다른 사람의 소유입니다. 검사 1건이 소진됩니다. |
| `0004` | 응답을 받았으나 이름을 비교하지 않음(`not_verifiable`). 검사 1건이 소진됩니다. |
| `0005` | 검사를 사용할 수 없음(`PROVIDER_UNAVAILABLE`). 무료로 재시도할 수 있습니다. |
| `0006` | 해당 정보와 일치하는 계좌 없음(`ACCOUNT_NOT_FOUND`). 검사 1건이 소진됩니다. |
| `0009` | 입력된 내용 거절됨: 사용자에게 필드를 수정하도록 요청합니다. 시도는 진행 중 상태로 유지됩니다. |

샌드박스는 응답이 완료된 각 검사를 비용 없는 사용량으로 기록하므로, 프로덕션 세션에서 어떤 검사에 요금이 청구되는지 확인할 수 있습니다.

IBAN, CLABE 및 CBU에는 체크 디지트가 포함되어 있으므로 단순히 마지막 4자리를 변경할 수 없습니다. 모든 형식 검사를 통과하는 다음 값을 사용하십시오.

> [tab] 독일(IBAN)
>
> | 응답 | IBAN |
> | - | - |
> | 일치 | `DE43123456789012345678` |
> | `0001` | `DE62123456789012340001` |
> | `0002` | `DE35123456789012340002` |
> | `0003` | `DE08123456789012340003` |
> | `0004` | `DE78123456789012340004` |
> | `0005` | `DE51123456789012340005` |
> | `0006` | `DE24123456789012340006` |
> | `0009` | `DE40123456789012340009` |

> [tab] 영국
>
> Sort code `123456`:
>
> | 응답 | 계좌번호 |
> | - | - |
> | 일치 | `12345678` |
> | `0001` | `12340001` |
> | `0002` | `12340002` |
> | `0003` | `12340003` |
> | `0004` | `12340004` |
> | `0005` | `12340005` |
> | `0006` | `12340006` |
> | `0009` | `12340009` |

> [tab] 미국
>
> Routing number `021000021`:
>
> | 응답 | 계좌번호 |
> | - | - |
> | 일치 | `000123456789` |
> | `0001` | `000123450001` |
> | `0002` | `000123450002` |
> | `0003` | `000123450003` |
> | `0004` | `000123450004` |
> | `0005` | `000123450005` |
> | `0006` | `000123450006` |
> | `0009` | `000123450009` |

> [tab] 멕시코(CLABE)
>
> | 응답 | CLABE |
> | - | - |
> | 일치 | `002010077777777771` |
> | `0001` | `002010077777780001` |
> | `0002` | `002010077777750002` |
> | `0003` | `002010077777720003` |
> | `0004` | `002010077777790004` |
> | `0005` | `002010077777760005` |
> | `0006` | `002010077777730006` |
> | `0009` | `002010077777740009` |

> [tab] 아르헨티나(CBU)
>
> | 응답 | CBU |
> | - | - |
> | 일치 | `2850590940090418135201` |
> | `0001` | `2850590940090418160001` |
> | `0002` | `2850590940090418170002` |
> | `0003` | `2850590940090418180003` |
> | `0004` | `2850590940090418190004` |
> | `0005` | `2850590940090418100005` |
> | `0006` | `2850590940090418110006` |
> | `0009` | `2850590940090418140009` |

> [tab] 인도
>
> IFSC `ALLA0211480`:
>
> | 응답 | 계좌번호 |
> | - | - |
> | 일치 | `123456789007` |
> | `0001` | `123456780001` |
> | `0002` | `123456780002` |
> | `0003` | `123456780003` |
> | `0004` | `123456780004` |
> | `0005` | `123456780005` |
> | `0006` | `123456780006` |
> | `0009` | `123456780009` |

[Account check API](https://docs.didit.me/ko/standalone-apis/bank-account-check.md)는 세션 없이도 동일한 끝자리를 통해 샌드박스 키에 응답합니다.

샌드박스 애플리케이션의 일반적인 작동 방식에 대해서는 [샌드박스 테스트](https://docs.didit.me/ko/integration/sandbox-testing.md)를 참고하십시오.


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