메인 콘텐츠로 건너뛰기
POST
curl

자체 보관 지갑

거래 상대방 지갑이 자체 보관 지갑(counterparty.payment_method.method_type: "unhosted_wallet")으로 선언된 경우, 송금은 UNCONFIRMED_OWNERSHIP 상태에서 대기합니다. confirmed: true로 이 엔드포인트를 호출하면, 고객이 해당 지갑을 누가 통제하는지 확인했음이 기록되고 송금이 완료(COMPLETED)됩니다. 출금과 입금 모두에 적용됩니다. 온체인 해시를 이미 알고 있는 입금의 경우, 송금은 FINISHED로 넘어갑니다. 확인되는 지갑은 거래 상대방의 지갑입니다. 출금이라면 출금 대상 지갑이고, 입금이라면 입금의 출처인 송금인의 지갑입니다. Didit은 해당 지갑을 주소록에 소유권 확인됨 상태로 추가하며, 거래 상대방의 이름으로 등록합니다. 따라서 거래 상대방 이름(입금의 경우 송금인 이름)과 대조됩니다. 주소록에 같은 지갑이 다른 보유자 이름으로 이미 등록되어 있으면, 송금은 대신 COUNTERPARTY_MISMATCHED_DATA로 이동합니다. 송금에 거래 상대방 지갑이 전혀 지정되지 않은 경우, 요청 본문에 wallet_address를 전달하십시오. 송금과 요청 모두 지갑 주소를 제공하지 않으면, 요청은 400으로 거부됩니다. confirmed: false이면 송금이 거부됩니다(COUNTERPARTY_VASP_GENERAL_DECLINE).

인증

x-api-key
string
header
필수

Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본 키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며 특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나 만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된 IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를 벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write 권한이 없는 키는 세션 링크와 token을 null로 수신합니다. https://docs.didit.me/console/api-keys 를 참고하십시오.

경로 매개변수

transaction_id
string<uuid>
필수

애플리케이션이 이 이체에 대해 보유한 거래의 Didit 고유 UUID입니다: INTERNAL 레일 이체의 수취인 측 거래, 또는 상대방 지갑이 자체 보관 지갑으로 신고되었을 때 생성한(송금 또는 수취) 거래입니다.

본문

application/json
confirmed
boolean
필수

소유권을 확인하려면 true, 거부하려면 false입니다.

wallet_address
string
기본값:""

인바운드 TRP 전송: 승인 시 Didit이 송금인 VASP에 반환하는 결제 주소입니다. 기본값은 일치하는 주소록 항목의 주소이며, 그다음은 beneficiary_data.wallet_address입니다. 거래 상대방 지갑이 지정되지 않은 신고된 자체 보관 지갑 전송의 경우 소유 구조를 검증한 지갑이어야 하며, 해당 지갑이 없으면 요청이 400으로 거부됩니다. 다른 전송에서는 무시됩니다.

응답

업데이트된 전송 내역입니다. 인바운드 전송의 경우 소유권이 확인될 때까지 거래 상대방의 originator_data/beneficiary_data는 마스킹 처리(data_masked: true)된 상태로 유지되며, 확인 후 data_unmasked에 언제, 왜, 누구에 의해 해제되었는지가 기록됩니다.

소유권 확인 및 완료/취소 endpoint에서 반환되는 전체 전송 객체입니다. 인바운드 전송의 지갑 소유권이 확인되지 않은 동안에는 상대방의 originator_data 및 beneficiary_data가 마스킹되어 반환되며(각 단어의 첫 글자만 유지되고 지갑, 체인 및 VASP 라우팅은 읽을 수 있는 상태로 유지됨), data_masked는 true가 됩니다.

uuid
string<uuid>
status
enum<string>
사용 가능한 옵션:
AWAITING_COUNTERPARTY,
ON_HOLD,
COMPLETED,
FINISHED,
CANCELLED,
EXPIRED,
COUNTERPARTY_MISMATCHED_DATA,
COUNTERPARTY_VASP_NOT_FOUND,
COUNTERPARTY_VASP_NOT_REACHABLE,
UNCONFIRMED_OWNERSHIP,
COUNTERPARTY_VASP_GENERAL_DECLINE,
NOT_ENOUGH_COUNTERPARTY_DATA,
NOT_APPLICABLE
direction
enum<string>
사용 가능한 옵션:
INBOUND,
OUTBOUND
rail
enum<string> | null

이체가 라우팅된 레일이거나 레일이 선택되지 않은 경우(예: 임계값 미만, 자체 보관 거래 상대방 지갑, 입금 후 등록 또는 도달 가능한 거래 상대방 없음) null입니다. INTERNAL은 양측 모두 Didit 애플리케이션임을 의미하며, EMAIL은 거래 상대방에게 수령 링크를 이메일로 전송하여 도달했음을 의미합니다. TEST_VASP는 Didit Test VASP가 샌드박스 이체에 응답했음을 의미합니다. GTR, VERIFYVASP 및 SYGNA의 경우, Didit은 네트워크 응답을 통해 또는 5분마다 폴링하여 거래 상대방의 응답을 읽습니다. TRUST는 전송만 수행하므로 TRUST 이체는 만료될 때까지 AWAITING_COUNTERPARTY 상태로 유지됩니다. 네트워크 레일은 해당 네트워크에 대한 자체 멤버십을 연결한 경우에만 사용됩니다. 거래 생성이 반환된 후에 선택되므로 해당 응답에서는 null입니다.

