One-Time
Subscriptions
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: 측정된 이벤트에서 산출되는 가격입니다.
- 가격: 기본 금액 및 통화입니다. Pay What You Want 제품을 제외하고, Dodo Payments가 지원하는 모든 통화로 기본 가격을 설정할 수 있습니다. 해당 제품의 기본 통화는 USD, GBP 또는 EUR이어야 합니다. 빠르게 액세스할 수 있도록 USD, GBP, EUR 및 INR은 통화 선택기의 맨 위에 고정되어 있습니다.
- 할인 적용 가능(%): 결제 및 인보이스에 표시되는 선택적 백분율 할인입니다.
10.5와 같이 소수점 이하 두 자리까지 입력할 수 있습니다. API에서는discount_bps를 사용해 basis points 단위로 할인을 설정하므로,1050는 10.5%를 의미합니다. 레거시discount필드는 더 이상 사용되지 않으며 정수 퍼센트로 반올림됩니다. - 구독의 경우 반복 주기(예: 1개월 또는 1년), 체험 기간(일) 및 유료 체험을 위한 선택적 체험 금액을 설정합니다. 0이 아닌 구독 가격은 고객이 결제하는 통화의 구독 최소 금액을 충족해야 합니다. USD의 경우 $1.00입니다. USD, EUR 및 GBP 이외의 통화도 최소 $1.00 이상의 가치가 있어야 합니다. 정확히 $0인 가격도 지원되며, 고객이 카드 없이 $0 구독을 시작하도록 설정할 수 있습니다. 자세한 내용은 가격이 0일 때 카드 선택 사항을 참조하세요. 음수 금액은 지원되지 않습니다.
Adaptive Currency를 켜면 기본 통화가 아닌 지역의 고객에게 현지 통화로 요금이 청구되므로, 시장에 가장 적합한 통화로 가격을 작성할 수 있습니다. 끄면 고객은 기본 통화로 결제합니다.
3
Product Media
checkout 및 invoice에서 제품을 보여줄 이미지를 업로드하세요. 지원 형식은 PNG, JPG, WebP이며 최대 3MB입니다. 언제든지 이미지 순서를 변경하거나 교체할 수 있습니다.
4
Automated Entitlements
Entitlements 섹션에서 결제 후 자동으로 활성화되는 fulfillment를 연결하세요:
- 라이선스 키: 고유한 키를 발급하고 검증합니다.
- 디지털 파일: 안전한 파일 액세스 권한을 부여합니다.
- 기능 플래그: 앱에서 확인하는 기능을 잠금 해제합니다.
- 플랫폼 액세스: Discord, GitHub, Telegram, Figma, Framer 또는 Notion에 대한 액세스 권한을 부여합니다.
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
제품 관리
대시보드를 통해 또는 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
Updating a Product
Updating a Product
PATCH 요청을 /products/{product_id} endpoint로 전송하세요. 다른 세부 정보는 그대로 유지하면서 이름, 가격 및 설명과 같은 property를 업데이트할 수 있습니다.endpoint의 product_id가 기존 제품과 일치하는지 확인하세요.Update Product API
Retrieving Products
Retrieving Products
GET 요청을 /products endpoint로 전송하여 account에 저장된 제품 목록을 가져옵니다. 이를 통해 active 및 archived 제품을 포함한 제품 세부 정보를 검색할 수 있습니다.Retrieve Products API
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
Archiving a Product
Archiving a Product
DELETE 요청을 /products/{id} endpoint로 전송하여 제품을 영구적으로 삭제하지 않고 신규 구매에서 숨깁니다.Archive Product API
Unarchiving a Product
Unarchiving a Product
POST 요청을 /products/{product_id}/unarchive endpoint로 전송하여 archived 제품을 복원합니다. 이렇게 하면 제품이 다시 활성화되어 사용할 수 있습니다.Unarchive Product API
Checkout and Fulfillment
Checkout and Fulfillment
제품에서 payment 또는 subscription flow를 생성하고, benefit 및 webhook을 통해 자동으로 fulfillment를 처리하세요.
Checkout Sessions
Payment Webhooks
Subscription Webhooks
Best Practices
- 명확하게 시작하기: 각 가격 옵션(Monthly와 Yearly)에 대해 별도의 제품을 사용하세요.
- 신중하게 trial 사용하기: activation을 높일 수 있도록 trial을 onboarding과 함께 사용하세요.
- fulfillment 자동화하기: benefit과 webhook을 사용하여 즉시 제공하세요.
- metadata로 태그하기: reconciliation을 위해 시스템 ID를 저장하세요.