API

다음 결제일·예상 요금 조회

작성일 2026.04.23 | 수정일 2026.04.23

GET/crm-core/v1/plans/me/next-billing
다음 자동 갱신일과 그 시점에 결제될 예상 금액의 breakdown을 반환한다. seatCharge(인원 × 단가), estimatedOverage(추정 초과 요금), subtotal(공급가액), taxAmount(VAT), totalCharge(최종 청구가)로 구성된다. 대시보드 요금 위젯에서 "다음 청구 미리보기" 렌더링에 사용한다.

Response

NameTypeRequiredDescription
nextBillingDatedate다음 결제 예정일 (= subscriptionRenewsAt). FREE/INACTIVE면 null
tierstring현재 티어
paidSeatsnumber현재 유료 좌석 수
scheduledSeatsnumber다음 갱신일에 적용될 좌석 수
unitPricenumber1인 월 단가 (KRW, VAT 포함)
breakdownObject결제 금액 내역
breakdown.seatChargenumber좌석 요금 (paidSeats × unitPrice, VAT 포함)
breakdown.estimatedOveragenumber추정 초과 요금 (현재는 0, 스냅샷 시점에 계산)
breakdown.subtotalnumber공급가액 (VAT 제외 소계)
breakdown.taxAmountnumber부가세
breakdown.totalChargenumber최종 청구 금액 (VAT 포함)
notestring*플랜별 안내 문구 (FREE / ENTERPRISE / 유료)

Structure

코드 예제

const response = await fetch('https://api.solapi.com/crm-core/v1/plans/me/next-billing', {
  method: 'GET',
  headers: { 'Authorization': 'Bearer ' + TOKEN }
});
const { nextBillingDate, breakdown } = await response.json();
console.log(${new Date(nextBillingDate).toLocaleDateString()}에 ${breakdown.totalCharge.toLocaleString()}원 결제 예정);
import requests

response = requests.get(
'https://api.solapi.com/crm-core/v1/plans/me/next-billing',
headers={'Authorization': f'Bearer {TOKEN}'}
)
data = response.json()

curl -X GET 'https://api.solapi.com/crm-core/v1/plans/me/next-billing' \
  -H 'Authorization: Bearer YOUR_TOKEN'

lightbulb

`estimatedOverage`는 현재 구현에서 항상 `0`을 반환한다. 정확한 초과 요금은 매월 1일 `monthly-usage-reset` 스케줄러가 실행될 때 `billing-snapshots`에 기록된다. 현재 누적 초과 요금을 실시간으로 확인하려면 `GET /plans/me/overage` 또는 `GET /plans/me`의 `currentMonthOverageKRW` 필드를 참조하면 된다.

lightbulb

- **FREE**: `nextBillingDate: null`, `note: "FREE 플랜은 결제가 발생하지 않습니다."` - **ENTERPRISE**: `totalCharge`가 `seatCharge`로 계산되지만 실제로는 자동 결제가 스킵된다(`note: "ENTERPRISE는 수동 청구 대상입니다."`). 영업팀과 협의한 금액으로 관리자가 수동 청구. - **유료(STARTER/PROFESSIONAL)**: 갱신일에 자동 결제되며, 초과 요금이 있으면 함께 청구된다.

lightbulb

`scheduledSeats !== paidSeats`인 경우(좌석 감소 예약 등) 다음 결제부터 감소된 좌석 기준으로 청구된다. 이 엔드포인트는 `scheduledSeats` 기준으로 금액을 계산하므로 사용자에게 정확한 예상치를 보여줄 수 있다.