One-Time
평생 액세스 또는 단일 제공 항목에 대해 한 번만 요금을 청구합니다.
Subscriptions
trial, proration 및 add-on을 포함하여 일정에 따라 요금을 청구합니다.
Usage-Based
사용량을 측정하고 실제 사용량에 따라 요금을 청구합니다.
제품 생성
dashboard 또는 API를 통해 제품을 생성하세요. 먼저 가격 모델(One-Time, Subscription 또는 Usage-Based)을 선택한 다음 세부 정보를 구성합니다. 가격 모델은 변경할 수 없으므로 다른 모델이 필요하면 새 제품을 생성하세요.1
Name and Description
명확한 제목과 간결하고 가치 중심적인 설명을 입력하세요. 설명에는 Markdown이 지원됩니다.

2
Pricing Model and Price
가격 모델을 선택하세요:
- One-Time: 한 번 지불하는 고정 가격입니다.
- Subscription: 청구 주기와 선택적 trial이 포함된 반복 가격입니다.
- Usage-Based: 측정된 이벤트에서 산출되는 가격입니다.
- Price: 기본 금액과 통화입니다. Pay What You Want 제품을 제외하고 Dodo Payments가 지원하는 모든 통화로 기본 가격을 설정할 수 있습니다. 해당 제품의 기본 통화는 USD, GBP 또는 EUR이어야 합니다. 빠르게 이용할 수 있도록 USD, GBP, EUR 및 INR은 통화 선택기의 상단에 고정되어 있습니다.
- Discount (%): checkout 및 invoice에 표시되는 선택적 백분율 할인입니다.
- Subscription의 경우 Repeat every(예: 1개월 또는 1년), Trial days, 그리고 paid trial을 위한 선택적 Trial amount를 설정하세요. 0이 아닌 subscription 가격은 최소 $1(또는 선택한 통화로 이에 상응하는 금액)이어야 합니다. 정확히 $0인 가격도 지원되며, 고객이 카드 없이 $0 subscription을 시작하도록 설정할 수 있습니다. Card-Optional at Zero Price를 참조하세요. 음수 금액은 지원되지 않습니다.
Adaptive Currency를 켜면 기본 통화가 아닌 지역의 고객에게 현지 통화로 요금이 청구되므로, 시장에 가장 적합한 통화로 가격을 작성할 수 있습니다. 끄면 고객은 기본 통화로 결제합니다.
3
Product Media
checkout 및 invoice에서 제품을 보여줄 이미지를 업로드하세요. 지원 형식은 PNG, JPG, WebP이며 최대 3MB입니다. 언제든지 이미지 순서를 변경하거나 교체할 수 있습니다.
4
Automated Entitlements
Entitlements 섹션에서 결제 후 자동으로 활성화되는 fulfillment를 연결하세요:
- License Keys: 고유 키를 발급하고 검증합니다.
- File Downloads: 보안 파일 액세스 권한을 부여합니다.
- Custom: webhook을 통해 자체 entitlement 로직을 트리거합니다.
Variants 및 Pricing Options
하나의 제품 아래에 variant를 두는 대신 각 가격 옵션(예: Monthly 및 Yearly)에 대해 별도의 제품을 생성하세요. 그런 다음 이를 Product Collection으로 그룹화하여 모든 옵션을 하나의 checkout에 표시하고 Customer Portal에서 플랜 전환을 활성화하세요.
이 방식을 사용하는 이유
- 명확한 가격 모델: 각 제품에는 하나의 명확한 가격 모델(일회성, subscription 또는 usage-based)만 있습니다.
- 예측 가능한 API: 중첩된 variant 로직 없이 더 간단하게 통합할 수 있습니다.
- 간편한 reporting: variant를 집계하지 않고 제품별 revenue 및 metric을 추적할 수 있습니다.
- 유연한 checkout: 여러 제품을 나란히 표시하여 고객이 비교하고 선택할 수 있습니다.
Product Collection 작동 방식
- 제품 생성: 각 플랜(예: Starter Monthly, Starter Annual, Pro Monthly, Pro Annual)에 대해 개별 제품을 설정합니다.
- 컬렉션으로 그룹화: 관련 제품을 Product Collection에 추가합니다.
- 통합 checkout: 고객은 하나의 checkout에서 모든 옵션을 확인하고 원하는 플랜을 선택합니다.
- 플랜 전환: 고객은 Customer Portal을 통해 동일한 컬렉션 내 제품 간에 업그레이드하거나 다운그레이드할 수 있습니다.
Product Collections
관련 제품을 함께 그룹화하여 통합 checkout 경험과 업그레이드/다운그레이드 경로를 제공하세요.
제품 관리
대시보드를 통해 또는 API를 사용해 프로그래밍 방식으로 제품을 관리할 수 있습니다. API는 제품 생성, 업데이트, 조회, 이미지 업로드 및 보관에 대한 모든 제어 기능을 제공합니다.대시보드 관리
- Update: 이름, 설명, 이미지, 가격, field 및 benefit을 언제든지 편집할 수 있습니다(가격 모델은 변경할 수 없음).
- Archive: 기존 고객에게 영향을 주지 않고 신규 구매에서 제품을 숨깁니다. 나중에 보관을 해제할 수 있습니다.
- Drafts: 진행 중인 제품은 draft로 저장되므로 나중에 다시 작업할 수 있습니다. draft는 test mode와 live mode에 각각 별도로 저장되므로 한 모드에서 완료되지 않은 제품이 다른 모드에 영향을 주지 않습니다. Clear Draft를 사용하여 삭제하고 새로 시작하세요.
API 관리
다음 지침에 따라 이미지를 업로드하는 것을 포함하여 제품을 생성, 업데이트, 관리 및 조회할 수 있습니다.Creating a Product
Creating a Product
이름, 설명, 가격, 통화 및 recurring 제품인지 여부와 같은 세부 정보를 포함하여
POST 요청을 /products endpoint로 전송하세요.반복 제품의 경우 price 객체를 반복 가격(type: recurring_price)으로 설정하고, 해당 count와 함께 payment_frequency_interval 및 subscription_period_interval(Day, Week, Month 또는 Year)을 지정하세요.Create Product API
Create Product API 문서에서 자세한 request 및 response 구조를 확인하세요.
Updating a Product
Updating a Product
PATCH 요청을 /products/{product_id} endpoint로 전송하세요. 다른 세부 정보는 그대로 유지하면서 이름, 가격 및 설명과 같은 property를 업데이트할 수 있습니다.endpoint의 product_id가 기존 제품과 일치하는지 확인하세요.Update Product API
Update Product API 문서에서 자세한 request 및 response 구조를 확인하세요.
Retrieving Products
Retrieving Products
GET 요청을 /products endpoint로 전송하여 account에 저장된 제품 목록을 가져옵니다. 이를 통해 active 및 archived 제품을 포함한 제품 세부 정보를 검색할 수 있습니다.Retrieve Products API
Retrieve Products API 문서에서 자세한 request 및 response 구조를 확인하세요.
Uploading Product Images
Uploading Product Images
API에서 제공하는 pre-signed URL을 사용하여 AWS S3에 이미지를 업로드함으로써 제품에 이미지를 연결합니다. 먼저
/products/{product_id}/images endpoint에서 이미지 upload URL을 요청한 다음, 제공된 URL을 사용하여 60초 이내에 이미지를 업로드하세요.API에서 사전 서명 URL을 받으면 PUT method를 사용해 이미지를 업로드하세요. 이를 통해 이미지 업로드를 위한 AWS S3에 대한 안전하고 일시적인 액세스를 보장합니다.S3 업로드에 지원되는 라이브러리:- Node.js:
axios,node-fetch - Python:
requests,boto3 - Go:
net/http - PHP:
GuzzleHttp - Ruby:
rest-client
200 OK status를 반환하여 이미지가 성공적으로 저장되었음을 나타냅니다.Upload Product Image API
Upload Product Image API 문서에서 자세한 request 및 response 구조를 확인하세요.
Archiving a Product
Archiving a Product
DELETE 요청을 /products/{id} endpoint로 전송하여 제품을 영구적으로 삭제하지 않고 신규 구매에서 숨깁니다.Archive Product API
Archive Product API 문서에서 자세한 request 및 response 구조를 확인하세요.
Unarchiving a Product
Unarchiving a Product
POST 요청을 /products/{product_id}/unarchive endpoint로 전송하여 archived 제품을 복원합니다. 이렇게 하면 제품이 다시 활성화되어 사용할 수 있습니다.Unarchive Product API
Unarchive Product API 문서에서 자세한 request 및 response 구조를 확인하세요.
Checkout and Fulfillment
Checkout and Fulfillment
제품에서 payment 또는 subscription flow를 생성하고, benefit 및 webhook을 통해 자동으로 fulfillment를 처리하세요.
Checkout Sessions
one-time 또는 subscription 구매를 위한 checkout session을 생성합니다.
Payment Webhooks
payment lifecycle event에 대응합니다.
Subscription Webhooks
subscription 생성, 갱신 및 취소 event를 처리합니다.
Best Practices
- 명확하게 시작하기: 각 가격 옵션(Monthly와 Yearly)에 대해 별도의 제품을 사용하세요.
- 신중하게 trial 사용하기: activation을 높일 수 있도록 trial을 onboarding과 함께 사용하세요.
- fulfillment 자동화하기: benefit과 webhook을 사용하여 즉시 제공하세요.
- metadata로 태그하기: reconciliation을 위해 시스템 ID를 저장하세요.
관련 항목
Product Analytics
각 개별 제품의 revenue, customer, retention, subscriber 및 MRR을 추적합니다.
Localized Pricing
실시간 환율에 의존하지 않고 제품에 통화별 또는 국가별 고정 가격을 설정합니다.