과금 스냅샷 상세 조회
GET/crm-core/v1/plans/me/billing-snapshots/:snapshotId
특정 월 과금 스냅샷의 상세 내역을 반환한다. 차원별 초과 요금 명세(overageLineItems), 사용량 스냅샷(usageSnapshot), 크레딧 차감 내역(creditDeductions), 공급가액·부가세 분리 결과가 포함된다. 영수증 상세 페이지·세무 회계용 조회에 사용한다.
Path Params
| Name | Type | Required | Description |
|---|---|---|---|
| snapshotId | string | 스냅샷 ID (CRMBS1 prefix) |
Response
| Name | Type | Required | Description |
|---|---|---|---|
| billingSnapshotId | string | 스냅샷 ID | |
| accountId | string | 계정 ID | |
| billingPeriod | string | 'YYYY-MM' | |
| periodStart | date | 기간 시작 | |
| periodEnd | date | 기간 종료 | |
| tier | string | 당시 티어 | |
| planId | string | 당시 planId | |
| overrides | Object | 해당 시점의 한도 오버라이드 | |
| overagePolicy | string | BLOCK / METERED | |
| paidSeatCount | number | 좌석 수 | |
| unitPricePerSeat | number | 1인 단가 (VAT 포함) | |
| seatCharge | number | 좌석 요금 | |
| planCharge | number | 플랜 기본 요금 | |
| overageLineItems | Array | 차원별 초과 명세 | |
| overageLineItems[].dimension | string | 차원 식별자 | |
| overageLineItems[].included | number | 플랜 포함량 | |
| overageLineItems[].used | number | 실제 사용량 | |
| overageLineItems[].overage | number | 초과량 | |
| overageLineItems[].unitPrice | number | 단가 (KRW) | |
| overageLineItems[].unitLabel | string | 단위 라벨 (건, MB, 분, GB) | |
| overageLineItems[].charge | number | 초과 요금 | |
| totalOverageCharge | number | 초과 요금 합계 | |
| creditDeductions | Array | 크레딧 차감 내역 | |
| creditDeductions[].dimension | string | 차원 | |
| creditDeductions[].creditUsed | number | 사용된 크레딧 | |
| creditDeductions[].chargeReduction | number | 요금 감면액 | |
| totalCreditSavings | number | 크레딧 차감 합계 | |
| usageSnapshot | Object | 차원별 사용량 맵 | |
| automationMeteringSnapshot | Object | 자동화 세부 사용량 맵 | |
| recordCount | number | 당시 레코드 수 | |
| subtotal | number | 공급가액 | |
| taxAmount | number | 부가세 | |
| totalCharge | number | 최종 청구 금액 | |
| status | string | PENDING_PAYMENT / COMPLETED / FAILED | |
| linkedBillingLogId | string | 결제 로그 FK | |
| triggeredBy | string | MONTHLY_RESET / RENEWAL / EXTERNAL_API 등 | |
| dateCreated | date | * | 생성 시각 |
Structure
코드 예제
const id = 'CRMBS1260410000000123SNP11122233';
const response = await fetch(
https://api.solapi.com/crm-core/v1/plans/me/billing-snapshots/${id},
{ headers: { 'Authorization': 'Bearer ' + TOKEN } }
);
const snapshot = await response.json();
snapshot.overageLineItems.forEach(item => {
console.log(${item.dimension}: ${item.overage}${item.unitLabel} 초과 → ${item.charge}원);
});
import requests
snapshot_id = 'CRMBS1260410000000123SNP11122233'
response = requests.get(
f'https://api.solapi.com/crm-core/v1/plans/me/billing-snapshots/{snapshot_id}',
headers={'Authorization': f'Bearer {TOKEN}'}
)
snapshot = response.json()
curl -X GET 'https://api.solapi.com/crm-core/v1/plans/me/billing-snapshots/CRMBS1260410000000123SNP11122233' \
-H 'Authorization: Bearer YOUR_TOKEN'
**요금 구성 공식**: `subtotal = seatCharge + totalOverageCharge − totalCreditSavings`, `totalCharge = subtotal + taxAmount`. `unitPricePerSeat` 및 초과 단가는 모두 VAT 포함가로 기록되고, subtotal/taxAmount는 최종 `totalCharge`에서 VAT 역산한 결과다. 영수증 금액 불일치 방지를 위해 이 공식을 준수한다.
스냅샷은 기간 경과 후 불변이다. 이미 COMPLETED로 전환된 스냅샷은 수정되지 않으며, 잘못된 금액이 기록된 경우 관리자가 환불(`admin-refund`)로 대응한다. `FAILED` 스냅샷은 재결제 성공 시 `COMPLETED`로 전환된다.
`automationMeteringSnapshot`은 자동화 도메인 세부 사용량(`nodeExecutions`, `runTimeMs`, `trafficBytes` 등)을 별도 구조로 저장한다. 일반 UI에서는 사용하지 않고, 자동화 과금 분석 관리자 화면에서만 참조한다.