Process the asset transfer data request and return the results.

πŸ“˜

PUT

/v1/verification/tx

In cases where a transfer with TXID lacks Travel Rule data, preventing the beneficiary VASP from processing the deposit, the beneficiary VASP will call 'Asset Transfer Data Request' API to get the Travel Rule data. Implement the API to handle this request.

API action specification

  1. Query for the transaction based on txid and transferId.
  2. Find the information for the withdraw. The data should include following as 'Asset Transfer Authorization': currency, amount, historicalCost, tradePrice, tradeCurrency, isExceedingThreshold .
  3. Decrypt the payload with your pubkey.
  4. Retrieve data from the beneficiary VASP using the asset information, Beneficiary information, and BeneficiaryVASP information.
  5. Just as the 'Asset Transfer Authorization', fill in the Originator and OriginatingVASP field of the payload base on the originating user information.
  6. Store the asset transfer details in the database and assign a status value. It can be designated as either normal or error.
  7. Generate a response message based on the results of verifying the contents of the request message. At this point, create the Originator and OriginatingVASPobjects using the KYC information of the originating user, similar to sending an 'Asset Transfer Authorization' request, copy the Beneficiary, BeneficiaryVASP object directly from the request.

πŸ“˜

When the originator's KYC information is not available

If the originator has not completed KYC and identity information is not available, set the 'reasonType' to 'LACK_OF_INFORMATION' and provide a detailed reason in 'reasonMsg' in the response to the 'asset transfer data request'. (e.g., 'The user did not finish KYC.')


Request

πŸ“˜

For the originator's personal information, as of March 25, 2022, only an individual's name is to be sent for the individual, and only information on the legal person and representative name is to be sent for the legal person.

NameRequiredType
transferIdRequiredstring
txidRequiredstring
voutOptionalstring
payloadRequiredstring

transferId: The UUID sent by the Beneficiary VASP requesting the data. It should be stored for mutual management purposes.


txid: It is a unique value used to identify a specific transaction executed on the blockchain for virtual asset transfer. It is unique and generated by the blockchain.


vout: An identifier for UTXO-type coins, used when multiple blockchain transactions share a single TXID and form a group.

What is vout? https://learnmeabitcoin.com/technical/transaction/input/vout


payload: An object for for containing IVMS101 messages. Please refer to the IVMS101 Standard page.

{
    "txid" : "311BFF73D9B7969CCF1042186180159C724FAB59013A7A034A93E5FB9D6BAFE6",
    "vout" : "",
    "transferId" : "b09c8d00-8da9-11ec-b909-0242ac120002",
    "payload": "encrypted ivms101 payload(Beneficiary.Object,BeneficiaryVASP.Object)"
}

Response

NameRequiredType
resultRequiredstring
reasonTypeOptionalstring
reasonMsgOptionalstring
transferIdRequiredstring
currencyOptionalstring
amountOptionalstring
historicalCostOptionalstring
tradePriceOptionalstring
tradeCurrencyOptionalstring
isExceedingThresholdOptionalString
payloadRequiredstring

result: Result for a request.

-normal: When the request was processed correctly.

-error: When the request was not processed. Please designate 'reasonType'.


reasonType: When the result value is error, a value which identifies the detailed reason.

-NOT_FOUND_TXID: When the cannot be found

-LACK_OF_INFORMATION: When a required field of IVMS101 was missing.

β€»If the originator has not completed KYC and their identity information is missing, use 'LACK_OF_INFORMATION' as the 'reasonType' in response to the 'asset transfer data request' and include a detailed reason in 'reasonMsg' (e.g., 'The user did not finish KYC.').

-UNKNOWN: Others.


reasonMsg: Describe a detailed message explaining the reasonType.


transferId: 'transferId' from 'Asset Transfer Data Request' API.


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.


isExceedingThreshold: Indicates whether the tradePrice exceeds the Travel Rule threshold specified by law.


payload: This is an object to contain IVMS101 message. Please refer to IVMS101 Response.

πŸ“˜

'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",

{
    "result" : "normal",
    "transferId" : "b09c8d00-8da9-11ec-b909-0242ac120002",
    "currency": "BTC",
    "amount": "0.1",
    "historicalCost": "",
    "tradePrice": "10000",
    "tradeCurrency": "KRW",
    "isExceedingThreshold": "true",
    "payload": "encrypted ivms101 payload"
}