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

# 바꾸기, 보관, 복원

> 고객, 미터, 단가, 요금제를 바꾸거나 보관하고 복원할 때 언제부터 무엇이 달라지는지 설명합니다.

MeterEngine에는 고객, 미터, 단가, 요금제를 영구 삭제하는 기능이 없습니다. 이 대상에 대한 API의 `DELETE` 요청과 콘솔의 '보관'은 모두 보관이고, 보관한 것도 기록으로 남아 목록에서 `status=archived` 또는 `status=all`로 조회됩니다. 보관과 복원에는 admin 권한이 필요합니다.

보관이 언제부터 효력을 내는지는 대상마다 다릅니다.

| 대상 | 보관 효력 | 복원 효력 | 복원 조건 |
| - | - | - | - |
| 고객 | 즉시 | 즉시 | 없음 |
| 미터 | 이번 달까지 집계하고 다음 달부터 멈춤 | 다음 달부터 집계 | 없음 |
| 단가 버전 | 이번 달까지 적용하고 다음 달부터 멈춤 | 보관 전과 같음 | 보관 효력이 시작되기 전이고 대체 버전이 없을 때 |
| 요금제 버전 | 이번 달까지 적용하고 다음 달부터 멈춤 | 보관 전과 같음 | 보관 효력이 시작되기 전이고 대체 버전이 없을 때 |

