결제 이력 상세 조회
GET/crm-core/v1/plans/me/billing-logs/:logId
특정 결제 이력의 상세 정보를 반환한다. 인원 수, 단가, 공급가액·부가세·총액, 일할 계산 상세(calculationDetails), 카드 스냅샷, 연결된 BillingSnapshot ID 등 영수증 렌더링에 필요한 모든 필드가 포함된다. 최근 12개월 이내의 COMPLETED 상태 이력만 조회 가능하며, 범위를 벗어나거나 금액 0원 로그를 조회하면 404 NotFound가 반환된다.
Path Params
| Name | Type | Required | Description |
|---|---|---|---|
| logId | string | 결제 이력 ID (CRMSBL prefix) |
Response
| Name | Type | Required | Description |
|---|---|---|---|
| subscriptionBillingLogId | string | 로그 ID | |
| accountId | string | 계정 ID | |
| action | string | 액션 유형 (UPGRADE / RENEWAL / ADMIN_REFUND 등) | |
| fromTier | string | 변경 전 티어 | |
| toTier | string | 변경 후 티어 | |
| actionDate | date | 결제 시각 | |
| billingPeriod | string | 'YYYY-MM' 형식 | |
| billingPeriodStart | date | 과금 대상 기간 시작 | |
| billingPeriodEnd | date | 과금 대상 기간 종료 | |
| daysInMonth | number | 해당 월 총 일수 | |
| daysUsed | number | 사용한 일수 | |
| daysRemaining | number | 남은 일수 | |
| fromMonthlyPrice | number | 기존 티어 월 단가 | |
| toMonthlyPrice | number | 대상 티어 월 단가 | |
| fromDailyRate | number | 기존 일할 단가 | |
| toDailyRate | number | 대상 일할 단가 | |
| chargeAmount | number | 청구 금액 (레거시: 총액 / 신규: 공급가액) | |
| refundAmount | number | 환불 금액 | |
| seatCount | number | 인원 수 | |
| unitPrice | number | 1인 월 단가 | |
| subtotal | number | 공급가액 | |
| taxAmount | number | 부가세 | |
| totalCharge | number | 실제 결제 금액 (VAT 포함) | |
| transactionId | string | PG 거래 식별자 | |
| paymentMethodBrand | string | 카드 브랜드 스냅샷 | |
| paymentMethodLast4 | string | 카드 끝 4자리 스냅샷 | |
| linkedSnapshotId | string | 연결된 BillingSnapshot ID | |
| calculationDetails | Object | 계산 상세 (description, steps) | |
| status | string | COMPLETED | |
| processedBy | string | USER / SYSTEM / ADMIN 등 | |
| description | string | 영수증 요약 | |
| dateCreated | date | * | 로그 생성 시각 |
Structure
코드 예제
const logId = 'CRMSBL260423091530123SBL11122233';
const response = await fetch(
https://api.solapi.com/crm-core/v1/plans/me/billing-logs/${logId},
{ headers: { 'Authorization': 'Bearer ' + TOKEN } }
);
const log = await response.json();
import requests
log_id = 'CRMSBL260423091530123SBL11122233'
response = requests.get(
f'https://api.solapi.com/crm-core/v1/plans/me/billing-logs/{log_id}',
headers={'Authorization': f'Bearer {TOKEN}'}
)
log = response.json()
curl -X GET 'https://api.solapi.com/crm-core/v1/plans/me/billing-logs/CRMSBL260423091530123SBL11122233' \
-H 'Authorization: Bearer YOUR_TOKEN'
`chargeAmount` 필드는 레거시 호환으로 두 가지 의미를 갖는다. 인원 과금 도입 이전(cash 연동 시대)에는 "총 청구액"이었고, 신규에는 "공급가액(= subtotal)"이다. 신규 로그에서 총액은 반드시 `totalCharge`를 사용할 것.
`linkedSnapshotId`가 있는 로그(`RENEWAL` 등)는 `GET /plans/me/billing-snapshots/:snapshotId`로 과금 스냅샷 상세(초과 요금 breakdown, 사용량 스냅샷 등)를 추가 조회할 수 있다. 영수증(`GET /plans/me/receipts/:logId`)은 log + snapshot을 결합해 반환한다.