구독을 사용하면 자동 갱신을 통해 지속적인 액세스를 판매할 수 있습니다. 유연한 청구 주기, 무료 체험, 플랜 변경 및 추가 기능을 사용해 고객별로 가격을 맞춤 설정하세요.
Upgrade & Downgrade
일할 계산 및 수량 업데이트로 플랜 변경을 관리하세요.
On‑Demand Subscriptions
지금 mandate를 승인하고 나중에 사용자 지정 금액을 청구하세요.
Customer Portal
고객이 플랜, 청구 및 취소를 직접 관리할 수 있도록 하세요.
Subscription Webhooks
생성, 갱신 및 취소와 같은 lifecycle 이벤트에 대응하세요.
구독이란 무엇인가요?
구독은 고객이 일정에 따라 구매하는 반복 상품입니다. 다음과 같은 경우에 적합합니다.- SaaS 라이선스: 앱, API 또는 플랫폼 액세스
- 멤버십: 커뮤니티, 프로그램 또는 클럽
- 디지털 콘텐츠: 강좌, 미디어 또는 프리미엄 콘텐츠
- 지원 플랜: SLA, 성공 지원 패키지 또는 유지 관리
주요 이점
- 예측 가능한 수익: 자동 갱신을 지원하는 반복 결제
- 유연한 주기: 월간, 연간, 사용자 지정 간격 및 체험 기간
- 유연한 플랜 관리: 업그레이드 및 다운그레이드에 대한 일할 계산
- 추가 기능 및 좌석: 선택적이고 수량화 가능한 업그레이드 연결
- 원활한 checkout: 호스팅 checkout 및 customer portal
- 개발자 중심: 생성, 변경 및 사용량 추적을 위한 명확한 API
구독 생성
Dodo Payments 대시보드에서 구독 상품을 생성한 다음 checkout 또는 API를 통해 판매하세요. 상품과 활성 구독을 분리하면 가격을 버전별로 관리하고, 추가 기능을 연결하며, 성과를 독립적으로 추적할 수 있습니다.구독 상품 생성
대시보드의 필드를 구성하여 구독 상품의 판매, 갱신 및 청구 방식을 정의하세요. 아래 섹션은 생성 양식에서 확인하는 항목과 직접 연결됩니다.상품 세부 정보
- 상품 이름 (필수): checkout, customer portal 및 인보이스에 표시되는 이름입니다.
- 상품 설명 (필수): checkout 및 인보이스에 표시되는 명확한 가치 설명입니다.
- 상품 이미지 (필수): 최대 3MB의 PNG/JPG/WebP입니다. checkout 및 인보이스에 사용됩니다.
- 브랜드: 테마와 이메일에 사용할 특정 브랜드에 상품을 연결합니다.
- 세금 카테고리 (필수): 세금 규칙을 결정할 카테고리(예: SaaS)를 선택합니다.
가격
- 가격 유형: Subscription을 선택합니다(이 가이드). 대안으로 Single Payment 및 Usage Based Billing이 있습니다.
- 가격(필수): 통화가 포함된 기본 recurring 가격입니다. 가격은 $1(또는 선택한 통화로 이에 상응하는 금액) 이상이어야 합니다. 이 최소 금액 미만은 지원되지 않으며 subscription이 작동하지 않습니다.
- 할인 적용 가능(%): 기본 가격에 적용되는 선택적 백분율 할인입니다. checkout 및 인보이스에 반영됩니다.
- 반복 결제 주기(필수): 갱신 간격입니다(예: 1개월마다). 주기(개월 또는 년)와 수량을 선택합니다.
- Subscription 기간(필수): subscription이 활성 상태로 유지되는 전체 기간입니다(예: 10년). 이 기간이 끝나면 연장하지 않는 한 갱신이 중지됩니다.
- Trial 기간(일)(필수): trial 기간을 일 단위로 설정합니다. trial을 사용하지 않으려면 0을 입력합니다. trial이 종료되면 첫 번째 청구가 자동으로 발생합니다.
- Trial 금액: 유료 trial에 대한 선택적 선불 청구 금액입니다. 무료 trial의 경우 설정하지 않습니다. Paid Trials를 참조하세요.
- add-on 선택: 고객이 기본 플랜과 함께 구매할 수 있는 add-on을 최대 10개까지 연결합니다.
추가 기능은 좌석 또는 스토리지와 같은 수량화 가능한 추가 항목에 적합합니다. 고객이 추가 기능을 변경할 때 허용되는 수량과 일할 계산 동작을 제어할 수 있습니다.
고급 설정
- 세금 포함 가격: 적용 가능한 세금이 포함된 가격을 표시합니다. 최종 세금 계산은 고객의 위치에 따라 달라집니다.
- 라이선스 키 생성: 구매 후 각 고객에게 고유 키를 발급합니다. License Keys 가이드를 참조하세요.
- 디지털 상품 제공: 구매 후 파일 또는 콘텐츠를 자동으로 제공합니다. Digital Product Delivery에서 자세히 알아보세요.
- 메타데이터: 내부 태그 또는 클라이언트 통합을 위해 사용자 지정 키-값 쌍을 연결합니다. Metadata를 참조하세요.
구독 체험
Trial을 사용하면 고객이 전체 recurring 가격을 결제하기 전에 subscription을 평가할 수 있습니다. trial은 trial 종료 시까지 아무것도 청구하지 않는 무료 방식이거나, 선불로 할인된 금액을 청구하는 유료 방식일 수 있습니다. 두 경우 모두 trial 종료 후 첫 번째 갱신부터 전체 가격이 적용됩니다.체험 구성
상품 가격 섹션에서 Trial Period Days를 설정합니다(체험을 사용하지 않으려면0를 사용). 구독을 생성할 때 이 값을 재정의할 수 있습니다.
Paid Trials
Trial은 무료일 필요가 없습니다. subscription product의 recurring 가격에 Trial 금액을 설정하면 trial 기간에 대해 할인된 선불 요금을 청구할 수 있습니다. 이후 첫 번째 갱신부터 전체 recurring 가격이 적용됩니다.
trial_amount 및 trial_period_days를 반환하므로 subscription이 생성되기 전에 오늘 결제할 금액을 표시할 수 있습니다.
무료 trial은 변경되지 않습니다. Trial 금액을 설정하지 않으면 첫 번째 청구가
0이고 trial 종료 시 전체 가격이 청구되는 기존 동작이 유지됩니다.Trial 오용 방지
Trial 오용 방지는 고객이 동일한 business에 대해 trial을 반복적으로 신청하지 못하도록 합니다. 이 기능을 사용하면 이미 trial을 사용한 고객은 새로운 trial을 받는 대신 자동으로 유료, trial 없음 구매로 전환됩니다.
- 고객은 정규화된 email을 기준으로 매칭되며 plus-alias가 제거됩니다. 따라서
user+trial@example.com와user@example.com는 동일한 사용자로 처리됩니다. - 사용 기록은 trial 활성화 시점에 저장되므로, 같은 날 취소한 고객도 trial을 사용한 것으로 처리됩니다.
- 기존 고객은 email을 기준으로 과거 trial 기록이 backfill되므로 이전 trial 사용자도 즉시 인식됩니다.
이 설정은 기본적으로 꺼져 있습니다. business 수준의 subscription 제어 항목 전체 목록은 Subscription Settings를 참조하세요.
Trial 상태 감지
무료 trial subscription이 trial 중인지 확인하려면 해당 subscription의 payments 목록을 가져옵니다. 금액이 0인 payment가 정확히 하나 있으면 subscription은 trial 기간 중입니다:Trial 기간 업데이트
next_billing_date를 업데이트하여 trial을 연장합니다:
Subscription 플랜 변경
플랜 변경을 통해 subscription을 upgrade 또는 downgrade하고, 수량을 조정하거나, 다른 product로 이전할 수 있습니다. 선택한 proration mode에 따라 변경 시 즉시 청구가 발생하거나 credit이 생성되거나, 청구 조정이 적용되지 않을 수 있습니다.Product Collections
관련 product를 collection으로 그룹화하여 Customer Portal에서 원활한 upgrade/downgrade 경로를 활성화합니다.
Proration Mode
플랜을 변경할 때 고객에게 청구하는 방식을 선택합니다:네 가지 proration mode 빠른 비교:
prorated_immediately
현재 billing cycle의 남은 기간을 기준으로 비례 금액을 청구합니다. 사용하지 않은 기간을 반영하는 공정한 청구에 적합합니다.
difference_immediately
가격 차액을 즉시 청구하거나(upgrade), 향후 갱신을 위한 credit을 추가합니다(downgrade). 간단한 upgrade/downgrade 시나리오에 적합합니다.
difference_immediately를 사용한 downgrade의 credit은 subscription 범위에 적용되며 향후 갱신에 자동으로 사용됩니다. 이는 Credit-Based Billing entitlement와는 별개입니다.difference_immediately로 downgrade하면 사용하지 않은 금액이 subscription 범위의 credit이 되어 향후 갱신 금액을 자동으로 상쇄합니다:
full_immediately
남은 기간을 무시하고 새로운 플랜의 전체 금액을 즉시 청구합니다. Billing cycle을 재설정할 때 적합합니다.
do_not_bill
청구 조정 없이 새로운 플랜으로 전환합니다. proration 청구도 credit도 없으며 고객은 단순히 새로운 플랜으로 이동합니다. 배려 차원의 이전, 무료 플랜 전환 또는 가격 차액을 부담하려는 경우에 적합합니다.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
시나리오: Basic(80/월)로 upgrade합니다.다음 갱신일은 2월 15일(1월 16일 + 30일)이며 가격은 $80.00/월입니다.
Example: Downgrade credit calculation
Example: Downgrade credit calculation
시나리오: Pro(20/월)로 downgrade합니다.$60 credit은 향후 갱신에 자동으로 적용됩니다:
- 갱신 1: 20(credit) = **40)
- 갱신 2: 20(credit) = **20)
- 갱신 3: 20(credit) = $0.00(credit 소진)
- 갱신 4: $20.00(전체 가격)
credit 관리 방법에 대한 자세한 내용은 Upgrade & Downgrade Guide를 참조하세요.
Add-on을 사용한 플랜 변경
플랜을 변경할 때 add-on을 수정할 수 있습니다. add-on은 proration 계산에 포함됩니다:플랜 변경은 즉시 청구를 발생시킵니다. 청구에 실패하면 subscription이
on_hold status로 전환될 수 있습니다. subscription.plan_changed webhook event를 통해 변경 사항을 추적하세요.플랜 변경 미리보기
플랜 변경을 확정하기 전에 정확한 청구 금액과 변경 결과 subscription을 미리 확인합니다:Preview Change Plan API
플랜 변경을 확정하기 전에 미리 확인하세요.
Subscription 상태
subscription은 수명 주기 동안 정의된 여러 status를 거칩니다. 다음 표는 각 status의 의미와 원인, 복구 가능 여부 및 복구 방법을 확인하기 위한 기준입니다.상태 머신
On Hold 상태
다음과 같은 경우 subscription이on_hold 상태가 됩니다:
- 갱신 payment 실패(잔액 부족, 카드 만료 등)
- 플랜 변경 청구 실패
- Payment method authorization 실패
On Hold 상태에서 재활성화
subscription을on_hold 상태에서 재활성화하려면 payment method를 업데이트합니다. 그러면 다음 작업이 자동으로 수행됩니다:
- 미납 잔액에 대한 청구 생성
- 인보이스 생성
- 새 payment method를 사용하여 payment 처리
- payment 성공 시 subscription을
active상태로 재활성화
on_hold subscription의 payment method를 성공적으로 업데이트하면 payment.succeeded webhook event가 발생한 뒤 subscription.active webhook event가 발생합니다.전환별 Webhook Event
각 전환은 webhook을 발생시키므로 polling 없이 entitlement 로직을 구동할 수 있습니다:Subscription Webhook Payloads
subscription lifecycle event의 전체 payload schema를 확인하세요.
API 관리
Create subscriptions
Create subscriptions
POST /subscriptions를 사용하여 product에서 subscription을 programmatically 생성할 수 있습니다. 선택적으로 trial 및 add-on을 포함할 수 있습니다.API Reference
subscription 생성 API를 확인하세요.
Update subscriptions
Update subscriptions
PATCH /subscriptions/{id}를 사용하여 수량을 업데이트하고, 다음 billing 날짜에 취소하거나, metadata를 수정합니다.API Reference
subscription 세부 정보 업데이트 방법을 알아보세요.
Change plans (proration)
Change plans (proration)
proration 제어를 사용하여 활성 product 및 수량을 변경합니다.
API Reference
플랜 변경 옵션을 검토하세요.
On‑demand charges
On‑demand charges
on-demand subscription의 경우 필요할 때 특정 금액을 청구합니다.
API Reference
on-demand subscription을 청구합니다.
List and retrieve
List and retrieve
GET /subscriptions를 사용하여 모든 subscription을 나열하고 GET /subscriptions/{id}를 사용하여 하나를 조회합니다.API Reference
목록 조회 및 검색 API를 확인하세요.
Usage history
Usage history
metered 또는 hybrid 가격 모델에 대해 기록된 usage를 가져옵니다.
API Reference
usage history API를 확인하세요.
Update payment method
Update payment method
subscription의 payment method를 업데이트합니다. 활성 subscription의 경우 향후 갱신에 사용할 payment method가 업데이트됩니다.
on_hold 상태의 subscription의 경우 미납 잔액에 대한 청구를 생성하여 subscription을 재활성화합니다.새 payment-method link를 생성할 때(New request type), allowed_payment_method_types를 전달하여 해당 페이지에 고객에게 표시할 payment method를 제한할 수 있습니다. 목록에 없는 method는 고객에게 표시되지 않지만, method를 포함한다고 해서 반드시 표시되는 것은 아닙니다(사용 가능 여부는 고객 위치 및 business 설정과 같은 요소에 따라 달라집니다).API Reference
payment method 업데이트 및 subscription 재활성화 방법을 알아보세요.
일반적인 사용 사례
- SaaS 및 API: seat 또는 usage에 대한 add-on을 포함한 tier별 access
- Content 및 media: introductory trial을 포함한 월간 access
- B2B support plan: premium support add-on을 포함한 연간 계약
- Tool 및 plugin: license key 및 version별 release
Integration 예시
Checkout Session(subscription)
checkout session을 생성할 때 subscription product와 선택적 add-on을 포함합니다:Proration을 사용한 플랜 변경
subscription을 upgrade 또는 downgrade하고 proration 동작을 제어합니다:다음 billing 날짜에 취소
현재 billing 기간이 끝날 때 적용되는 취소를 예약합니다:Subscription 기간 연장
새subscription_period_count 및 subscription_period_interval를 PATCH /subscriptions/{id}에 전달하여 subscription 실행 기간을 연장합니다. subscription의 만료일은 새 count와 interval을 기준으로 다시 계산됩니다. 예를 들어 고객의 현재 플랜에 추가 기간을 제공할 수 있습니다:
subscription 기간은 연장만 가능하며 단축할 수 없습니다.
On-demand subscription
on-demand subscription을 생성하고 필요할 때 나중에 청구합니다:활성 Subscription의 payment method 업데이트
활성 subscription의 payment method를 업데이트합니다:on_hold 상태의 Subscription 재활성화
payment 실패로 on hold 상태가 된 subscription을 재활성화합니다:RBI 규정을 준수하는 Mandate를 사용하는 Subscription
UPI 및 인도 card subscription은 특정 mandate 요구 사항이 적용되는 RBI(Reserve Bank of India) 규정에 따라 운영됩니다:Mandate 한도
mandate 유형과 금액은 subscription의 recurring 청구 금액에 따라 달라집니다:- mandate 하한 미만의 청구(기본값 ₹15,000): 하한 금액으로 on-demand mandate를 생성합니다. subscription 금액은 subscription frequency에 따라 mandate 한도까지 주기적으로 청구됩니다.
- mandate 하한 이상인 청구: 정확한 subscription 금액으로 subscription mandate(또는 on-demand mandate)를 생성합니다.
mandate_min_amount_inr_paise(INR paise)를 통해 merchant별 또는 request별로 구성할 수 있습니다. 은행에 등록되는 금액은 max(mandate_floor, billing_amount)이므로 청구 금액이 더 낮을 때 하한이 고객에게 표시되는 authorization 상한이 됩니다.
RBI 규정을 준수하는 mandate 및 인도 payment method의 구성 가능한 mandate 하한에 대한 자세한 내용은 India Payment Methods 페이지를 참조하세요.
Upgrade 및 Downgrade 고려 사항
중요: subscription을 upgrade 또는 downgrade할 때 mandate 한도를 신중하게 고려하세요:- upgrade/downgrade로 인해 청구 금액이 Rs 15,000을 초과하고 기존 on-demand payment 한도를 넘으면 transaction 청구가 실패할 수 있습니다.
- 이 경우 고객이 payment method를 업데이트하거나 subscription을 다시 변경하여 올바른 한도로 새 mandate를 설정해야 할 수 있습니다.
고액 청구에 대한 Authorization
Rs 15,000 이상인 subscription 청구의 경우:- 고객의 은행에서 transaction을 authorize하라는 메시지가 표시됩니다.
- 고객이 transaction을 authorize하지 못하면 transaction이 실패하고 subscription이 on hold 상태가 됩니다.
48시간 처리 지연
처리 일정: 인도 card 및 UPI subscription의 recurring 청구는 고유한 처리 패턴을 따릅니다:- 청구는 subscription frequency에 따라 예정된 날짜에 시작됩니다.
- 고객 account에서 실제 차감은 payment 시작 후 48시간이 지나야 발생합니다.
- 은행 API 응답에 따라 이 48시간의 대기 시간이 추가 2~3시간까지 연장될 수 있습니다.
Mandate 취소 기간
48시간 처리 기간 동안:- 고객은 banking app을 통해 mandate를 취소할 수 있습니다.
- 고객이 이 기간에 mandate를 취소해도 subscription은 active 상태로 유지됩니다(인도 card 및 UPI AutoPay subscription에만 해당하는 예외 사례입니다).
- 그러나 실제 차감은 실패할 수 있으며, 이 경우 subscription을 on hold 상태로 전환합니다.
- payment confirmation까지 benefit 활성화 지연
- grace period 또는 임시 access 구현
- mandate 취소에 대한 subscription status 모니터링
- 애플리케이션 로직에서 subscription hold 상태 처리
모범 사례
- 명확한 tier로 시작: 차이가 분명한 2~3개의 플랜
- 가격을 명확히 전달: 총액, proration 및 다음 갱신을 표시
- 신중하게 trial 사용: 단순히 기간을 제공하는 것이 아니라 onboarding을 통해 전환
- add-on 활용: 기본 플랜은 간단하게 유지하고 추가 기능을 upsell
- 변경 사항 테스트: test mode에서 플랜 변경 및 proration 검증
Subscription은 recurring revenue를 위한 유연한 기반입니다. 간단하게 시작하고 철저히 테스트한 뒤 adoption, churn 및 expansion 지표를 바탕으로 반복 개선하세요.