> ## 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은 사용자가 진행을 멈추고 갇히는 일이 없도록 합니다. 해당 단계가 대기하는 동안 사용자는 언제든지 **Continue without your bank**를 선택할 수 있으며, 해당 국가나 은행에 지원되는 방법이 없으면 이 단계에서 즉시 해당 옵션이 표시됩니다. 그러면 세션은 해당 경우에 대해 설정한 결과(기본값은 검토)를 따릅니다. 실패한 시도로 인해 명세서 업로드를 포함하여 사용자에게 계속 제공되는 모든 방법의 마지막 시도 횟수까지 소진되면, 단계는 대기하지 않고 자체적으로 종료되며 기본값으로 거부인 `bank_attempts_exhausted_action`을 따릅니다. 단, 이전 시도에서 이미 이름 불일치와 같은 결정에 도달한 경우는 제외되며, 이 경우 해당 결정이 유지됩니다.

이 페이지에서는 각 국가에서 제공하는 다른 인증 방법, 사용자가 **Continue without your bank**를 보게 되는 시점, 각 케이스가 결정되는 방식, 결과에서 이를 확인하는 방법을 다룹니다.

## 인증 방법

| 인증 방법 | `method` | 제공 조건 |
| - | - | - |
| 은행 로그인 | `open_banking` | 해당 국가를 지원하는 경로가 있는 경우. |
| 계좌 확인 | `account_lookup` | 해당 국가를 지원하는 경로가 있는 경우. |
| 명세서 업로드 | `statement` | 해당 단계에서 이 기능을 활성화한 경우 모든 국가에서 제공(`bank_statement_enabled`). |
| 소액 입금 | `microdeposits` | 동일 세션에서 유료 은행 로그인 또는 계좌 확인이 수행된 후, 입금을 전송하는 경로가 있는 경우에만 제공(`bank_microdeposits_enabled`). |
| Continue without your bank | `none` | 항상 제공됩니다. 비활성화할 수 없습니다. |

