과금 스냅샷 목록 조회
작성일 2026.04.23 | 수정일 2026.04.23
GET/crm-core/v1/plans/me/billing-snapshots
월별 과금 스냅샷 목록을 최근순으로 반환한다. 스냅샷은 매월 1일 monthly-usage-reset 스케줄러가 해당 월의 사용량·초과 요금·플랜 요금을 집계해 billing_snapshots 컬렉션에 기록한 결과다. 갱신 결제(RENEWAL)가 이 스냅샷을 참조해 실제 청구를 수행한다. 최근 12개월 이내 스냅샷만 조회 가능.
Query Params
| Name | Type | Required | Description |
|---|---|---|---|
| limit | number | 페이지당 항목 수. 기본 12, 최대 200 | |
| offset | number | 시작 오프셋. 기본 0 |
Response
| Name | Type | Required | Description |
|---|---|---|---|
| items | Array | 스냅샷 배열 (periodStart 내림차순) | |
| items[].billingSnapshotId | string | 스냅샷 ID (CRMBS1 prefix) | |
| items[].billingPeriod | string | 'YYYY-MM' 형식 | |
| items[].periodStart | date | 기간 시작 | |
| items[].periodEnd | date | 기간 종료 | |
| items[].tier | string | 해당 기간의 티어 | |
| items[].paidSeatCount | number | 유료 좌석 수 | |
| items[].unitPricePerSeat | number | 1인 단가 | |
| items[].seatCharge | number | 좌석 요금 (paidSeatCount × unitPricePerSeat) | |
| items[].planCharge | number | 플랜 기본 요금 | |
| items[].totalOverageCharge | number | 초과 요금 합계 (KRW) | |
| items[].totalCreditSavings | number | 크레딧 차감 합계 | |
| items[].subtotal | number | 공급가액 | |
| items[].taxAmount | number | 부가세 | |
| items[].totalCharge | number | 최종 청구 금액 (VAT 포함) | |
| items[].status | string | PENDING_PAYMENT / COMPLETED / FAILED | |
| items[].linkedBillingLogId | string | 연결된 SubscriptionBillingLog ID | |
| total | number | 전체 건수 | |
| limit | number | 적용된 limit | |
| offset | number | * | 적용된 offset |
Structure
코드 예제
const response = await fetch(
'https://api.solapi.com/crm-core/v1/plans/me/billing-snapshots?limit=12',
{ headers: { 'Authorization': 'Bearer ' + TOKEN } }
);
const { items } = await response.json();
import requests
response = requests.get(
'https://api.solapi.com/crm-core/v1/plans/me/billing-snapshots',
params={'limit': 12},
headers={'Authorization': f'Bearer {TOKEN}'}
)
data = response.json()
curl -X GET 'https://api.solapi.com/crm-core/v1/plans/me/billing-snapshots?limit=12' \
-H 'Authorization: Bearer YOUR_TOKEN'
lightbulb
스냅샷과 결제 로그는 `linkedSnapshotId` / `linkedBillingLogId`로 상호 연결된다. 스냅샷은 "이번 달에 이만큼 쓰고 이만큼 청구됩니다"를 기록하고, 결제 로그는 "언제 실제 청구가 일어났는지"를 기록한다. 일반적으로 한 기간의 스냅샷 하나당 하나의 `RENEWAL` 로그가 매칭된다.
lightbulb
`status: 'FAILED'`는 결제 실패한 스냅샷(`errorMessage` 포함)이고, `PENDING_PAYMENT`는 결제가 아직 진행되지 않은 상태다. 일반 사용자 UI에서는 `COMPLETED`만 노출하고 나머지는 필터링할 것을 권장.