Billing Model
SPEC #002 (schema) + handoff 00-design-brief §2-4 정합. 결제 실행 자체는 후속 SPEC.
Overview
결제는 tenant 타입에 따라 단위가 분기한다. FRANCHISE 본사는 본사 단위 청구, INDEPENDENT 매장은 매장
단위. v1 schema 는 도입됐으나 결제 실행 (Invoice·BillingKey) 은 후속 SPEC.
결제 단위 분기
| 본사 type | 매장 type | 결제 단위 | billingAnchorDay 위치 |
|---|---|---|---|
| FRANCHISE | DIRECT | HQ (본사 단위, 산하 매장 묶음) | Hq.billingAnchorDay |
| FRANCHISE | FRANCHISE | HQ | Hq.billingAnchorDay |
| INDEPENDENT (가상) | INDEPENDENT | Store | Store.billingAnchorDay |
billingAnchorDay (결제 anchor)
- 타입:
Int(1~31) - 의미: 매월 결제 기준일. 가입 시 입력 (SPEC #005·#011 폼).
- 28~31 일 처리:
- 31일 anchor → 30일 / 28일 (2월) 자동 보정 (구현 후속 SPEC)
- v1 schema 는 1~31 모두 허용, 표시 로직만 채택
경과일 색 4단계 (handoff §2-4)
미결 청구의 경과일에 따른 시각 분기. 현재는 packages/ui 의 기존 semantic 토큰
(--info·--warn·--danger) 을 매핑한다. billing 전용 ramp (--color-status-billing-*) 는 아직
없으며, 4단계를 더 세분화하려면 후속에서 추가한다:
| 경과일 | 색 분류 | 토큰 |
|---|---|---|
| 0~7 | 정상 (대기) | --info |
| 8~14 | 주의 | --warn |
| 15~29 | 경고 | --danger |
| 30+ | 심각 | --danger (강조 — 별도 ramp 는 후속 추가) |
Plan 분기
| Plan | 의미 | 라이브러리 |
|---|---|---|
AI | 자체 음원 only | AI 라이브러리 |
TRUST | AI + 신탁음원 | AI + TRUST 라이브러리 |
가격 분기 (구체 가격은 운영 정책, schema 미보유):
- AI 가 기본가, TRUST 는 상위 plan
- 가맹 본사 단위 통일 — 같은 본사 산하 모든 매장은 같은 plan
Spec — 결제 흐름 (후속 SPEC 예고)
ContractPlan (협약) → BillingKey (카드 빌링키 또는 계좌이체) → Invoice (월 청구)
→ PaymentResult (성공/실패)
→ TaxInvoice (세금계산서, 팝빌)세부 SPEC 은 v1.0 직전 작성.
Constraints
- 중복 청구 idempotency 차단 —
Invoice생성 시 unique 키 (tenantId, billingMonth). - 활성 협약 중복 차단 — 같은 본사·매장 활성
ContractPlan2개 차단 (FR-20.7). - 세금계산서 — 발행 후 취소는 “취소 발행” (세법).
Roadmap
| SPEC | 내용 |
|---|---|
| 후속 — Billing v1 | ContractPlan · BillingKey · Invoice · PaymentResult · TaxInvoice entity |
| 후속 — Billing UI | /billing · /billing/transfers · /billing/cards (Surface 10 PRD Page 10~12) |
| v1.1+ | Hq.billingMode (FRANCHISE 본사 직접결제 옵션) |
References
- SPEC #002 §2-4 (Hq.billingAnchorDay)
- SPEC #002 §2-5 (Store.billingAnchorDay · INDEPENDENT 만)
- handoff
00-design-brief.md §2-4 - handoff
10-surface-ops-backoffice.md§3 (정산 라인 분리)