> ## 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의 거래, 케이스, Travel Rule 상태별 의미와 전환 흐름을 정리한 참조 문서입니다. 월 1,000건 포함, 이후 건당 $0.001.

Transaction Monitoring에는 세 가지 별도의 상태 머신이 있습니다: **거래**, 각 **케이스**, 그리고 (해당하는 경우) **Travel Rule 확인**. 이 페이지는 참조 문서입니다.

## 거래 상태

생성 시 설정되며 수명 주기 동안 업데이트됩니다.

| 상태 | 의미 |
| - | - |
| `APPROVED` | 거래가 아래의 검토 임계값 미만인 모든 규칙을 통과했습니다. |
| `IN_REVIEW` | 점수가 검토 임계값을 넘었거나 규칙이 검토를 명시적으로 요구했습니다. 분석가의 확인이 필요합니다. |
| `DECLINED` | 점수가 거부 임계값을 넘었거나 규칙이 거부를 명시적으로 지시했습니다. 거래가 거부되었습니다. |
| `AWAITING_USER` | 거래가 정산되려면 사용자가 조치해야 합니다. Didit은 규칙을 통해서만 이 상태를 설정합니다. 규칙의 `change_status` 작업(예: 옵트인 라이브러리 규칙 `travel-rule-pending-action`, 이 규칙은 `ON_HOLD` 상태의 Travel Rule 이체에서 실행됩니다) 또는 추가 인증을 요구한 규칙 작업(보완 세션이 생성된 경우)을 통해 설정됩니다. 지갑 소유권 증명이 필요한 Travel Rule 이체만으로는 이 상태가 설정되지 않습니다. 이 경우 거래는 규칙이 부여한 상태(보통 `APPROVED`)를 유지하며, 위젯 세션이 보류 중이면 `action_required` 블록에 지갑 소유권 URL이 포함됩니다. 구체적인 조치와 URL은 거래의 `action_required` 블록을 확인하십시오. |

### 전환

```mermaid theme={null}
stateDiagram-v2
    [*] --> APPROVED: Score < review threshold, no blocking rules
    [*] --> IN_REVIEW: Score >= review threshold
    [*] --> DECLINED: Score >= decline threshold, or rule decline action
    [*] --> AWAITING_USER: Rule action change_status → AWAITING_USER
    IN_REVIEW --> APPROVED: Analyst cleared
    IN_REVIEW --> DECLINED: Analyst declined
    AWAITING_USER --> APPROVED: Remediation session approved
    AWAITING_USER --> DECLINED: Remediation session declined
    AWAITING_USER --> IN_REVIEW: Remediation session ended in review
```

참고: Travel Rule을 제외하면 `APPROVED` 또는 `DECLINED`에서 다른 상태로 직접 전환되는 경우는 없습니다.
Travel Rule 만료 시에는 현재 상태와 관계없이 `timeout_outcome`에 따라 `IN_REVIEW`(`HOLD`) 또는 `DECLINED`(`REJECT`)로 설정되며, Travel Rule 전환 이후에 실행되는 규칙은 `APPROVED` 거래를 변경할 수 있습니다.
수정이 필요하면 콘솔에서 상태 패치를 사용하십시오. 이러한 변경은 감사 로그에 기록됩니다.

## 알림

