좌석 기반 청구는 고객이 필요한 사용자, 팀원 또는 라이센스 수에 따라 요금을 부과할 수 있게 해줍니다. 이는 팀 협업 도구, 기업 소프트웨어 및 B2B SaaS 제품의 표준 가격 모델입니다.
구현 튜토리얼
단계별 가이드와 코드 예제.
부가 기능 문서
좌석 기반 청구를 지원하는 부가 기능 시스템에 대해 알아보세요.
구독 관리
좌석 기반 구독 및 요금제 변경 관리.
웹훅
구독 웹훅으로 좌석 변경 사항 추적.
좌석 기반 청구란?
좌석 기반 청구(사용자별 또는 좌석별 가격 책정이라고도 함)는 고객이 제품에 접근하는 사용자 수에 따라 요금을 부과합니다. 고정 요금 대신 팀 규모에 따라 가격이 조정됩니다.일반적인 사용 사례
| 산업 | 예시 | 가격 모델 |
|---|---|---|
| 팀 협업 | Slack, Notion, Asana | 활성 사용자 기준/월 |
| 개발 도구 | GitHub, GitLab, Jira | 좌석 기준/월 |
| CRM 소프트웨어 | Salesforce, HubSpot | 사용자 라이센스 기준 |
| 디자인 도구 | Figma, Canva | 편집자 좌석 기준 |
| 보안 소프트웨어 | 1Password, Okta | 사용자 기준/월 |
| 화상 회의 | Zoom, Teams | 호스트 라이센스 기준 |
좌석 기반 가격 책정의 이점
귀하의 비즈니스를 위해:- 고객이 성장함에 따라 수익이 자연스럽게 증가
- 고객이 예산을 세울 수 있는 예측 가능한 가격
- 개인에서 팀, 기업으로의 명확한 업그레이드 경로
- 팀이 확장됨에 따라 더 높은 고객 생애 가치
- 사용하는 만큼만 지불
- 비용을 이해하고 예측하기 쉬움
- 필요에 따라 사용자 추가/제거의 유연성
- 팀 규모에 맞는 공정한 가격
Dodo Payments에서의 좌석 기반 청구 작동 방식
Dodo Payments는 부가 기능 시스템을 사용하여 좌석 기반 청구를 구현합니다. 작동 방식은 다음과 같습니다:아키텍처 개요
팀 프로 구독은 $99/월이며 5개의 좌석이 포함됩니다. 5명 이상의 사용자가 있는 경우 추가 좌석마다 $15/월을 지불합니다. 예를 들어, 팀에 15개의 좌석이 필요한 경우:- 기본 요금제: $99/월 (5개 좌석 포함)
- 부가 기능: 10개의 추가 좌석 × $15/월 = $150/월
- 총 월 비용: $99 + $150 = $249 (15개 좌석)
주요 구성 요소
| 구성 요소 | 목적 | 예시 |
|---|---|---|
| 기본 제품 | 포함된 좌석이 있는 핵심 구독 | ”팀 요금제 - $99/월 (5개 좌석 포함)“ |
| 좌석 부가 기능 | 추가 사용자에 대한 좌석 요금 | ”추가 좌석 - $15/월” |
| 수량 | 구매한 추가 좌석 수 | 10개 추가 좌석 |
가격 책정 전략
비즈니스에 맞는 좌석 기반 가격 책정 전략을 선택하세요:전략 1: 기본 + 좌석별 부가 기능
기본 요금제에 정해진 수의 좌석을 포함하고 추가 좌석에 대해 요금을 부과합니다. 예시:전략 2: 순수 좌석별 가격 책정
기본 요금 없이 좌석당 고정 요금을 부과합니다. 예시:전략 3: 계층형 좌석 가격 책정
다양한 기본 요금제와 서로 다른 좌석당 요금. 예시:전략 4: 좌석 번들
좌석을 개별적으로 판매하는 대신 묶음으로 판매합니다. 예시:좌석 기반 청구 설정하기
1단계: 가격 책정 계획하기
구현 전에 가격 구조를 정의합니다:1
기본 요금제 정의
기본 구독에 포함된 내용을 결정합니다:
- 기본 가격 (순수 좌석 기준의 경우 $0일 수 있음)
- 포함된 좌석 수
- 이 계층에서 사용할 수 있는 기능
2
좌석 가격 설정
좌석당 부가 기능 비용을 결정합니다:
- 추가 좌석당 가격
- 대량 할인 (여러 부가 기능을 통해)
- 허용되는 최대 좌석 수 (해당되는 경우)
3
청구 주기 고려하기
좌석 가격을 청구 주기와 일치시킵니다:
- 월간 구독 → 월간 좌석 요금
- 연간 구독 → 연간 좌석 요금 (종종 할인됨)
2단계: 좌석 부가 기능 만들기
Dodo Payments 대시보드에서:- 제품 → 부가 기능으로 이동합니다.
- 부가 기능 만들기를 클릭합니다.
- 부가 기능을 구성합니다:
| 필드 | 값 | 비고 |
|---|---|---|
| 이름 | ”추가 좌석” 또는 “팀원” | 명확하고 사용자 친화적인 이름 |
| 설명 | ”작업 공간에 팀원을 추가하세요” | 고객이 얻는 것 설명 |
| 가격 | 좌석당 가격 | 예: $10.00 |
| 통화 | 기본 제품과 일치 | 반드시 동일한 통화여야 함 |
| 세금 카테고리 | 기본 제품과 동일 | 일관된 세금 처리를 보장 |
3단계: 기본 구독 만들기
구독 제품을 만듭니다:- 제품 → 제품 만들기로 이동합니다.
- 구독 선택
- 가격 및 세부정보 구성
- 부가 기능 섹션에서 좌석 부가 기능을 연결합니다.
4단계: 제품에 부가 기능 연결하기
좌석 부가 기능을 구독에 연결합니다:- 구독 제품을 편집합니다.
- 부가 기능 섹션으로 스크롤합니다.
- 부가 기능 추가 클릭
- 좌석 부가 기능 선택
- 변경 사항 저장
귀하의 구독 제품은 이제 좌석 기반 가격 책정을 지원합니다. 고객은 체크아웃 중에 추가 좌석을 원하는 만큼 구매할 수 있습니다.
좌석 관리
새로운 구독에 좌석 추가하기
체크아웃 세션을 생성할 때 좌석 수를 지정합니다:기존 구독의 좌석 수 변경하기
좌석을 조정하려면 Change Plan API를 사용합니다:좌석 제거하기
좌석 수를 줄이려면 더 낮은 수량을 지정합니다:모든 추가 좌석 제거하기
모든 부가 기능을 제거하려면 빈 addons 배열을 전달합니다:좌석 변경에 대한 비례 배분
고객이 중간 주기에 좌석을 추가하거나 제거할 때 비례 배분이 청구 방식을 결정합니다.비례 배분 모드
| 모드 | 좌석 추가 | 좌석 제거 |
|---|---|---|
prorated_immediately | 주기 내 남은 일수에 대해 요금 부과 | 사용하지 않은 일수에 대해 크레딧 |
difference_immediately | 전체 좌석 가격 부과 | 향후 갱신에 적용되는 크레딧 |
full_immediately | 전체 좌석 가격 부과, 청구 주기 재설정 | 크레딧 없음 |
비례 배분 예시
시나리오: 남은 15일 청구 주기, 좌석당 $10에 5개 좌석 추가- 즉시 비례 배분
- 즉시 차이
- 즉시 전체
변경 전 미리보기
변경하기 전에 항상 비례 배분을 미리 봅니다:웹훅으로 좌석 추적하기
구독 웹훅을 수신하여 좌석 변경 사항을 모니터링합니다:관련 이벤트
| 이벤트 | 트리거 시점 | 사용 사례 |
|---|---|---|
subscription.active | 새로운 구독 활성화 | 초기 좌석 프로비저닝 |
subscription.plan_changed | 좌석 추가/제거 | 앱에서 좌석 수 업데이트 |
subscription.renewed | 구독 갱신 | 좌석 수가 변경되지 않았는지 확인 |
subscription.cancelled | 구독 취소 | 모든 좌석 비활성화 |
웹훅 핸들러 예시
좌석 한도 강제 적용
귀하의 애플리케이션은 좌석 한도를 강제 적용해야 합니다. Dodo Payments는 청구를 추적하지만, 귀하가 접근을 제어합니다.강제 적용 전략
- 하드 리미트
- 경고가 있는 소프트 리미트
- 자동 업그레이드
좌석 수를 초과하여 사용자를 추가하는 것을 엄격히 방지합니다.
고급 패턴
다양한 좌석 유형
다양한 가격으로 다양한 좌석 유형을 제공합니다:연간 좌석 할인
할인된 연간 좌석 가격을 제공합니다:최소 좌석 요구 사항
특정 요금제에 대해 최소 좌석 수를 요구합니다:모범 사례
가격 책정 모범 사례
- 명확한 커뮤니케이션: 가격 페이지에 좌석당 가격을 눈에 띄게 표시
- 포함된 좌석: 마찰을 줄이기 위해 기본 가격에 몇 개의 좌석을 포함하는 것을 고려
- 대량 할인: 더 큰 팀을 위해 낮은 좌석당 요금을 제공하여 기업 거래를 유치
- 연간 인센티브: 연간 요금제를 할인하여 현금 흐름 및 유지율 개선
기술 모범 사례
- 좌석 수 캐시: API 호출을 피하기 위해 구독 좌석 수를 로컬에 캐시
- 정기적으로 동기화: API를 통해 Dodo Payments와 로컬 좌석 수를 주기적으로 동기화
- 실패 처리: 좌석 변경이 실패할 경우 명확한 오류 메시지 및 재시도 옵션 표시
- 감사 추적: 청구 분쟁 및 준수를 위해 모든 좌석 변경 사항을 기록
사용자 경험 모범 사례
- 실시간 피드백: 좌석 조정 시 즉각적인 비용 영향을 보여줍니다.
- 확인 단계: 청구 변경 전에 확인을 요구합니다.
- 비례 배분 투명성: 적용하기 전에 비례 배분 요금을 명확히 설명합니다.
- 쉬운 다운그레이드: 좌석을 줄이는 것을 어렵게 만들지 마세요 (신뢰를 구축합니다).
문제 해결
앱과 청구 간의 좌석 수 불일치
앱과 청구 간의 좌석 수 불일치
증상: 귀하의 앱이 구독과 다른 좌석 수를 표시합니다.원인:
- 웹훅이 수신되지 않거나 처리되지 않음
- 좌석 변경 중 경쟁 조건
- 캐시된 데이터가 업데이트되지 않음
subscription.plan_changed에 대한 웹훅 핸들러를 구현합니다.- 현재 구독을 가져오는 “청구와 동기화” 버튼 추가
- 정기적인 새로 고침을 보장하기 위해 캐시 TTL 설정
비례 배분 요금이 예상과 다름
비례 배분 요금이 예상과 다름
증상: 고객이 중간 주기 요금에 혼란스러워합니다.원인:
- 비례 배분 모드가 명확하게 전달되지 않음
- 고객이 확인하기 전에 미리보기를 보지 않음
- 변경하기 전에 항상
previewChangePlan를 사용하세요. - 명확한 세부 내역 표시: “X 좌석 추가 = 오늘 $Y (Z일 비례 배분)”
- 도움말 센터에 비례 배분 정책 문서화
체크아웃에서 부가 기능이 나타나지 않음
체크아웃에서 부가 기능이 나타나지 않음
증상: 체크아웃 중 좌석 부가 기능이 사용 가능하지 않음.원인:
- 제품에 부가 기능이 연결되지 않음
- 부가 기능이 보관되었거나 삭제됨
- 제품과 부가 기능 간의 통화 불일치
- 제품 설정에서 부가 기능이 연결되어 있는지 확인
- 부가 기능 대시보드에서 부가 기능 상태 확인
- 통화가 정확히 일치하는지 확인
현재 사용량보다 좌석을 줄일 수 없음
현재 사용량보다 좌석을 줄일 수 없음
증상: 고객이 좌석을 줄이기를 원하지만 사용자가 할당되어 있음.해결책:
- 좌석을 줄이기 전에 제거해야 할 사용자를 보여줍니다.
- 워크플로우 구현: 사용자 제거 → 좌석 줄이기
- 좌석 감소를 시행하기 전에 유예 기간을 고려합니다.