Request an authorization for the transfer of virtual assets from the VASP to which the assets were transferred.
A VASP who wants to transfer an asset requests the VASP to whom the virtual asset is to be transferred for an authorization to transfer the asset. The VASP to transfer assets sends the sender's personal information at the request, and the VASP, to whom an asset is transferred, can check the sender's information and reject the transaction or authorize it with the beneficiary's personal information.
The VASP who sent a request updates the status of saved asset transfer list to verified or denied before sending the request or after receiving the response.
❗️Due to the complexity of the IVMS101 standard objects, we recommend using CODE-Cipher. If it is unavoidably impossible to use due to internal security reasons, please read the IVMS101 standard section in the developer guide carefully.
❗️This API works in a synchronous manner, providing an immediate response upon request.
Path Parameter
Name | Required | Type | Description |
---|---|---|---|
BeneficiaryVaspEntityId | Required | string | This shall be entered as the EntityID of the VASP that owns the address to which the asset is transferred.ff |
Request
For the originator's personal information, as of August 7 2024, individual's name and date of birth are to be sent for the individual, and only information on the legal person and representative name is to be sent for the legal person.
Name | Required | Type |
---|---|---|
transferId | Required | string |
currency | Required | string |
amount | Required | string |
historicalCost | Optional | string |
tradePrice | Required | string |
tradeCurrency | Required | string |
isExceedingThreshold | Required | string |
originatingVasp | Optional | string |
payload | Required | string |
address | Optional | string |
tag | Optional | string |
network | Optional | string |
transferId: A unique ID is required to track the status of transaction from an asset transfer authorization request through subsequent processes.
The client who sends a request generates and sends a UUID v4 value.
currency: This is a symbol of the virtual asset you want to transfer. (This is case insensitive.)
amount: This is the total volume of virtual assets you want to transfer
historicalCost: This is an acquisition cost of the virtual asset to be transferred (The requirements of National Tax Service. However, it is not used yet.)
tradePrice: This is the amount of the virtual asset transfer converted to a type of legal tender. If there is no its own price information, convert this using the price API of other VASP. Please refer to 'tradePrice' calculation below.
tradeCurrency: This is a legal tender code, which follows the ISO 4217 standard used when converting to a legal tender. The following currencies can be entered: 'KRW', 'USD', 'EUR', 'JPY', 'CNY', 'GBP', 'CAD', 'AUD', 'HKD', 'SGD'. If you need to use any other currency code, please inform the CODE team! For more details, please refer to the Developer FAQ page.
isExceedingThreshold: Indicates whether the tradePrice exceeds the Travel Rule threshold specified by law.
This field is input as true or false, and if the field value is true, the Beneficiary name in the request is compared with the actual name of the Beneficiary who owns the virtual asset address.
If the field value is true and the Beneficiary name is missing or different in the request, a 'denied' response is sent.
originatingVasp: Due to the difference from other solutions, an originatingVASP object may be included outside payload. In this case, please overwrite originatingVASP of payload -> ivms101.
payload: This is an object to contain IVMS101 message. Please refer to IVMS101 Request.
address: Wallet address of the beneficiary. Since some VASPs integrated with other solutions may required this field, please refer to the Interoperability with Other Protocols page.
tag: Include this if a Tag or Memo exists (e.g., XRP). Since some VASPs integrated with other solutions may required this field, please refer to the Interoperability with Other Protocols page.
network: This is included to distinguish when a single coin exists on multiple networks. Since some VASPs integrated with other solutions may required this field, please refer to the Interoperability with Other Protocols page.
'tradePrice' calculation
In the "tradePrice" field, you should enter the value calculated by multiplying the quantity of the asset by its price in fiat currency. In the "tradeCurrency" field, you should specify the type of fiat currency.
For example, if you are transferring 2 BTC and the price at that moment is $42,708, then the total price is 42,708 * 2 = $85,416. In this case, you value should be as follows:"tradePrice": "85416",
"tradeCurrency": "USD",
{
"transferId": "681f27dd-43e4-4ea3-9bcc-607426d6349f",
"currency": "btc",
"amount": "2",
"historicalCost": "",
"tradePrice": "1000001",
"tradeCurrency": "KRW",
"isExceedingThreshold": "true",
"originatingVasp": {},
"payload": "encrypted ivms101 payload"
}
Response
Name | Required | Type |
---|---|---|
result | Required | string |
reasonType | Optional | string |
reasonMsg | Optional | string |
transferId | Required | string |
beneficiaryVasp | Optional | string |
payload | Required | string |
result: This is a result of the previous authorization of the virtual asset.
-verified
: Authorized
-denied
: Deny to transfer an asset
reasonType: For denied, the type corresponding to the reason.
-NOT_FOUND_ADDRESS
: This is a case where a virtual asset address cannot be found.
-NOT_SUPPORTED_SYMBOL
: This is a currency symbol which cannot be traded.
-NOT_KYC_USER
: This is a case where the owner did not process KYC verification.
-INPUT_NAME_MISMATCHED
: The beneficiary name sent in the request message does not match the actual owner's name.
-SANCTION_LIST
: Virtual asset addresses or owners are subject to the sanction of the beneficiary VASP.
-LACK_OF_INFORMATION
: This is a case where there is no the information necessary to make an asset transfer decision.
-UNKNOWN
: This refers to other reasons.
reasonMsg: message describing the reasonType
transferId: A unique ID is required to track the status of transaction from an asset transfer authorization request through subsequent processes. The client who sends a request generates and sends UUID.
payload(Required): This is an object to contain IVMS101 message. Please refer to IVMS101 Response .