> ## Documentation Index
> Fetch the complete documentation index at: https://docs.swipelux.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 견적과 전송

> 정확한 금액을 선택하고, 견적 하나를 안전하게 실행하며, 현재 전송 상태를 따르세요.

견적은 시간 제한이 있고 일회용이에요. 한 번 실행하고, 전송 템플릿으로 재사용하지 마세요. 전송은 그 견적의 실행이며 생성 후에도 계속 변경돼요.

## 리소스 호환성 확인

견적 전에 다음을 확인하세요:

* 케이퍼빌리티가 준비되고, 고객에게 속하며, 의도한 방향과 방법에 일치하는지.
* 스테이블코인 출처가 입력 통화를 지원하는 활성 발급 지갑인지.
* 지갑 간 리소스가 동일한 통화와 네트워크를 사용하는지.
* 법정화폐 페이아웃 계좌 또는 목적지가 준비되고 출력 통화와 방법을 지원하는지.

## 정확한 금액 선택

[`POST /v3/quotes`](/api-reference/money-movement/post-v3-quotes)로 견적을 생성하세요. 한쪽 금액, 두 통화, 응답에서 파생된 리소스 ID를 다음 헤더와 함께 보내세요:

```http theme={null}
X-API-Key: ${SWIPELUX_API_KEY}
Idempotency-Key: quote-create-001
Content-Type: application/json
```

<Tabs>
  <Tab title="정확한 in">
    `in.amount`를 설정하고 `out.amount`는 생략하세요. 응답은 목적지가 받는 금액을 계산해요.

    ```json theme={null}
    {
      "customerId": "${CUSTOMER_ID}",
      "capabilityId": "${STABLECOIN_CAPABILITY_ID}",
      "in": {
        "amount": "1.234567",
        "currency": "USDC",
        "accountId": "${SOURCE_WALLET_ID}"
      },
      "destinationId": "${WALLET_DESTINATION_ID}",
      "out": {
        "currency": "USDC"
      }
    }
    ```
  </Tab>

  <Tab title="정확한 out">
    `out.amount`를 설정하고 `in.amount`는 생략하세요. 응답은 출처에서 나가야 할 금액을 계산해요.

    ```json theme={null}
    {
      "customerId": "${CUSTOMER_ID}",
      "capabilityId": "${CAPABILITY_ID}",
      "in": {
        "currency": "USDC",
        "accountId": "${SOURCE_WALLET_ID}"
      },
      "destinationId": "${RECIPIENT_DESTINATION_ID}",
      "out": {
        "amount": "100.00",
        "currency": "USD"
      }
    }
    ```
  </Tab>
</Tabs>

견적 `data.id`, `data.status`, `data.expiresAt`, 반환된 레그, 환율, 수수료를 저장하세요. 반환된 소수 문자열을 사용하세요. 부동소수점 연산으로 실행 가능 금액을 재계산하지 마세요.

스테이블코인 자금 조달 정확한 out 견적 이후 [`GET /v3/customers/{customerId}/accounts/{accountId}`](/api-reference/accounts/get-v3-customers-by-customer-id-accounts-by-account-id)를 조회하세요. 입력 통화에 대한 현재 출처 `balances[].available`을 반환된 `data.in.amount`와 비교하세요. 자금이 부족하면 출처를 변경하거나 충전한 뒤 새 견적을 생성하세요. 법정화폐 자금 조달 정확한 out 견적은 이 출처 지갑 잔액 게이트를 사용하지 않아요.

## 한 번 실행하고 안전하게 복구

[`GET /v3/quotes/{quoteId}`](/api-reference/money-movement/get-v3-quotes-by-quote-id)로 현재 견적을 조회하세요. 상태와 `expiresAt`이 허용할 때만 실행하세요.

[`POST /v3/transfers`](/api-reference/money-movement/post-v3-transfers)로 전송을 생성하세요:

```http theme={null}
X-API-Key: ${SWIPELUX_API_KEY}
Idempotency-Key: transfer-create-001
Content-Type: application/json
```

```json theme={null}
{
  "quoteId": "${QUOTE_ID}"
}
```

의도한 이 전송에 대해 새 `Idempotency-Key` 하나를 생성하고, 요청을 보내기 전에 유지하세요. 응답이 손실되면 동일한 메서드, 경로, 본문, 키로 재시도하세요. 불확실한 결과를 복구하려고 두 번째 실행 키를 만들지 마세요.

API가 `quote_already_executed`를 반환하면 그 `transferId`를 사용해 기존 전송으로 계속 진행하세요. 멱등 재생은 `Idempotency-Replayed: true`도 반환할 수 있어요.

## 현재 전송 따르기

생성 후 그리고 각 웹훅 이후에 [`GET /v3/transfers/{transferId}`](/api-reference/money-movement/get-v3-transfers-by-transfer-id)를 조회하세요. 최신 `data.state`, `data.stateDetail`, `data.openTaskIds`를 저장하세요.

태스크 ID가 열려 있으면 [`GET /v3/transfers/{transferId}/tasks`](/api-reference/money-movement/get-v3-transfers-by-transfer-id-tasks)를 가져와 각 태스크를 현재 리비전과 요건을 사용해 완료하세요.

인바운드 이동의 경우 [`GET /v3/transfers/{transferId}/instructions`](/api-reference/money-movement/get-v3-transfers-by-transfer-id-instructions)가 전송별 자금 조달 정보를 반환할 수 있어요. 반환된 지침 변형과 정확한 참조만 렌더링하세요.

다음으로, 모든 비동기 전송 업데이트가 동일한 현재 상태 처리 경로에 들어가도록 [웹훅](/ko/integration/webhooks)을 구현하세요.


## Related topics

- [자금 지급](/ko/integration/send-funds.md)
- [자금 수취](/ko/integration/receive-funds.md)
- [일반적인 흐름](/ko/integration/common-flows.md)
- [케이퍼빌리티와 태스크](/ko/integration/onboarding/capabilities-and-requirements.md)
- [은행 계좌 발급](/ko/integration/issue-bank-account.md)
