# 자산 이전 결과(txid) 전송

## 전송 받은 자산 이전 결과 (Transaction ID) 를 해당 자산 이전 내역에 반영합니다.

<mark style="color:green;">`POST`</mark> `/v1/beneficiary/transfer/txid`

가상자산을 전송하는 VASP 는 블록체인 상에서 자산 이전을 실행하고 생성되는 트랙잭션 결과를 수취 VASP 에 전송하는데, 이 결과를 수신하기 위한 API 입니다.

**API 핸들러 동작 명세**

1. 요청으로 전달된 데이터 중 `transferId` 에 해당하는 자산 이전 정보를 찾습니다.
2. 찾아낸 자산 이전 정보의 `txid` 값을 업데이트하고, 자산 이전 상태를 `confirmed` 로 변경합니다.
3. 만약, 업데이트 하려는 `transferId` 에 이미 txid 값이 있는 경우, 두 값이 다르면 에러를 반환하고 같다면 정상처리된 것으로 응답합니다.

{% hint style="warning" %}
v1.6 까지는 전달받은 Transaction ID 는 블록체인 트랜잭션이 실패하지 않는 단계에서 전달받았지만, 이제는 실패할 수 있습니다. 이 경우 자산을 전송하는 VASP 는 [자산 이전 종료 API](/code-api-docs-ko/code-api/cancle-transfer.md) 를 재차 호출합니다.
{% endhint %}

**REQUEST Body Schema: application/jsonRequest**

* transferId(Required): '자산 이전 허가 요청' 에서 부여한 UUID 입니다. 해당하는 자산 이전 내역에 자산 이전 결과 (Transfer ID) 를 저장하기 위해 설정합니다.
* txid(Required): 가상 자산 이전을 위하여 블록체인상에 실행된 특정한 트랜잭션을 식별하기 위한 아이디입니다. 블록체인 API 에 의해서 생성되며 유일한 값입니다.
* vout(Optional): utxo타입 코인의 경우 복수의 블록체인 트랜잭션이 하나의 txid 를 공유하면서 그룹을 형성할 수 있습니다. 이때, 고유한 트랜잭션을 식별하기 위해 이 값을 사용합니다. 마찬가지로 블록체인 API 의 실행 결과물입니다.

```
{
  "transferId": "b09c8d00-8da9-11ec-b909-0242ac120002"
  "txid": "311BFF73D9B7969CCF1042186180159C724FAB59013A7A034A93E5FB9D6BAFE6",
  "vout": ""
}
```

**Response**

*200 OK*

*RESPONSE SCHEMA: application/json*

* transferId(Required): 모든 API 에서 자산 이전 트랜잭션을 구별하기 위한 ID 입니다.
* result(Required): 송금 정보 수신 결과입니다.
  * normal: 요청을 정상적으로 처리하여 전달받은 Transaction ID 를 저장 완료한 상태입니다.
  * error: 요청을 처리하는 VASP 에서 요청을 처리하지 못한 상태입니다.
* reasonType(Optional): result 값이 error 인 경우, 상세 이유를 구분하는 값입니다.
  * UNKNOWN: 현재 이 API 에서 발생할 것으로 예상되는 에러 사유가 없습니다.
  * UNKNOWN\_TRANSFER\_ID: Transfer ID 를 찾을 수 없는 경우입니다.
  * TRANSFER\_ALREADY\_FAILED: txid 를 저장하려는 TransferId 에 해당하는 자산 내역이 이미 실패한 경우 txid 를 저장할 수 없습니다.
  * TXID\_ALREADY\_EXISTS: 이미 txid 가 저장된 자산 이전 내역에 대해서 다른 txid 를 저장하도록 요청받은 경우입니다. txid 가 한번 생성되면 실패할 수는 있지만 변경되지는 않습니다.

```
{
  "transferId": "b09c8d00-8da9-11ec-b909-0242ac120002",
  "result": "normal"
  "reasonType": "TXID_ALREADY_EXISTS"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://codevasp.gitbook.io/code-api-docs-ko/vasp-api/txid.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
