---
title: 주문 결제 완료 처리
description: POST /v1/invoices/{id}/mark-as-paid 로 입금 매칭 없이 주문을 결제 완료로 바꿔요.
sidebar:
  order: 4
  badge: POST
---

```http
POST /v1/invoices/{id}/mark-as-paid
```

현금으로 받았거나 다른 수단으로 결제된 주문을 결제 완료로 바꿔요. 만료된 주문도 바꿀 수 있어요. 입금이 자동으로 매칭된 주문은 이미 결제 완료라서 호출할 필요가 없어요.

호출하면 이런 일이 함께 일어나요.

- [`invoice.paid`](/api-reference/webhooks/invoice-paid) 웹훅이 `trigger: "API_CALL"`로 가요.
- 주문에 `cashReceipt`가 있고 사업자 정보를 등록했다면 현금영수증을 발급해요.
- [카페24 연동](/cafe24)으로 만들어진 주문이면 카페24 주문도 입금 확인 상태로 바꿔요.

구매자에게 가는 [결제 완료 이메일](/matching-assist#결제-완료-이메일)은 보내지 않아요.

## 경로 파라미터

| 파라미터 | 타입 | 설명 |
| --- | --- | --- |
| `id` | string | 결제 완료로 바꿀 주문 ID예요. `ivc_`로 시작해요. |

## 요청 예시

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

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

```python Python
import os
import requests

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

## 응답

`paid`가 `true`로 바뀐 [주문 객체](/api-reference/invoices/get#주문-객체)가 와요.

```json 200 OK
{
  "code": "OK",
  "data": {
    "id": "ivc_a1b2c3d4e5f6g7h8i9j0k1l2",
    "issuerId": "acc_x9y8z7w6v5u4t3s2r1q0p9o8",
    "bankAccountIds": [],
    "customer": {
      "name": "홍길동",
      "email": null,
      "phoneNumber": null
    },
    "cashReceipt": null,
    "amount": 50000,
    "paid": true,
    "metadata": { "orderId": "ORDER-2026-0001" },
    "issuedAt": "2026-04-28T03:14:15.926Z",
    "expiresAt": null,
    "deletedAt": null
  }
}
```

## 오류

| HTTP | `code` | 발생 조건 |
| --- | --- | --- |
| 401 | `NOT_AUTHORIZED` | API 키가 없거나 올바르지 않아요. |
| 403 | `INSUFFICIENT_PERMISSIONS` | 다른 계정의 주문이거나, [API 키의 접근 가능한 계좌](/api-reference#api-키-계좌-제한) 밖의 주문이에요. |
| 403 | `INVOICE_ALREADY_PAID` | 이미 결제 완료된 주문이에요. |
| 404 | `INVOICE_NOT_FOUND` | 주문이 없거나 삭제됐어요. |