사용자는 해당 국가에 설정한 순서에 따라 은행 로그인 또는 계좌 확인부터 시작합니다([국가별 방법 선택](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md#국가별-방법-선택) 참조). 명세서 업로드 및 소액 입금은 이 두 가지 방법 이후의 대체 수단입니다. **Continue without your bank**가 마지막으로 제공됩니다.

특정 국가에서 사용할 수 없는 방법은 해당 국가의 사용자에게 절대 제공되지 않습니다. 콘솔의 **국가 및 방법**에서는 해당 국가에 대해 **이용할 수 없음**으로 표시됩니다.

### 은행 경로가 지원되지 않는 국가

은행 로그인과 계좌 확인 경로가 모두 지원되지 않는 국가도 단계에 유지됩니다. 해당 국가의 사용자는 단계에서 제공하는 경우 명세서를 업로드하거나 은행 없이 계속 진행합니다.

저장 시 `methods`를 생략하거나 `null`로 설정하면 이러한 국가가 유지됩니다. 해당 국가에서는 지원되는 경로가 없으므로 `methods`에 방법을 지정할 수 없으며, 지정할 경우(예: `Account check is not available in VNM.`) 저장 시 거부됩니다. 활성화된 모든 국가와 마찬가지로 빈 목록 또한 `Choose a method: bank sign-in, account check, or both.`라는 메시지와 함께 거부됩니다. 계약에 자체 가격이 설정되어 있고 명세서 업로드가 포함되어 있지 않은 경우, 사전 은행 시도 없이 명세서 업로드를 제공하는 저장 역시 해당 국가에 대해 거부됩니다.

```json theme={null}
{
  "bank_statement_enabled": true,
  "bank_countries": {
    "GBR": { "enabled": true, "institutions": "all" },
    "VNM": { "enabled": true, "institutions": "all" }
  }
}
```

여기서 베트남은 은행 경로가 지원되지 않는 국가를 나타냅니다. `methods`를 설정하지 않았으므로 저장이 유지되며, 해당 국가의 사용자에게는 명세서 업로드 및 **Continue without your bank**가 표시됩니다.

### 명세서 업로드

명세서 업로드는 사용자의 성명, 거래 은행, 계좌번호가 표시된 최근 3개월 이내의 은행 명세서를 요청합니다. Didit은 이를 판독하고 수정 여부를 확인하며, 은행의 예금주 성명과 대조하는 것과 동일한 방식으로 예금주 성명을 대조합니다.

`bank_statement_enabled`가 활성화되어 있으면 단계에서 다음 두 가지 경우에 이 방법이 제공됩니다:

* **유료 시도 후:** 동일 세션에서 은행 로그인 또는 계좌 확인에 비용이 청구된 후, 명세서 업로드가 추가 비용 없이 대체 수단으로 제공됩니다.
* **사전 은행 시도 없이:** 은행 경로가 지원되지 않는 국가를 포함한 모든 국가에서 제공됩니다. 이 경우 기본적으로 활성화되어 있는 `bank_statement_standalone_enabled`가 필요합니다. 유료 시도 후에만 명세서 업로드를 제공하려면 이 옵션을 비활성화하세요.

명세서 업로드와 소액 입금은 각각 해당 단계의 `bank_max_attempts` 중 1회를 소진하며, 이는 은행 로그인이 사용하는 시도 횟수와 동일합니다. 사용자가 이 횟수를 모두 소진하면 유료 시도 후라도 두 방법 모두 더 이상 제공되지 않습니다. 계좌 확인에는 별도의 `bank_account_check_max_attempts`가 적용되므로, 계좌 확인이 유일한 방법인 경우 계좌 확인 시도 횟수를 모두 소진한 사용자라도 단계에서 제공하는 경우에는 여전히 명세서를 업로드할 수 있습니다. 실패한 시도로 인해 명세서 업로드를 포함하여 사용자에게 제공된 모든 방법의 마지막 시도 횟수까지 소진되면 단계가 자동으로 종료됩니다. 사용자에게 계속 진행할지 묻지 않으며 결과에도 계속 진행 기록이 남지 않습니다. 이전 시도에서 이미 이름 불일치와 같은 결정에 도달하지 않은 한 세션은 `bank_attempts_exhausted_action`을 따르며, 결정에 도달한 경우에는 해당 결정이 유지됩니다. 은행 로그인 실패 후 대체 수단을 적용할 여유를 두려면 `bank_max_attempts`를 `2` 이상으로 설정하세요.

## 사용자가 ‘은행 없이 계속’을 보게 되는 시점

`bank_continue_without_bank`는 단계에서 **은행 없이 계속**이 표시되는 시점을 설정합니다:

| 값 | 단계에서 표시되는 시점 |
| - | - |
| `when_needed`(기본값) | 사용자의 국가 또는 은행에서 이용할 수 있는 방법이 없거나, 현재 해당 은행에 연결할 수 없고 다른 방법으로도 인증할 수 없는 경우, 또는 사용자가 온라인 뱅킹이 없거나 본인의 은행이 목록에 없다고 응답한 경우. |
| `from_start` | 첫 번째 화면에서도 표시됩니다. |

두 값 모두 이 옵션을 끄지 않습니다. 사용자는 항상 계속 진행할 수 있습니다. 콘솔에서는 은행 인증 단계의 **사용자가 확인할 수 없는 경우** 아래에서 **‘은행 없이 계속’ 표시**를 **다른 방법이 없을 때** 또는 **처음부터**로 설정합니다.

```json theme={null}
{
  "bank_continue_without_bank": "when_needed"
}
```

### 사용자가 보게 되는 화면

* **해당 국가에 경로가 없는 경우:** 예를 들어 "현재 베트남의 은행에는 연결할 수 없습니다"라는 문구와 함께 **다른 인증 방법** 아래에 거래내역서 업로드가 표시되고, **은행 없이 계속**이 제공됩니다.
* **여기서 이용할 수 없는 은행인 경우:** "이 은행은 여기에서 이용할 수 없습니다". 사용자는 해당 국가에서 계좌 확인을 제공하는 경우 계좌 세부 정보를 입력하거나, 거래내역서를 업로드하거나, 다른 은행을 선택하거나, 은행 없이 계속할 수 있습니다.
* **온라인 뱅킹을 이용하지 않거나 목록에 없는 은행인 경우:** "다른 방법으로 계좌를 인증하세요"라는 문구와 함께 해당 국가에서 제공하는 방법들과 **은행 없이 계속**이 표시됩니다.
* **현재 은행에 연결할 수 없는 경우:** 사용자가 다시 시도할 수 있습니다. 또한 다른 방법(은행 로그인 또는 계좌 확인)으로 진행할 수 없는 경우(해당 국가에서 지원하지 않거나, 남은 시도 횟수가 없거나, 마지막 시도에서도 은행에 연결할 수 없었던 경우) 화면에 **은행 없이 계속**이 제공됩니다.
* **계속 진행한 후:** "감사합니다. 계속 진행하실 수 있습니다". 사용자에게 실패 화면이 표시되지 않으며, 워크플로의 다음 단계로 넘어갑니다.

## 결과 선택

사용자가 은행 없이 계속 진행하면, Didit은 해당 단계에서 발생한 상황을 바탕으로 그 이유를 파악합니다. 사용자 기기에서 사유를 가져오지 않습니다. `continuation.reason`으로 기록되는 각 사유는 고유한 결과 설정을 따릅니다:

* `no_route`: 해당 국가를 지원하는 은행 로그인 또는 계좌 확인 경로가 없습니다. `bank_unsupported_action`에 의해 결정되며, 기본값은 `REVIEW`이고 사유 코드는 `NOT_COVERED`입니다.
* `institution_unsupported`: 사용자가 선택한 은행을 이 단계에서 이용할 수 없습니다. `bank_unsupported_action`에 의해 결정되며, 기본값은 `REVIEW`이고 사유 코드는 `NOT_COVERED`입니다.
* `attempts_exhausted`: 계속 진행했을 때 모든 시도 횟수가 이미 소진되었고 진행 중인 시도가 없었습니다. `bank_attempts_exhausted_action`에 의해 결정되며, 기본값은 `DECLINE`입니다.
* `person_choice`: 인증 방법이 제공되었으나 사용자가 계속 진행하기를 선택했습니다. 여기에는 현재 연결할 수 없는 은행도 포함됩니다. 은행 자체는 지원 대상이므로 사용자 본인의 선택이 사유가 됩니다. `bank_skipped_action`에 의해 결정되며, 기본값은 `REVIEW`이고 사유 코드는 `SKIPPED`입니다.

`bank_skipped_action`과 `bank_attempts_exhausted_action`은 `REVIEW` 또는 `DECLINE` 값을 취합니다. `bank_unsupported_action`은 단계를 승인하면서 `NOT_COVERED`를 기록하는 `NO_ACTION`도 취할 수 있습니다.

콘솔에서는 해당 단계의 **결과** 탭에 있는 **은행 또는 국가 미지원**, **은행 없이 계속함**, **시도 횟수 소진** 행에 해당합니다.

```json theme={null}
{
  "bank_continue_without_bank": "when_needed",
  "bank_unsupported_action": "REVIEW",
  "bank_skipped_action": "REVIEW",
  "bank_attempts_exhausted_action": "DECLINE"
}
```

> [!NOTE]
>
> 계속 진행하더라도 시도에서 이미 내려진 판정을 대체하지는 않습니다. 예를 들어 은행이나 거래내역서에서 일치하지 않는 명의자가 반환되었는데 사용자에게 시도 횟수가 남아 있었거나, 사용자가 확인하지 않은 유사 일치 항목이 있는 등 시도가 이미 평가된 경우, 해당 단계는 해당 판정과 사유 코드를 유지합니다. 이 경우 위의 목록에 있는 어떤 결과 설정도 적용되지 않으며, `NOT_COVERED`나 `SKIPPED`도 추가되지 않습니다. 결과에는 사용자가 계속 진행했다는 사실이 그대로 기록됩니다. 자세한 내용은 [결과에서 확인](#결과에서-확인하기)을 참조하세요.

## 결과에서 확인하기

### 결정 및 webhook

[세션 결정](https://docs.didit.me/ko/sessions-api/retrieve-session.md#은행-인증) 및 [`status.updated` webhook](https://docs.didit.me/ko/integration/webhooks#v3-복수형-배열-중요)의 `decision` 객체에 포함된 `bank_verifications[]` 내 해당 단계의 항목에는 사용자가 은행 없이 계속 진행했음이 다음과 같이 표시됩니다.

* `continued_without_bank`가 `true`임: 사용자가 **Continue without your bank**를 선택하여 해당 단계를 벗어났습니다.
* 사용자가 계속 진행하기 전에 평가된 시도가 없었던 경우 `method`는 `none`입니다. 명의자가 일치하지 않는 경우처럼 평가된 시도가 있었던 경우, `method`는 해당 시도의 방식으로 유지되며 그 판정 결과도 그대로 유지됩니다.
* `continuation`은 사용자가 어떻게 계속 진행했는지를 나타냅니다.
  * `reason`: `no_route`, `institution_unsupported`, `attempts_exhausted` 또는 `person_choice`.
  * `country`: 사용자가 인증을 진행 중이던 국가(ISO 3166-1 alpha-3)이며, 국가를 선택하기 전에 계속 진행한 경우 `null`입니다.
  * `offered`: 해당 국가에서 제공된 다른 인증 방법 목록으로, 제공된 순서대로 `statement`, 그다음 `microdeposits`가 포함됩니다. 제공된 방법이 없는 경우 비어 있습니다.
  * `institution_id` 및 `institution_name`: `institution_unsupported`의 경우 사용자가 사용할 수 없었던 은행(사용자가 선택한 은행 또는 마지막 시도가 종료된 은행)입니다. Didit은 두 값 모두 사용자의 기기가 아닌 Didit 자체 은행 목록에서 가져오므로, 해당 목록에 없는 은행인 경우 두 값 모두 `null`로 유지됩니다. 다른 모든 사유에서는 두 값 모두 `null`입니다.
  * `continued_at`: 사용자가 계속 진행한 시점입니다.
* 계속 진행으로 인해 해당 단계의 결과가 결정된 경우, [결과 선택](#결과-선택)에 설명된 대로 `reason_codes`에 `NOT_COVERED` 또는 `SKIPPED`가 포함됩니다. 평가된 시도가 있었던 경우 해당 시도의 사유 코드가 유지됩니다.
* `no_route` 및 `institution_unsupported`의 경우 `not_covered`는 `true`입니다.

```json theme={null}
{
  "bank_verifications": [
    {
      "node_id": "feature_bank_verification",
      "status": "In Review",
      "method": "none",
      "continued_without_bank": true,
      "continuation": {
        "reason": "institution_unsupported",
        "country": "ESP",
        "offered": ["statement"],
        "institution_id": "example_bank_es",
        "institution_name": "Example Bank",
        "continued_at": "2026-11-03T08:15:41.512870+00:00"
      },
      "not_covered": true,
      "ownership": null,
      "reason_codes": ["NOT_COVERED"]
    }
  ]
}
```

이 예제에는 이 페이지에서 다루는 필드만 표시되어 있습니다. 모든 필드는 [API 레퍼런스](https://docs.didit.me/ko/sessions-api/retrieve-session.md)의 `BankVerificationResult` 스키마에서 확인할 수 있습니다.

워크플로에서 반환되는 데이터를 제한하도록 설정하더라도 `continued_without_bank` 및 `continuation.reason`은 계속 반환되므로, `NOT_COVERED`를 공유하는 `no_route`와 `institution_unsupported`를 구분할 수 있습니다. 이때 `continuation`의 다른 모든 키(국가, 은행, 제공된 방법, 시점)는 `null`이 됩니다. 사용자가 계속 진행하지 않은 경우 `continuation` 자체는 `null`입니다. 이때 `method`도 반환되지 않으므로 사용자가 계속 진행했는지 확인하려면 `method`가 아닌 `continued_without_bank`를 확인해야 합니다.

### 워크플로 규칙

분기 및 커스텀 상태 규칙은 다음을 읽을 수 있습니다.

* `bank.continued_without_bank`: `true` 또는 `false`.
* `bank.continue_reason`: `no_route`, `institution_unsupported`, `attempts_exhausted` 또는 `person_choice`.
* `bank.method`: 어떠한 시도도 평가되기 전에 사용자가 은행 없이 계속 진행한 경우 `none`입니다. 평가된 시도가 있었던 경우 해당 시도의 방식입니다.

### 세션 보고서

어떠한 시도도 평가되기 전에 사용자가 은행 없이 계속 진행한 경우, 세션 PDF 보고서의 **인증 방법** 행에 **은행 없이 계속함**으로 표시됩니다. 평가된 시도가 있었던 경우 해당 시도의 방식 이름이 표시됩니다.

## 요금

* **Continue without your bank**에는 요금이 전혀 부과되지 않습니다. 계속 진행하기 전에 사용자가 수행한 시도에 대해서는 평소대로 요금이 청구됩니다.
* **이전에 과금된 은행 시도가 없는 내역서 업로드**는 Didit이 내역서를 읽고 평가할 때마다 건당 \$0.20입니다. 독립된 사용량 항목인 **Bank verification - statement upload**(`bank_statement_upload`)로 청구되며, 다른 부가 기능과 마찬가지로 계약 요율 또는 특별 가격이 적용됩니다. 계약에서 자체 가격을 설정하고 있으며 이 항목이 포함되어 있지 않은 경우 해당 단계에서는 이 옵션을 제공하지 않습니다.
* 동일한 세션 내에서 **과금된 은행 로그인 또는 계좌 확인 후 진행되는 내역서 업로드 또는 마이크로 디포짓**은 추가 요금 없이 포함됩니다.

## Continue without your bank 도입 전 저장된 노드

`bank_allow_skip`은 폐지되었습니다. 이 설정으로 저장된 노드는 이제 해당 설정이 의미했던 값으로 실행됩니다.

| `bank_allow_skip` | 노드 실행 방식 |
| - | - |
| `true` | `bank_continue_without_bank: "from_start"` |
| `false` 또는 설정되지 않음 | `bank_continue_without_bank: "when_needed"` |

이전에는 건너뛰기를 허용하지 않는 노드의 경우 가능한 방법이 없을 때 사용자가 더 이상 진행할 수 없었습니다. 이제는 이러한 경우에 **Continue without your bank**가 표시되며, `bank_unsupported_action`, `bank_attempts_exhausted_action` 또는 `bank_skipped_action`이 세션 결과를 결정합니다.

한 릴리스 동안은 `bank_continue_without_bank` 없이 `bank_allow_skip`을 전송하여 저장하더라도 해당 값을 기준으로 모드가 설정됩니다. 저장할 때마다 `bank_allow_skip`이 다시 기록됩니다(`from_start`는 `true`, `when_needed`는 `false`). 새로운 연동에서는 `bank_continue_without_bank`를 사용하십시오.

## 샌드박스에서 테스트

샌드박스 애플리케이션에서는 요금이 청구되지 않으며, 내역서 업로드 및 마이크로 디포짓을 진행하기 전에 은행 시도를 거칠 필요가 없습니다. 첫 화면에서 **Continue without your bank**를 확인하려면 `bank_continue_without_bank`를 `from_start`로 설정하고, 이를 선택하여 `bank_skipped_action`을 테스트하십시오. 샌드박스 애플리케이션의 일반적인 작동 방식은 [샌드박스 테스트](https://docs.didit.me/ko/integration/sandbox-testing.md)를 참조하십시오.

## 관련 문서

* [은행 인증 방법](https://docs.didit.me/ko/core-technology/bank-verification/verification-methods.md): 국가별 은행 로그인 및 계좌 확인.
* [계좌 확인](https://docs.didit.me/ko/core-technology/bank-verification/account-check.md): 계좌 형식, 결과 및 샌드박스 값.
* [은행 인증 구성 키](https://docs.didit.me/ko/management-api/workflows/feature-configs.md#은행-인증): 해당 단계의 모든 키.


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