> For the complete documentation index, see [llms.txt](https://shopping-docs.toss.im/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shopping-docs.toss.im/dev/api-1/claim/exchange.md).

# 교환 처리하기

교환은 주문한 **상품의 배송이 시작된 이후, 주문 상품을 다른 상품으로 교체하는 것**을 의미합니다. 배송된 상품을 수거하고 새상품을 재배송합니다. 구매자는 주문 상품이 '배송중', '배송완료' 상태일 때 교환을 요청할 수 있어요.

<figure><img src="/files/CZg8tODPbsz6YGGtmA6K" alt=""><figcaption></figcaption></figure>

* 판매자는 교환 요청을 승인 및 거절할 수 있어요.&#x20;
* 판매자가 교환 요청을 승인하면, 수거가 완료한 다음에 교환 상품을 재배송하거나 교환을 반려할 수 있어요.
* 판매자가 교환 상품을 재배송하면, 송장번호를 입력하고 주문 상태는 '재배송중'으로 바뀌어요.
* 교환을 반려하면 주문은 교환 요청했을 때의 상태(배송중 또는 배송완료)로 돌아갑니다.
* 판매자는 재배송중일 때 교환 송장을 변경할 수 있고, 배송이 완료되면 주문 상태를 '교환완료'로 바꿔야 해요.
* 구매자는 교환된 상품에 대해서 다시 교환을 요청할 수 있고, 교환 요청 완료된 주문에 대해서 재교환 요청 및 반품 요청할 수 있어요.

## 교환 승인하기

판매자가 교환 요청 및 교환을 승인하고 모든 과정을 일반적으로 마치는 방법입니다.

{% stepper %}
{% step %}

### 교환 요청 확인하기

[클레임 요청 목록 조회 API](/dev/api-2/claim.md#get-api-v3-shopping-fep-claims)로 교환 클레임을 확인해주세요.  `type` 쿼리 파라미터를 `EXCHANGE`로 설정해주세요. `status` 쿼리 파라미터는 항상 `REQUESTED`로 설정해주세요. 요청 상태인 교환 클레임을 불러옵니다.

**GET** `/api/v3/shopping-fep/claims?type={CLAIM_TYPE}&status={CLAIM_STATUS}'`

```bash
  curl --request GET \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims?type=EXCHANGE&status=REQUESTED' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}

{% step %}

### 클레임 ID로 교환 요청 승인하기

응답의 `success` 필드 안에 `items.id`는 해당 클레임 요청의 유니크한 ID 값입니다. [교환 요청 승인 API](/dev/api-2/claim.md#post-api-v3-shopping-fep-claims-claimid-exchange-approval)의 Path 파라미터로 사용해주세요. 교환 요청 승인시 주문 상품은 '교환수거중' 상태가 됩니다.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/approval`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/approval' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}

{% step %}

### 교환 수거 완료하기

구매자가 발송한 상품을 잘 받았다면 [교환 수거 완료 API](/dev/api-2/claim.md#post-api-v3-shopping-fep-claims-claimid-exchange-collection)를 호출해주세요. 교환 수거 완료 시 주문 상태는 '교환수거완료'로 바뀌어요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/collection`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/collection' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}

{% step %}

### 교환 상품 재배송하기

수거 완료한 상품에 문제가 없다면 [교환 재배송 API](/dev/api-2/claim.md#post-api-v3-shopping-fep-claims-claimid-exchange-delivery)를 호출해주세요. 교환 승인시 주문 상태는 '재배송중'으로 변경됩니다. 재배송 송장 정보(택배사 및 송장번호)를 요청 파라미터로 입력해주세요.

만약 추후에 송장 정보를 수정해야 된다면 교환 송장번호 변경 API를 사용해주세요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/delivery`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/delivery' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json' \
  --data '{"deliveryCompany":"CJ대한통운", "shippingTrackingNumber":"1022-5765-4265"}'
```

{% endstep %}

{% step %}

### 교환 완료하기

구매자가 교환된 상품을 잘 받았다면 [교환 완료 API](/dev/api-2/claim.md#post-api-v3-shopping-fep-claims-claimid-exchange-completion)를 호출해주세요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/completion`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/completion' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}
{% endstepper %}

## 교환 요청 거절하기

재고부족 등의 이유로 구매자의 교환 요청을 거절할 수도 있어요. [교환 요청 거절 API](/dev/api-2/claim.md#post-api-v3-shopping-fep-claims-claimid-exchange-rejection)를 호출해주세요. Path의 `{claimId}` 부분에 취소할 클레임의 ID를 추가해주세요. 요청 파라미터로 거절 사유를 알려주세요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/rejection`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/api/v3/shopping-fep/claims/{claimId}/exchange/rejection' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
  --data '{"requestRejectReason":"재고 부족"}'
```

## 상품 수거 이후 교환 반려하기

상품을 수거한 다음에 교환을 반려할 수 있어요. [교환 반려 API](/dev/api-2/claim.md#post-api-v3-shopping-fep-claims-claimid-exchange-collection-rejection)를 호출해주세요. 반려된 주문의 상태는 '배송중' 혹은 '배송완료'로 돌아갑니다.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/collection-rejection`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/api/v3/shopping-fep/claims/{claimId}/exchange/rejection' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
  --data '{"rejectReason":"재고 부족"}'
```

> ### API 연동 중 문의사항이나 개선 제안이 있으신가요?

{% hint style="info" %}
토스쇼핑 API 연동에 대한 질문이나, 건의사항이 있다면 [연동/개발 문의](https://discord.gg/xPz6H9NZ3P)에 남겨주세요. 다른 유저의 문의를 참고하거나, 토스쇼핑 담당자와 질의를 주고 받을 수 있어요.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://shopping-docs.toss.im/dev/api-1/claim/exchange.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