별도의 알림 상태는 없습니다.
열린 알림은 `IN_REVIEW` 또는 `AWAITING_USER` 상태의 거래이므로, 위의 거래 상태를 사용합니다.
[알림](https://docs.didit.me/ko/transaction-monitoring/alerts.md)을 참조하십시오.

## 케이스 상태

자세한 내용은 [케이스 관리](https://docs.didit.me/ko/console/case-management/cases.md)를 참조하십시오.

| 상태 | 의미 |
| - | - |
| `OPEN` | 활발히 조사 중입니다. |
| `AWAITING_USER` | 사용자 측 입력을 기다리는 중입니다. |
| `RESOLVED` | 다음 해결 결과와 함께 종료되었습니다: `FALSE_POSITIVE`, `VALID_THREAT`, `INCONCLUSIVE`, `REQUIREMENTS_NOT_MET` 또는 `REQUIREMENTS_SATISFIED`. |

케이스에는 별도의 **우선순위**(`LOW`, `MEDIUM`, `HIGH`)가 있습니다.

## Travel Rule 확인 상태

FATF Travel Rule에 따른 가상자산 이체는 위의 거래 상태와 별도로 전용 **13개 상태 교환** 절차를 거칩니다.
발신 이체는 `AWAITING_COUNTERPARTY`, `NOT_APPLICABLE`(`threshold_amount` 미만), `UNCONFIRMED_OWNERSHIP`(거래 상대방 지갑이 자체 보관 지갑으로 신고됨), `COMPLETED` 또는 `COUNTERPARTY_MISMATCHED_DATA`(`INTERNAL` 일치가 검증된 지갑에서 발생한 경우이며, 이름 일치 여부에 따라 달라짐), `COUNTERPARTY_VASP_NOT_FOUND`, `COUNTERPARTY_VASP_NOT_REACHABLE` 상태로 시작합니다.
수신 이체는 `ON_HOLD` 또는 `NOT_ENOUGH_COUNTERPARTY_DATA` 상태로도 시작할 수 있습니다. 검증된 지갑과 일치하고 수취인 이름이 일치하거나 없는 sunrise 등록은 `COMPLETED`를 거쳐 `FINISHED`로 바로 진행합니다.
교환은 `FINISHED`, `CANCELLED` 또는 `EXPIRED`에서 종료됩니다.

| 상태 | 의미 |
| - | - |
| `AWAITING_COUNTERPARTY` | 거래 상대방에게 전송되었으며 응답을 기다리는 중입니다. TRUST로 보낸 이체는 TRUST가 Didit이 읽을 수 있는 응답을 보내지 않으므로 만료될 때까지 이 상태에 머무릅니다. 샌드박스 애플리케이션에서는 이체가 [Didit 테스트 VASP](https://docs.didit.me/ko/transaction-monitoring/travel-rule-sandbox.md)로 전송되며, 선택한 시나리오에 따라 Didit 내부에서 응답합니다. |
| `UNCONFIRMED_OWNERSHIP` | 수취인 지갑의 소유권이 아직 증명되지 않았습니다. |
| `ON_HOLD` | Didit은 수신 이체에 대해서만 이 상태를 설정합니다. 지갑이 주소록에 없는 sunrise 등록 또는 수신 `TRP` 조회(이름만 있는 조회의 경우 이름이 검증된 보유자 한 명과도 일치하지 않는 경우 포함), 또는 수동 결정이 필요한 수신 `TRP` 조회(자동 수락이 꺼져 있거나 자동 응답을 전달할 수 없는 경우)입니다. 이 상태만으로는 거래 상태가 바뀌지 않으며, 옵트인 라이브러리 규칙 `travel-rule-pending-action`이 `AWAITING_USER`로 설정합니다. `POST /v3/transactions/{id}/travel-rule/ownership/`로 해결합니다. |
| `COMPLETED` | 송금인과 수취인 데이터가 일치했습니다. 온체인으로 브로드캐스트해도 안전합니다. |
| `FINISHED` | 온체인 해시가 보고되었으며 교환이 종료되었습니다. |
| `CANCELLED` | 최종 상태가 아닌 상태에서 취소되었습니다. |
| `EXPIRED` | 확인 제한 시간이 경과했습니다. 마감 시점에 여전히 `AWAITING_COUNTERPARTY` 상태인 이체만 만료되며, 15분마다 확인합니다. 다른 상태는 시간 초과되지 않습니다. `timeout_outcome`이 거래에 적용되며, 이 변경으로는 `transaction.status.updated` webhook이 전송되지 않습니다. |
| `COUNTERPARTY_MISMATCHED_DATA` | 수취인 이름이 일치하지 않았습니다. |
| `COUNTERPARTY_VASP_NOT_FOUND` | 어떤 경로로도 거래 상대방을 확인할 수 없었습니다. |
| `COUNTERPARTY_VASP_NOT_REACHABLE` | 거래 상대방은 식별되었지만 Didit이 전달할 수 없었습니다. `TRP` endpoint에 연결할 수 없었거나, 다른 LEI 또는 LEI 누락, 또는 다른 이름을 보고했거나, 네트워크 경로(GTR, TRUST, VerifyVASP, Sygna Bridge)가 메시지를 전달하지 못했습니다. |
| `COUNTERPARTY_VASP_GENERAL_DECLINE` | 거래 상대방이 교환을 거부했습니다. |
| `NOT_ENOUGH_COUNTERPARTY_DATA` | 수신 `TRP` 조회가 수취인을 이름이나 지갑 주소로 식별하지 못했습니다. 마감 기한이 없으며 소유권 endpoint로는 해결할 수 없으므로 `action: "cancel"`로 취소하십시오. 발신자에게는 알리지 않습니다. Didit은 발신 이체에 이 상태를 설정하지 않으며, 직접 기록한 경우에만 나타납니다. 이러한 이체는 `action: "resend"`로 재시도할 수 있습니다. |
| `NOT_APPLICABLE` | `threshold_amount` 미만이어서 아무것도 교환되지 않았거나, Didit이 실행하지 않는 이체(Travel Rule 비활성화, 유형이 `travelRule`이 아닌 거래, 또는 레거시 값)에 직접 기록한 값입니다. |

이전 연동에서는 여전히 레거시 값인 `UNKNOWN`, `COMPLIANT`, `PENDING_ACTION`, `PENDING_COUNTERPARTY`, `FAILED`, `EXEMPT`를 보낼 수 있으며, Didit은 이를 위의 상태에 자동으로 매핑합니다.

자세한 내용은 [Travel Rule](https://docs.didit.me/ko/transaction-monitoring/travel-rule.md#수명-주기)을 참조하십시오.

## 제공업체 결과 상태

모든 외부 제공업체 결과(지갑 스크리닝, 법정화폐 모니터링, 제재 스크리닝)는 고유한 상태와 함께 저장됩니다. 거래 응답의 `provider_results[]`에 표시됩니다.

| 상태 | 의미 |
| - | - |
| `PENDING` | 제공업체 조회가 진행 중입니다. |
| `COMPLETED` | 결과가 정상적으로 반환되었습니다. |
| `FAILED` | 제공업체에서 오류가 발생했거나 시간이 초과되었습니다. |
| `SKIPPED` | 제공업체 조회를 의도적으로 건너뛰었습니다(예: 거래 금액이 임계값 미만인 경우). |

## 규칙 실행 결과

모든 `TransactionRuleRun`에는 다음 항목이 있습니다.

* `matched`(boolean): 규칙이 작동했는지 여부입니다.
* `is_test`(boolean): 규칙이 TEST 모드였는지 여부입니다.
* `mode`: 평가 시점의 `ACTIVE`, `DISABLED`, `TEST` 값입니다.
* `score_delta`: 점수에 대한 기여도입니다(규칙이 일치하고 활성 상태인 경우에만 해당).
* `status_target`: 규칙이 요청한 상태입니다(`change_status` 작업인 경우에만 해당).

규칙 구조는 [규칙](https://docs.didit.me/ko/transaction-monitoring/rules.md)을 참조하십시오.

## 결정 사유 코드

상태 전환 시 자주 사용되는 `reason` 값입니다.

| 사유 | 의미 |
| - | - |
| `rule_score_threshold` | 점수가 검토 또는 거절 임계값을 넘었습니다. |
| `rule_change_status` | 규칙의 `change_status` 작업이 상태를 강제로 지정했습니다. |
| `analyst_approved` / `analyst_declined` / `analyst_cleared` | 분석가의 수동 조치입니다. |
| `user_action_approved` / `user_action_declined` / `user_action_in_review` | 연결된 보완 세션의 결과입니다(`AWAITING_USER` 상태에서 요청된 사용자 작업). |
| `provider_update` | 외부 제공업체가 결과를 업데이트했습니다. |
| `aml_confirmed_sanction` | AML 스크리닝에서 제재 일치가 확인되었습니다. |
| `blocklist_applicant` / `blocklist_counterparty` | 당사자에 대해 차단 목록이 적용되었습니다. |

## 다음 단계

> [card] [위험 점수 산정](https://docs.didit.me/ko/transaction-monitoring/risk-scoring.md)
>
> 점수가 상태에 대응하는 방식입니다.

> [card] [알림](https://docs.didit.me/ko/transaction-monitoring/alerts.md)
>
> 알림의 수명 주기입니다.

> [card] [케이스](https://docs.didit.me/ko/transaction-monitoring/cases.md)
>
> 케이스의 수명 주기입니다.


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