> ## 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.

# 기업 확인(KYB) 빠른 시작: 10분 만에 연동하기

> Didit으로 법인 등기부 조회부터 실소유자, 임원, AML, webhook까지 10분 만에 기업 확인을 완료하세요. 국가 및 등급별 건당 $2.00부터 계약 없이 이용할 수 있습니다.

이 가이드는 10분 이내에 완전한 KYB 인증을 완료하는 방법을 안내합니다. 워크플로를 생성하고, 세션을 시작하며, 호스팅 인증 링크를 기업 담당자에게 전달하고, webhook 수신을 기다린 후 최종 결정을 가져오는 과정을 다룹니다.

## 사전 준비 사항

* KYB가 활성화된 Didit 애플리케이션. 필요한 경우 [business.didit.me](https://business.didit.me)에서 생성합니다.
* *Developer Settings → API Keys*에서 발급받은 API 키.
* 인터넷에서 접근 가능한 webhook endpoint(결정 webhook 수신용).

## 단계

**1. 콘솔에서 KYB 워크플로 생성**

*Workflows → Create workflow*로 이동합니다. 워크플로 유형으로 \*\*기업 확인(KYB)\*\*을 선택합니다.

필요한 기능을 활성화합니다:

* **법인 등기부 조회**(필수)
* **기업 AML**(권장)
* **주요 인물**(대부분의 규제 대상 산업에서 필수)
* **문서**(선택 사항 — 필요한 문서 유형 선택)

저장한 후 `workflow_id`를 복사합니다. 다음 단계에서 사용하게 됩니다.

**2. API를 통해 기업 확인(KYB) 세션 생성**

```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workflow_id": "YOUR_KYB_WORKFLOW_ID",
    "vendor_data": "biz-acme-001"
  }'
```

응답에는 `session_id`, `session_number`, 그리고 기업 담당자에게 전달할 호스팅 인증 링크인 `url`이 포함됩니다. 워크플로 유형(KYB)에 따라 세션이 기업 세션으로 자동 지정됩니다.

**3. 기업 담당자에게 링크 전송**

이메일이나 메신저를 통해 회사 관리자에게 `url`을 전달합니다. 관리자가 링크를 열어 등기 데이터를 입력하고, 주요 인물 및 실소유자(UBO)를 추가하며, 문서를 업로드합니다.

브랜딩, 로고, 도메인으로 호스팅 환경을 맞춤 설정할 수 있습니다. 자세한 내용은 [화이트 라벨](https://docs.didit.me/ko/console/white-label.md)을 참고하십시오.

**4. 상태 webhook 수신**

기업이 절차를 완료하고 KYB 처리가 최종 상태에 도달하면, Didit은 webhook endpoint로 `status.updated` 이벤트를 POST 요청으로 전송합니다. 기업 세션 이벤트는 `data` 내에 `session_kind: "business"`를 포함하므로, 이를 필터링하여 이벤트를 KYB 핸들러로 라우팅할 수 있습니다.

이벤트를 신뢰하기 전에 `X-Signature-V2` HMAC 서명을 검증하고(참고: [webhooks](https://docs.didit.me/ko/integration/webhooks.md)), 다운스트림 로직을 트리거합니다. webhook을 등록할 때 반환되는 대상의 `secret_shared_key`를 `.env` 파일에 `DIDIT_WEBHOOK_SECRET`으로 저장하십시오.

payload 예시:

```json theme={null}
{
  "event_id": "7f3c2c1e-6a1d-4c36-9d8e-0d3b5f4e2a10",
  "webhook_type": "status.updated",
  "session_id": "a1b2c3d4-5678-4abc-9def-1234567890ab",
  "business_session_id": "a1b2c3d4-5678-4abc-9def-1234567890ab",
  "session_kind": "business",
  "vendor_data": "biz-acme-001",
  "status": "Approved",
  "created_at": 1776515400,
  "timestamp": 1776515401,
  "decision": { "...": "full KYB decision" }
}
```

**5. 결정 조회(선택 사항)**

> [!NOTE]
>
> `status.updated` webhook payload에는 이미 전체 결정 내용이 포함되어 있습니다. webhook을 구독하지 않았거나 나중에 필요에 따라 결정을 다시 가져오려는 경우에만 이 endpoint를 호출하면 됩니다.

```bash theme={null}
curl https://verification.didit.me/v3/session/bs_01H.../decision/ \
  -H "x-api-key: YOUR_API_KEY"
```

결정에는 등기 데이터, 주요 인물(실소유자, 주주, 이사 및 대표자), AML 일치 항목, 문서, 기능별 결과가 포함됩니다. 전체 payload 레퍼런스는 [응답 스키마](https://docs.didit.me/ko/business-verification/response-schema.md)를 참고하십시오.

**6. 결정에 따른 조치**

`status` 값에 따라 조치를 취합니다:

* `"Approved"` — 기업 온보딩을 진행합니다.
* `"Declined"` — 거부하고 결정의 `warnings[]` 태그를 기록합니다.
* `"In Review"` — 분석가의 결정을 기다립니다. 검토가 완료되면 추가 webhook이 전송됩니다.

## Node.js 예시

```typescript theme={null}
import fetch from 'node-fetch';

const API_KEY = process.env.DIDIT_API_KEY!;
const WORKFLOW_ID = process.env.DIDIT_KYB_WORKFLOW_ID!;
const BASE_URL = 'https://verification.didit.me';

async function startKybVerification(vendorData: string) {
  const res = await fetch(`${BASE_URL}/v3/session/`, {
    method: 'POST',
    headers: {
      'x-api-key': API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ workflow_id: WORKFLOW_ID, vendor_data: vendorData }),
  });
  if (!res.ok) throw new Error(`Session create failed: ${res.status}`);
  return res.json();
}

async function getDecision(sessionId: string) {
  const res = await fetch(`${BASE_URL}/v3/session/${sessionId}/decision/`, {
    headers: { 'x-api-key': API_KEY },
  });
  return res.json();
}

// Kick off the flow
const { session_id, url } = await startKybVerification('biz-acme-001');
console.log('Deliver this URL to your contact:', url);

// ... later, after the webhook confirms completion:
const decision = await getDecision(session_id);
console.log('KYB status:', decision.status);
```

## 자동 처리 항목

* 190+개 관할 구역에 대한 법인 등기부 조회.
* 등기 데이터로부터 실소유자(UBO) 및 임원 정보 추출.
* 기업 차원의 AML 스크리닝(제재, PEP, 부정적 언론 보도).
* 식별된 각 관련자에 대한 개인 차원의 AML 스크리닝.
* 문서 OCR 및 상호 교차 검증.
* `vendor_data`를 키로 하는 [기업 프로필](https://docs.didit.me/ko/business-verification/business-profiles.md) 생성 및 집계.

## 다음 단계

> [card] [연동 가이드](https://docs.didit.me/ko/business-verification/integration-guide.md)
>
> 엔드투엔드 아키텍처, 폴링 vs webhook, 재시도 로직.

> [card] [KYB webhook](https://docs.didit.me/ko/business-verification/webhooks.md)
>
> 모든 KYB 이벤트 및 payload 형식.

> [card] [상태](https://docs.didit.me/ko/business-verification/statuses.md)
>
> 세션, 기능 및 등기 상태 레퍼런스.

> [card] [응답 스키마](https://docs.didit.me/ko/business-verification/response-schema.md)
>
> 전체 KYB 결정 payload.

> [card] [기업 엔터티](https://docs.didit.me/ko/entities/businesses/overview.md)
>
> 세션 간에 프로필이 집계되는 방식.


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