---
title: 주문 삭제
description: DELETE /v1/invoices/{id} 로 결제되지 않은 주문을 삭제해요.
sidebar:
  label: 주문 삭제
  order: 5
  badge: DELETE
---

```http
DELETE /v1/invoices/{id}
```

결제되지 않은 주문을 삭제해요. v2에서는 주문을 지우지 않고 취소 상태로 바꿔요. 취소한 주문에는 입금이 매칭되지 않고, 같은 입금자명과 금액으로 새 주문을 만들 수 있어요. v1 API에서는 취소한 주문을 조회할 수 없어요. 대시보드와 [v2 API](/api-reference/invoices/get)에서는 `CANCELED` 상태로 보여요.

삭제하면 v1 웹훅에는 [`invoice.deleted`](/api-reference/v1/webhooks/invoice-deleted), v2 웹훅에는 [`invoice.canceled`](/api-reference/webhooks/invoice-canceled)가 가요. 만료된 주문도 삭제할 수 있어요.

결제 완료된 주문은 삭제할 수 없어요. 일정 시간이 지나면 자동으로 매칭을 막고 싶다면 주문을 만들 때 [`expireAfter`](/api-reference/v1/invoices/issue#expireafter-형식)를 지정하세요.

## 경로 파라미터

| 파라미터 | 타입 | 설명 |
| --- | --- | --- |
| `id` | string | 삭제할 주문 ID예요. `ivc_`로 시작해요. |

## 요청 예시

```bash cURL
curl -X DELETE https://api.paysync.kr/v1/invoices/ivc_a1b2c3d4e5f6g7h8i9j0k1l2 \
  -H "Authorization: Bearer $PAYSYNC_API_KEY"
```

```js Node.js
const res = await fetch(`https://api.paysync.kr/v1/invoices/${invoiceId}`, {
  method: "DELETE",
  headers: { Authorization: `Bearer ${process.env.PAYSYNC_API_KEY}` },
});
const { code } = await res.json();
```

```python Python
import os
import requests

res = requests.delete(
    f"https://api.paysync.kr/v1/invoices/{invoice_id}",
    headers={"Authorization": f"Bearer {os.environ['PAYSYNC_API_KEY']}"},
)
print(res.json())
```

## 응답

```json 200 OK
{
  "code": "DELETED",
  "data": null
}
```

## 오류

| HTTP | `code` | 발생 조건 |
| --- | --- | --- |
| 401 | `NOT_AUTHORIZED` | API 키가 없거나 올바르지 않아요. |
| 403 | `INSUFFICIENT_PERMISSIONS` | [API 키의 계좌 범위](/api-reference/v1#api-키-계좌-제한) 밖의 주문이거나 읽기 전용 키예요. |
| 403 | `INVOICE_ALREADY_PAID` | 결제 완료된 주문이에요. |
| 404 | `INVOICE_NOT_FOUND` | 주문이 없거나 이미 삭제됐어요. |
| 500 | `INTERNAL_SERVER_ERROR` | 삭제 중 서버 오류가 났어요. 잠시 뒤 다시 시도하세요. |