사용 가능한 옵션:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
예시:

"ivms101.2023"

required
boolean
ownership_confirmed
boolean | null
deadline_at
string<date-time> | null
timeline
object[]
counterparty_vasp
object | null
originator_data
object

송금인 당사자 정보입니다. 인바운드 전송의 경우 소유 구조가 확인될 때까지 거래 상대방의 값이 마스킹됩니다.

beneficiary_data
object

수취인 당사자 정보입니다. 입금 거래의 경우 소유 구조가 확인될 때까지 거래 상대방의 값이 마스킹됩니다.

name_match
object · null · null

이체를 결정한 이름 비교이거나, 실행되기 전까지는 null입니다. 당사자가 마스킹되어 있는 동안, 그리고 INTERNAL 교환의 다른 고객 사본에서는 transfer_name, compared_name, matched_names, mismatched_names가 숨겨집니다. score와 matched는 일치하지 않을 수 있습니다. matched는 엄격도를 따르고, score는 두 전체 성명의 유사도입니다.

data_match
object | null

전송 당사자 데이터와 상대방이 파악하고 있는 지갑 소유자 정보 간의 필드별 비교입니다. 값은 포함하지 않고 필드와 결과만 지정하므로 거래 상대방의 데이터가 마스킹된 상태에서도 가독성이 유지됩니다. 비교가 실행되기 전까지는 null입니다.

mismatched_fields
string[]

data_match.mismatched_fields의 바로가기입니다. 일치하지 않는 항목이 없으면 비어 있습니다.

data_unmasked
object | null

거래 상대방의 데이터가 마스킹 해제된 시점의 감사 기록입니다. 데이터가 여전히 마스킹되어 있는 동안 및 외부 송금의 경우 null입니다.

data_masked
boolean

이 응답에서 거래 상대방의 개인 데이터가 마스킹되어 있는 동안 true입니다.

created_at
string<date-time>
delivery
object | null

이 이체가 상대방에게 보내야 하는 최신 메시지의 현재 상태입니다. 이체에서 메시지를 보낼 필요가 없었던 경우(예: threshold_amount 미만, 신고된 자체 보관 지갑, 선라이즈 등록)에는 null입니다.

discovery
object[]

Didit이 거래 상대방을 찾은 방식이며, 실행된 단계당 하나의 항목이 포함됩니다. 인바운드 전송과 같이 조회가 실행되지 않은 경우에는 비어 있습니다.

reason
string

COUNTERPARTY_VASP_NOT_FOUND 또는 COUNTERPARTY_VASP_NOT_REACHABLE 전송이 지연된 이유이며, 다른 모든 상태의 경우 ""입니다. COUNTERPARTY_VASP_NOT_REACHABLE에서만 전송 실패가 먼저 결정됩니다: email_undeliverable(메일 제공업체가 컴플라이언스 이메일을 거부했고 시도할 주소가 남아있지 않음: 전송 시, 알림 시, 또는 나중에 보고된 영구 반송 시) 또는 delivery_failed(전송 중이던 레일이 완전히 실패함: 네트워크 레일이 메시지를 거부했거나 재시도 횟수를 모두 소진함, TRP 신원 호스트가 응답하지 않음, 또는 거래 상대방의 TRP 호스트가 조회를 수락하지 않음). 그렇지 않으면 discovery 추적이 이를 결정합니다: awaiting_end_user(Didit이 도달할 수 있는 거래 상대방을 지정한 단계가 없음), directory_match_no_route(경로가 없는 디렉터리 VASP를 지정한 단계임), picked_member_without_proven_wallet(최종 사용자가 지갑 제어권을 증명하지 않은 Didit 고객을 선택함), 또는 추적에서 다른 이유를 제공하지 않는 경우 no_directory_match. 재전송하면 전송이 진행되므로 이유가 초기화됩니다. 전송이 지연되는 이유를 참조하십시오.

next_actions
object[]

전송을 진행시키는 작업입니다. COUNTERPARTY_VASP_NOT_FOUND 또는 COUNTERPARTY_VASP_NOT_REACHABLE 이외의 상태에서는 []입니다. email_undeliverable은 update_compliance_email, 그 다음 resend를 제공합니다. delivery_failed는 resend를 제공합니다. 발견 사유는 select_counterparty_vasp, declare_self_hosted, add_vasp_hint 및 resend를 제공합니다.

chain_details
object

둘 이상의 주소가 다른 주소로 지불할 때 전송 체인이 두 지갑의 이름을 지정하는 방식입니다. 두 주소가 곧 지갑인 계정 기반 체인 전송(EVM, Solana, Tron)의 경우 비어 있습니다({}). 매칭, 라우팅 및 주소록은 여기에서 지갑을 먼저 읽습니다.

마지막 수정일 2026년 11월 7일