"이번 달"과 "다음 달"은 한국 시간(KST) 기준입니다. 자세한 내용은 [시간 규칙](https://docs.meterengine.com/concepts/time-rules.md)을 보세요.

## 보낸 이벤트와 확정한 인보이스

보관과 별개로 아래는 바꿀 수 없습니다.

* 보낸 이벤트는 고치거나 지울 수 없습니다. 집계가 `sum`인 미터는 확정 전에 상계 이벤트로 바로잡을 수 있습니다. 방법은 [사용량 이벤트 보내기](https://docs.meterengine.com/integration/events.md)를 보세요.
* 확정한 인보이스는 되돌릴 수 없습니다. 미터, 단가, 요금제를 바꾸거나 보관해도 이미 확정한 인보이스의 금액과 라인은 그대로입니다. 자세한 내용은 [확정 뒤 바뀌는 것과 안 바뀌는 것](https://docs.meterengine.com/billing/after-finalization.md)을 보세요.

## 고객

고객 보관은 요청한 순간부터 효력이 있습니다.

| 요청 | 방법 |
| - | - |
| 보관 | 콘솔 고객 상세 화면의 '고객 보관', 또는 `DELETE /v1/customers/{id}`. `204`를 돌려주고, 이미 보관한 고객에 다시 보내도 `204`입니다. |
| 복원 | 콘솔 고객 상세 화면의 '고객 복원', 또는 `POST /v1/customers/{id}/restorations`. 복원한 고객을 `200`으로 돌려주고, 보관하지 않은 고객이면 그대로 돌려줍니다. |

보관한 고객에 대해 아래 요청은 `409 customer_archived`로 거절됩니다.

* 그 고객의 새 이벤트. 배치 요청에서는 그 원소만 거절됩니다. 거절된 이벤트는 '수집 거절' 화면에 남습니다. 보관 전에 이미 저장된 `transaction_id`로 다시 보내면 거절하지 않고 중복(`duplicate`가 `true`)으로 답합니다.
* 같은 `external_id`의 고객 등록
* 고객 이름과 청구 이메일 수정
* 그 고객의 고객 단가와 고객 요금제 등록
* 그 고객의 카드 등록 링크 발급. 보관 전에 발급한 링크도 보관한 동안에는 열리지 않습니다.

보관해도 남는 것이 있습니다.

* 보관 전에 받은 이벤트는 그 달 청구 예정액에 그대로 남고 확정할 때 청구됩니다. 보관은 청구를 멈추는 기능이 아닙니다.
* 그 고객의 고객 단가와 고객 요금제는 보관 전에 받은 사용량에 계속 적용됩니다.
* 지난 청구와 결제 기록은 그대로입니다.

> [!WARNING]
>
> 보관한 동안 거절된 이벤트는 저장되지 않으므로 복원해도 살아나지 않습니다. 복원한 뒤 도입사 쪽에서 다시 보내야 합니다. 35일보다 오래된 이벤트는 거절되고, 지난달 사용량은 다음 달 1일 13:00 KST까지 받은 것만 청구됩니다. 고객을 잠시 멈출 때는 이 기한 안에 복원하고 다시 보내세요. 기한의 기준은 [시간 규칙](https://docs.meterengine.com/concepts/time-rules.md)을 보세요.

## 미터

미터를 보관하면 이번 달 사용량은 끝까지 집계하고 다음 달부터 집계하지 않습니다.

| 요청 | 방법 |
| - | - |
| 보관 | 콘솔 '미터' 화면의 '보관', 또는 `DELETE /v1/billable-metrics/{code}`. `204`를 돌려주고 반복해도 `204`입니다. |
| 복원 | 콘솔 '미터' 화면의 '미터 복원', 또는 `POST /v1/billable-metrics/{code}/restorations`. 미터를 `200`으로 돌려주고, 보관하지 않은 미터면 그대로 돌려줍니다. |

* 보관해도 이벤트와 단가는 남습니다. 미터 조회 응답의 `inactive_from`이 집계를 멈추는 달입니다.
* 보관한 미터는 정의 수정과 단가 등록이 `409 resource_archived`로 거절됩니다. 복원한 뒤 합니다.
* 보관한 미터의 `code`로 새 미터를 만들 수 없습니다(`409 billable_metric_already_exists`). 같은 `code`가 필요하면 그 미터를 복원해서 씁니다.
* 보관한 미터의 이벤트를 세는 다른 미터가 없으면, 다음 달부터 그 `type`의 이벤트는 어느 미터에도 집계되지 않고 청구에서 빠집니다. 확인 방법은 [이벤트가 청구에 안 보일 때](https://docs.meterengine.com/troubleshooting/events-not-billed.md)를 보세요.

**복원은 소급하지 않습니다.** 복원하면 다음 달부터 다시 집계합니다. 응답의 `active_from`이 다시 집계를 시작하는 달입니다.

| 보관한 달 | 복원한 달 | 집계되는 달 | 집계되지 않는 달 |
| - | - | - | - |
| 11월 | 11월 | 11월, 12월 이후 모두 | 없음 |
| 11월 | 다음 해 1월 | 11월까지, 다음 해 2월부터 | 12월, 다음 해 1월 |

보관한 달 안에 복원하면 끊기는 달이 없습니다. 다음 달 이후에 복원하면 보관 효력이 시작된 달부터 복원한 달까지의 이벤트는 복원 뒤에도 청구되지 않습니다.

이벤트가 들어온 미터는 계산 기준을 바꿀 수 없으므로, 계산 기준을 바꾸려면 새 미터를 만들고 옛 미터를 보관합니다. 순서와 겹치는 달의 주의점은 [미터 설계](https://docs.meterengine.com/pricing/meters.md)를 보세요.

## 단가

단가는 버전마다 보관합니다. 콘솔에서는 '요금 설계' 화면의 '단가 변경 이력'에서 버전마다 '단가 버전 보관', '단가 버전 복원'을 누릅니다.

| 요청 | 방법 |
| - | - |
| 버전 하나 보관 | `DELETE /v1/billable-metrics/{code}/price-rates/{id}`. `204`입니다. |
| 조합의 공통 단가 보관 | `DELETE /v1/billable-metrics/{code}/price-rates?dimension_values=...`. 아래를 보세요. |
| 버전 복원 | `POST /v1/billable-metrics/{code}/price-rates/{id}/restorations`. 복원한 버전을 `200`으로 돌려줍니다. |

보관한 버전은 응답의 `archived_at`에 보관 시각, `archived_from`에 멈추는 달이 들어갑니다.

### 보관한 뒤 어느 단가가 쓰이나

아래 예시는 이번 달이 11월일 때입니다. 수량은 매달 100입니다.

| 보관한 것 | 11월 | 12월 | 그 뒤 |
| - | - | - | - |
| 가장 늦은 버전(지난 버전 10원, 11월부터 20원 버전을 보관) | 20원 버전, 2,000원 | 단가 없음, 0원 | 단가 없음 |
| 기한 있는 버전(지난 버전 10원, 11월부터 다음 해 1월 전까지 20원 버전을 보관) | 20원 버전, 2,000원 | 단가 없음, 0원 | 다음 해 1월부터 10원 버전, 1,000원 |
| 고객 단가(공통 단가 30원, 고객 단가 3원을 보관) | 고객 단가 | 공통 단가 | 공통 단가 |
| 시작 전 예약(12월부터 30원 버전을 보관) | 지금 버전 | 지금 버전 | 지금 버전 |

> [!WARNING]
>
> 가장 늦은 버전을 보관하면 다음 달부터 그 조합에는 단가가 없습니다. 이전 버전으로 돌아가지 않습니다. 단가가 없는 조합의 사용량은 청구되지 않고 청구 예정액의 `unpriced_usages`에 나옵니다. 단가를 내리거나 바꾸려는 것이면 보관하지 말고 새 버전을 등록하세요.

* 기한(`effective_until`)이 있는 버전을 보관하면 그 버전은 다음 달부터 원래 종료 월 전까지 멈추고, 종료 월부터는 그 전에 걸려 있던 버전이 다시 적용됩니다.
* 고객 단가를 보관하면 다음 달부터 그 고객에게는 같은 조합의 공통 단가가 적용됩니다.
* 아직 시작하지 않은 버전을 보관하면 시작 전에 취소되고 그 전 버전이 계속 적용됩니다.

### 조합의 공통 단가 한 번에 보관하기

`dimension_values`에 조합을 JSON 객체 문자열로 넣으면 그 조합의 공통 단가(`customer_id` 없음) 가운데 이번 달에 걸려 있는 버전(시작 월이 이번 달이거나 그 전이고 종료 월이 지나지 않은 버전)을 모두 보관합니다. 차원이 없는 미터는 `{}`입니다. 키 순서는 상관없습니다.

```bash curl theme={null}
curl -X DELETE -G https://meterengine.com/v1/billable-metrics/llm-input-tokens/price-rates \
  -H "Authorization: Bearer me_test_xxxxxxxx" \
  --data-urlencode 'dimension_values={"model":"lumen-fast"}'
```

* 고객 단가와 아직 시작하지 않은 예약 버전은 보관하지 않습니다. 예약 버전은 예정대로 시작합니다.
* 이번 달에 걸려 있는 공통 단가가 없으면 `404 price_rate_not_found`입니다.

## 요금제

요금제도 버전마다 보관하고 규칙은 단가와 같습니다. 콘솔에서는 '요금 설계' 화면의 '요금제 변경 이력'에서 '요금제 버전 보관', '요금제 버전 복원'을 누릅니다.

| 요청 | 방법 |
| - | - |
| 보관 | `DELETE /v1/price-plans/{id}`. `204`를 돌려주고 반복해도 `204`입니다. |
| 복원 | `POST /v1/price-plans/{id}/restorations`. 복원한 버전을 `200`으로 돌려줍니다. |

* 가장 늦은 버전을 보관하면 다음 달부터 요금제가 없고 이전 버전으로 돌아가지 않습니다. 예를 들어 지난 버전 기본료 100원, 11월부터 기본료 200원 버전을 보관하면 11월은 200원, 12월부터는 기본료가 붙지 않습니다.
* 기한 있는 버전을 보관하면 원래 종료 월부터 이전 버전이 다시 적용됩니다.
* 고객 요금제를 보관해 그 고객에게 적용되는 고객 요금제가 없어지면 다음 달부터 공통 요금제가 적용됩니다.

요금제의 계산 규칙은 [기본료와 최소 사용료](https://docs.meterengine.com/pricing/price-plans.md)를 보세요.

## 복원할 수 있는 경우

단가 버전과 요금제 버전은 아래 조건을 모두 만족할 때만 복원됩니다.

1. 보관 효력이 아직 시작되지 않았습니다. 이번 달 적용 중인 버전은 보관한 그 달 안에만 복원할 수 있습니다. 시작 전 예약 버전은 시작 월 전까지 복원할 수 있습니다.
2. 같은 대상(공통 또는 같은 고객), 같은 시작 월(단가는 같은 조합까지)의 보관하지 않은 버전이 없습니다.

어느 하나라도 어기면 `409 archive_restoration_conflict`입니다. 이때는 복원하지 말고 이번 달 이후로 새 버전을 등록합니다. 콘솔은 이런 버전에 '적용 중단이 시작됐거나 대체 버전이 있습니다. 새 버전을 등록하세요.'를 보여 줍니다.

> [!NOTE]
>
> 이번 달에 시작한 버전을 보관한 뒤 같은 시작 월로 새로 등록하면 `409 archive_restoration_conflict`로 거절됩니다. 보관한 버전이 이번 달에는 아직 적용되기 때문입니다. 값을 바꾸려면 그 버전을 먼저 복원한 뒤 같은 시작 월로 다시 등록해 덮어씁니다.

## 보관 대신 바꾸기

청구 금액을 바꾸려는 것이면 보관보다 새 버전 등록이 맞습니다.

| 하려는 것 | 할 일 |
| - | - |
| 다음 달부터 단가나 요금을 바꾼다 | `effective_from`을 다음 달로 해서 새 버전을 등록합니다. 이번 달은 그대로입니다. |
| 이번 달부터 바꾼다 | `effective_from`을 이번 달로 해서 등록합니다. 이번 달 1일부터의 사용량 전체에 새 값이 적용됩니다. 이번 달에 시작한 버전이면 그 버전을 덮어씁니다. |
| 지난달 금액을 바꾼다 | 할 수 없습니다. 지난달 이전의 단가와 요금제는 넣거나 바꿀 수 없습니다(`409 price_rate_history_immutable`, `409 price_plan_history_immutable`). |
| 고객 이름이나 청구 이메일을 바꾼다 | 고객 정보를 수정합니다. 보관한 고객은 복원한 뒤 수정합니다. |
| 미터 이름을 바꾼다 | 미터를 수정합니다. 이벤트가 들어온 미터도 이름은 바꿀 수 있습니다. 확정한 인보이스의 라인에는 확정할 때의 이름이 남습니다. |

월 버전의 규칙은 [단가 모델과 버전](https://docs.meterengine.com/pricing/price-models.md)을 보세요.

엔드포인트별 요청과 응답은 [API 참조](https://docs.meterengine.com/api-reference/introduction.md)에 있습니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.