04 - IVMS101-part2
1. IVMS101
- IVMS101은 VASP 간 안전하고 상호 운용 가능한 교환을 위한 표준화된 Travel Rule 데이터 형식입니다.
1-1. 참고 자료
- InterVASP의 공식 IVMS101 가이드는 여기에서 확인하십시오.
- json schema와 예제는 여기를 참고하십시오.
- CodeVASP Github
1-2. 형식 규칙
- 메시지의 필드명은 소문자로 시작하는 camelCase로 작성해야 합니다.
- 단, IVMS101에서 정의된 엔터티인 Originator, Beneficiary, OriginatorVASP, BeneficiaryVASP는 PascalCase로 작성해야 합니다.
- 별도로 명시된 경우를 제외하고 모든 필드 값은 대소문자를 구분하지 않습니다.
- boolean, integer, float을 포함한 모든 필드 값은 UTF-8로 인코딩된 문자열로 표현되어야 합니다.
- 한국어가 명시적으로 허용되지 않는 한, 모든 필드 값에는 영어를 사용해야 합니다.
1-3. IVMS101 버전
IVMS101은 출시 이후 한 번 업데이트되어 두 가지 버전이 존재합니다:
- IVMS101.2020: 초기 버전
- IVMS101.2023: 2024년 업데이트됨 현재 전 세계 Travel Rule 솔루션은 보편적으로 IVMS101.2020을 채택하고 있으며, CodeVASP의 모든 가이드 내용은 이 버전을 기반으로 합니다. VASP 간에 서로 다른 버전의 IVMS101 프로토콜을 사용하면 통신에 문제가 발생할 수 있습니다. 적절한 기능을 보장하기 위해 구현 시 문서에 명시된 지침을 항상 준수하십시오.
2. IVMS101 유형
- IVMS101은 페이로드 구성을 안내하기 위해 객체별로 설명됩니다.
송신자 VASP로서의 IVMS101
송신자 VASP로서 수신자 VASP에게 다음 사항을 전송해야 합니다. CodeVASP로부터 수신자의 entityId를 알아야 하지만, 여전히 해당 VASP 정보를 알지 못하므로 다음 객체만 전송합니다.
{
"ivms101" : {
"Originator": {...},
"Beneficiary": {...},
"OriginatingVASP": {...}
}
}
수신자 VASP로서의 IVMS101
수신자 VASP가 송신자에게 응답할 때는 다음과 같이 IVMS101 형식을 완성해야 합니다.
customerIdentification과 같은 더 많은 수신자 정보를 Beneficiary Object에 포함시킬 수도 있습니다.
{
"ivms101" : {
"Originator": {...},
"Beneficiary": {...},
"OriginatingVASP": {...},
"BeneficiaryVASP": {...}
}
}
2-0. ivms101
| Name | Required | Type | Description |
|---|---|---|---|
| Originator | Required | Originator | 디지털 자산을 전송하는 사용자의 정보를 포함하는 객체입니다. |
| Beneficiary | Required | Beneficiary | 디지털 자산을 수신하는 사용자의 정보를 포함하는 객체입니다. |
| OriginatingVASP | Required | OriginatingVASP | 디지털 자산을 전송하는 VASP의 정보를 포함하는 객체입니다. |
| BeneficiaryVASP | Optional | BeneficiaryVASP | 디지털 자산을 수신하는 VASP의 정보를 포함하는 객체입니다. |
2-1. Originator
- 송신자(디지털 자산을 전송하는 사람)의 신원 정보와 관련된 세부 사항입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| originatorPersons | Required | array<Person> | 송신자의 정보를 보유하도록 설계된 객체입니다. |
| accountNumber | Required | array<String> | 자산을 전송하는 사용자의 지갑 주소입니다. 태그 또는 메모 값이 필요한 경우 ':'를 구분자로 사용하여 추가해야 합니다. |
2-2. Beneficiary
- 수신자(디지털 자산을 수신하는 사람)의 신원 정보와 관련된 세부 사항입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| beneficiaryPersons | Required | array<Person> | 수신자의 정보를 포함하도록 설계된 객체입니다. |
| accountNumber | Required | array<String> | 자산을 수신하는 사용자의 지갑 주소로, 필요한 경우 태그 또는 메모 값을 ':'를 구분자로 사용하여 추가합니다. |
2-3. OriginatingVASP
- 송신자 측의 가상자산사업자(VASP) 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| originatingVASP | Optional | Person | 송신 VASP의 정보를 보유하도록 설계된 객체입니다. |
2-4. BeneficiaryVASP
- 수신자 측의 가상자산사업자(VASP) 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| beneficiaryVASP | Optional | Person | 수신 VASP의 정보를 포함하도록 설계된 객체입니다. |
2-1-1. Address
- 개인이나 법인의 지리적 주소를 나타내는 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| addressType | Required | AddressTypeCode | 주소 유형을 나타내는 객체입니다. |
| townName | Required | String | 도시명 |
| country | Required | CountryCode | 거주 국가 |
| department | Optional | String | 대규모 조직이나 건물의 부서 |
| subDepartment | Optional | String | 대규모 조직이나 건물의 하위 부서 |
| streetName | Optional | String | 거리명 |
| buildingNumber | Optional | String | 건물 번호 |
| buildingName | Optional | String | 건물명 |
| floor | Optional | String | 층수 |
| postBox | Optional | String | 사서함 |
| room | Optional | String | 호실 |
| postcode | Optional | String | 우편번호, 우편 코드 |
| townLocationName | Optional | String | 도시 내 특정 위치의 명칭 |
| districtName | Optional | String | 구역 |
| countrySubDivision | Optional | String | 국가 내 구분 |
| addressLine | Optional | array<String> | 상세 주소 |
2-1-2. AddressTypeCode
- 주소의 분류나 유형을 식별하는 데 사용되는 코드입니다.
| Code | Name | Description |
|---|---|---|
| HOME | 거주지 | 주소가 거주지 주소입니다. |
| BIZZ | 사업장 | 주소가 사업장 주소입니다. |
| GEOG | 지리적 | 주소가 자연인 또는 법인의 식별에 적합한 명시되지 않은 물리적(지리적) 주소입니다. |
2-1-3. CountryCode
- ISO-3166-1 alpha-2에 의해 결정된 두 자리 국가 코드입니다. 예)
KR,JP,US등 - https://www.iso.org/obp/ui/#search
2-1-4. DateAndPlaceOfBirth
- 생년월일 및 출생지에 관한 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| dateOfBirth | Required | Date | 생년월일 |
| placeOfBirth | Required | String | 출생지 |
2-1-5. LegalPerson
- 법인에 관한 정보입니다.
geographicAddress또는nationalIdentification중 하나는 필수입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| name | Required | LegalPersonName | 법인의 공식 명칭 정보를 포함하는 객체입니다. |
| geographicAddress | Optional | array<Address> | 법인의 주소 정보를 포함하는 객체입니다. |
| customerIdentification | Optional | String | VASP가 법인을 고객으로 식별하기 위해 부여하는 고유 번호입니다. |
| nationalIdentification | Optional | NationalIdentification | 법인등록번호, 세금식별번호 등 법인의 공식 식별을 위해 사용되는 번호를 포함하는 객체입니다. |
| countryOfRegistration | Required | CoununtryCode | 등록 국가 |
2-1-6. LegalPersonName
- 법인의 명칭과 관련된 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| nameIdentifier | Required | array<LegalPersonNameID> | 법적 명칭, 상호명 등 하나 이상의 명칭을 포함할 수 있는 객체입니다. |
| localNameIdentifier | Optional | array<LocalLegalPersonNameID> | 현지 언어로 된 법인의 명칭을 포함하는 객체입니다. |
| phoneticNameIdentifier | Optional | array<LocalLegalPersonNameID> | 발음을 기반으로 한 음성 명칭을 포함하는 객체입니다. |
2-1-7. LegalPersonNameID
- 법인의 명칭을 구체적으로 식별하기 위한 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| legalPersonName | Required | String | 법적 문서나 공식 등록에서 사용되는 법인의 명칭입니다. |
| legalPersonNameIdentifierType | Required | LegalPersonNameTypeCode | 법인 명칭의 유형을 나타내는 객체입니다. |
2-1-8. LegalPersonNameTypeCode
- 법인 명칭의 유형을 구분하는 데 사용되는 코드입니다.
| Code | Name | Description |
|---|---|---|
| LEGL | 법적 명칭 | 조직이 등록된 공식 명칭입니다. |
| SHRT | 축약명 | 조직의 축약 명칭을 명시합니다. |
| TRAD | 상호명 | 등록된 법적 명칭이 계약 및 기타 공식적인 상황에서 사용될 수 있음에도 불구하고, 상업적 목적으로 사업체가 사용하는 명칭입니다. |
2-1-9. LocalLegalPersonNameID
- 법인이 위치한 지역이나 국가의 현지 언어로 법인의 명칭을 표현하는 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| legalPersonName | Required | String | 현지 언어로 된 법인의 명칭입니다. |
| legalPersonNameIdentifierType | Required | LegalPersonNameTypeCode | 법인 명칭의 유형을 나타내는 객체입니다. |
2-1-10. LocalNaturalPersonNameID
- 현지 지역이나 언어에 따라 개인(자연인)의 성명을 식별하기 위한 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| primaryIdentifier | Required | String | 성(surname)을 입력하며, 분리할 수 없는 경우 성과 이름을 순서대로 함께 표시합니다. |
| secondaryIdentifier | Optional | String | 이름을 입력하며, 분리할 수 없는 경우 생략합니다. |
| nameIdentifierType | Required | NaturalPersonNameTypeCode | 성명의 유형을 나타내는 객체입니다. 기본값: 'LEGL'(=Legal) |
2-1-11. NationalIdentification
- 개인을 식별하기 위해 사용되는 고유 식별 번호나 코드에 관한 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| nationalIdentifier | Required | String | 개인 또는 법인의 고유 식별 번호입니다. |
| nationalIdentifierType | Required | NationalIdentifierTypeCode | 식별 번호의 유형을 나타내는 객체입니다. |
| countryOfIssue | Optional | CountryCode | 식별 번호가 발급된 국가입니다. ('naturalPerson'과만 함께 사용됩니다) |
| registrationAuthority | Optional | RegistrationAuthority | - 식별 번호를 발급한 기관에 대한 정보를 포함하는 객체입니다. -'nationalIdentifierType'의 값이 'LEIX'가 아닌 경우에만 사용됩니다. |
2-1-12. NationalIdentifierTypeCode
- 개인의 국가 식별 번호의 유형을 구분하는 데 사용되는 코드입니다.
| Code | Name | Description |
|---|---|---|
| ARNU | 외국인등록번호 | 정부 기관이 외국인을 식별하기 위해 부여하는 번호입니다. |
| CCPT | 여권번호 | 여권 발급 기관이 부여하는 번호입니다. |
| RAID | 등록 기관 식별자 | 등록 기관이 관리하는 법인의 식별자입니다. |
| DRLC | 운전면허번호 | 운전면허증에 부여되는 번호입니다. |
| FIIN | 외국인투자식별번호 | 외국인 투자자에게 부여되는 번호입니다(외국인등록번호와는 다름). |
| TXID | 세금식별번호 | 세무 당국이 단체에 부여하는 번호입니다. |
| SOCS | 사회보장번호 | 사회보장청이 부여하는 번호입니다. |
| IDCD | 신분증번호 | 국가 당국이 신분증에 부여하는 번호입니다. |
| LEIX | 법인식별자 | ISO 174421에 따라 부여되는 법인식별자(LEI)입니다 |
| MISC | 기타 | 알려질 수 있지만 달리 분류될 수 없거나 송신자가 범주를 결정할 수 없는 국가 식별자입니다. |
2-1-13. NaturalPerson
- 개인(자연인)을 명확히 식별할 수 있는 신원 정보, 주소, 국가 식별 번호 등의 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| name | Required | NaturalPersonName | 성명 정보를 포함하도록 설계된 객체입니다. |
| dateAndPlaceOfBirth | Optional | DateAndPlaceOfBirth | 생년월일 및 출생지에 대한 정보를 포함하도록 설계된 객체입니다. |
| customerIdentification | Optional | String | VASP가 사용자를 구분하기 위해 부여하는 식별자(UID 또는 IDX)입니다. |
| countryOfResidence | Optional | CountryCode | 거주 국가에 대한 정보입니다. |
2-1-14. NaturalPersonName
- 개인(자연인)의 성명에 관한 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| nameIdentifier | Required | array<NaturalPersonNameID> | 법적 성명을 입력하기 위한 객체입니다. 국내 VASP 간 거래 시에는 한국어로 입력하고, 해외 VASP와 거래 시에는 영어로 입력합니다. |
| localNameIdentifier | Optional | array<NaturalPersonNameID> | 해외 VASP와 거래할 때 현지명을 추가로 제공하기 위한 객체입니다. |
| phoneticNameIdentifier | Optional | array<NaturalPersonNameID> | 발음을 기반으로 한 음성 명칭을 포함하는 객체입니다. |
2-1-15. NaturalPersonNameID
- 개인(자연인)의 성명에 대한 구체적인 식별 정보입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| primaryIdentifier | Required | string | 성(surname)을 입력하며, 분리할 수 없는 경우 성과 이름을 순서대로 함께 나열합니다. |
| nameIdentifierType | Required | NaturalPersonNameTypeCode | 성명의 유형을 나타내는 객체입니다. 기본값: 'LEGL'(=Legal) |
| secondaryIdentifier | Optional | string | 이름을 입력하며, 분리할 수 없는 경우 생략합니다. |
2-1-16. NaturalPersonNameTypeCode
- 개인(자연인)의 성명 유형을 구분하는 데 사용되는 코드입니다.
| Code | Name | Description |
|---|---|---|
| ALIA | 별명 | 자연인이 법적 성명 외에 알려진 다른 명칭입니다. |
| BIRT | 출생 시 성명 | 출생 시 자연인에게 주어진 성명입니다. |
| MAID | 결혼 전 성명 | 결혼 후 성명을 변경한 자연인의 원래 성명입니다. |
| LEGL | 법적 성명 | 법적, 공식적 또는 행정적 목적으로 자연인을 식별하는 성명입니다. |
| MISC | 기타 | 자연인이 알려질 수 있지만 달리 분류될 수 없거나 송신자가 범주를 결정할 수 없는 성명입니다. |
2-1-17. Person
- 거래에 관련된 개인이나 자연인을 구분하는 데 사용되는 정보입니다.
naturalPerson또는legalPerson중 하나는 필수입니다.
| Name | Required | Type | Description |
|---|---|---|---|
| naturalPerson | Optional | NaturalPerson | 개인에 대한 정보를 설정하도록 설계된 객체입니다. |
| legalPerson | Optional | LegalPerson | 법인에 대한 정보를 설정하도록 설계된 객체입니다. |
2-1-18. RegistrationAuthority
- 법인 등록 기관을 나타내는 8자리 코드입니다.
- 유형: 텍스트
- 형식: RA000099
- 전체 코드 목록은 여기에서 확인할 수 있습니다: https://www.gleif.org/en/about-lei/code-lists/gleif-registration-authorities-list (페이지 끝에 Excel 파일이 있습니다.)