Skip to main content

Quick Start Guide

Get your first checkout session running in under 5 minutes

API Reference & Live Testing

Explore the full API documentation and interactively test Checkout Session requests and responses.

Preview Checkout

Calculate pricing, taxes, and totals before creating a session.
Session Validity: Checkout sessions are valid for 24 hours by default. If you pass confirm=true in your request, the session will only be valid for 15 minutes.
Single-Use Links: The checkout_url returned by the API is not reusable and expires within 24 hours (or 15 minutes when confirm=true). It is intended for a single customer to complete one payment. Generate a fresh checkout session for each customer and each payment attempt rather than sharing or reusing a link.

Prerequisites

1

Dodo Payments Account

You’ll need an active Dodo Payments merchant account with API access.
2

API Credentials

Generate your API credentials from the Dodo Payments dashboard:
3

Products Setup

Create your products in the Dodo Payments dashboard before implementing checkout sessions.

Creating Your First Checkout Session

API Response

All methods above return the same response structure:
session_id만 항상 포함됩니다. 두 가지 경우에는 추가 필드가 반환되거나 일부 필드가 반환되지 않습니다:
  • payment_method_id가 제공된 경우 — 결제가 즉시 처리되며 checkout_urlnull입니다. 대신 반환된 payment_id를 사용하세요.
  • confirm: true가 세션 생성 시점에 결제를 생성한 경우 — 응답에 Dodo Payments checkout SDK와 함께 사용할 payment_id, client_secretpublishable_key도 포함됩니다.
생성된 checkout_url는 일회성으로만 사용할 수 있으며 24시간 이내에 만료됩니다. 여러 고객 또는 결제 시도에 걸쳐 이를 캐시하거나 재사용하지 마세요. 새로운 링크가 필요할 때마다 새 checkout session을 생성하세요.
1

Get the checkout URL

API 응답에서 checkout_url를 추출합니다.
2

Redirect your customer

고객이 구매를 완료할 수 있도록 checkout URL로 안내하세요.
대체 통합 옵션: 리디렉션하는 대신 Overlay Checkout(모달 오버레이) 또는 Inline Checkout(완전 임베드)을 사용해 checkout을 페이지에 직접 삽입할 수 있습니다. 네이티브 모바일 앱에서는 동일한 URL을 Android, iOS, React Native 또는 Flutter용 Mobile Checkout SDKs에 전달하세요. 이 모든 방식은 동일한 checkout session URL을 사용합니다.
3

Handle the return

결제 후 고객은 결제/구독 ID, 상태, 고객 이메일 및 라이선스 키를 포함한 query parameters와 함께 return_url로 리디렉션됩니다. 전체 목록은 return_url parameter docs를 참조하세요.

Request Body

Required Fields

모든 checkout session에 필요한 필수 필드

Optional Fields

checkout 환경을 맞춤 설정하기 위한 추가 구성

Required Fields

array
필수
checkout session에 포함할 제품 배열입니다. 각 제품에는 Dodo Payments dashboard의 유효한 product_id가 있어야 합니다.
Mixed Checkout: 동일한 checkout session에서 일회성 결제 제품과 구독 제품을 함께 사용할 수 있습니다. 이를 통해 구독 설정 수수료, SaaS와 하드웨어 번들 등 강력한 사용 사례를 구현할 수 있습니다.
제품 ID 찾기: Dodo Payments dashboard의 Products → View Details에서 제품 ID를 확인하거나 List Products API를 사용하세요.

Optional Fields

checkout 환경을 맞춤 설정하고 결제 흐름에 비즈니스 로직을 추가하려면 이 필드를 구성하세요.
object
고객 정보입니다. ID를 사용해 기존 고객을 연결하거나 checkout 중에 새 customer record를 생성할 수 있습니다.
ID를 사용해 기존 고객을 checkout session에 연결합니다.
object
정확한 세금 계산, fraud prevention 및 regulatory compliance를 위한 청구지 주소 정보입니다.
confirmtrue로 설정되면 성공적인 세션 생성을 위해 모든 청구지 주소 필드가 필수가 됩니다.
array
checkout 중 고객에게 제공할 결제 수단을 제어합니다. 특정 시장 또는 비즈니스 요구사항에 맞게 최적화하는 데 도움이 됩니다.Common options: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, multibanco, bancontact_card, eps, ideal, przelewy24, paypal. 전체 목록은 아니므로 모든 허용 값을 확인하려면 Create Checkout Session API reference를 참조하세요.
중요: 선호하는 결제 수단을 사용할 수 없을 때 checkout 실패를 방지하려면 항상 creditdebit를 fallback 옵션으로 포함하세요.
Example:
string
기본 통화 선택을 고정된 청구 통화로 재정의합니다. ISO 4217 currency codes를 사용합니다.Supported Currencies: USD, EUR, GBP, CAD, AUD, INRExample: 미국 달러는 "USD", 유로는 "EUR"
이 필드는 adaptive pricing이 활성화된 경우에만 적용됩니다. adaptive pricing이 비활성화되면 제품의 기본 통화가 사용됩니다.
boolean
기본값:"false"
재방문 고객에게 이전에 저장한 결제 수단을 표시하여 checkout 속도와 사용자 경험을 개선합니다.
string
결제 완료 후 고객을 리디렉션할 URL입니다. 리디렉션 시 Dodo Payments는 다음 query parameters를 URL에 추가합니다:Example redirect URLs:
license_keyemail query parameters를 사용하면 추가 API 호출 없이 return page에서 license keys를 표시하거나 즉시 확인 메시지를 보낼 수 있습니다.
string
고객이 뒤로 가기 버튼을 클릭하거나 checkout session을 취소했을 때 리디렉션할 URL입니다. 제공하지 않으면 뒤로 가기 버튼이 표시되지 않습니다.
고객이 구매를 완료하지 않고 사이트로 돌아갈 수 있는 명확한 방법을 제공하려면 cancel_url를 설정하세요. checkout 경험이 개선되고 마찰이 줄어듭니다.
boolean
기본값:"false"
true인 경우 모든 세션 세부정보를 즉시 확정합니다. 필수 데이터가 누락되면 API가 오류를 발생시킵니다.
array
checkout session에 하나 이상의 누적 discount codes를 적용합니다. 코드는 배열 순서대로 적용되며(첫 번째 코드는 기본 가격을 낮추고, 두 번째 코드는 이미 할인된 가격을 낮추는 방식), 세션당 최대 20개까지 사용할 수 있습니다.
아래의 단일 discount_code 필드는 deprecated 상태이지만 여전히 완전히 지원됩니다. 기존 통합은 변경 없이 계속 작동합니다. 동일한 요청에서 discount_codes와 함께 사용할 수 없습니다. 누적 할인 기능을 활용하려면 편리한 시점에 discount_codes로 마이그레이션하세요.
string
지원 중단
Deprecated — 새로운 통합에서는 discount_codes를 사용하세요. 이 필드는 backward compatibility를 위해 계속 작동하지만 동일한 요청에서 discount_codes와 함께 사용할 수 없습니다.
object
세션에 대한 추가 정보를 저장할 사용자 지정 key-value 쌍입니다.
boolean
이 세션에 대한 merchant 기본 3DS 동작을 재정의합니다.
boolean
기본값:"false"
최소 주소 수집 모드를 활성화합니다. 활성화하면 checkout에서는 다음 항목만 수집합니다:
  • Country: 세금 산정을 위해 항상 필수
  • ZIP/Postal code: sales tax, VAT 또는 GST 계산에 필요한 지역에서만 수집
불필요한 양식 필드를 제거하여 checkout 마찰을 크게 줄입니다.
더 빠른 checkout 완료를 위해 최소 주소를 활성화합니다. 전체 청구 세부정보가 필요한 비즈니스에서는 전체 주소 수집을 계속 사용할 수 있습니다.
string
연결된 고객에게 속한 저장된 결제 수단입니다. confirm: true 및 기존 customer.customer_id가 필요합니다. 설정하면 결제가 즉시 처리되고 checkout_urlnull로 반환됩니다. 대신 반환된 payment_id를 사용하세요.
true인 경우 전체 session URL 대신 단축 checkout URL을 반환합니다.
string
collection 기반 checkout flow를 위한 제품 collection ID입니다.
string
고객의 Tax ID입니다(예: VAT 번호). billing_addresscountry가 필요합니다.
string
Tax ID와 연결된 선택적 business 또는 legal name입니다. 유효한 tax_id와 함께 제공하면 invoice에 고객의 개인 이름 대신 표시됩니다.
integer
인도 카드의 INR e-mandate에 대해 merchant 수준의 mandate floor(INR paise 단위)를 재정의합니다.
object
checkout interface의 모양과 동작을 맞춤 설정합니다.
object
checkout session의 특정 기능과 동작을 구성합니다.
array
사용자 지정 form fields를 사용해 checkout 중 고객으로부터 추가 정보를 수집합니다. checkout session당 최대 5개의 사용자 지정 필드를 정의할 수 있습니다. 고객 응답은 webhook payload에 포함되며 API를 통해 사용할 수 있습니다.
사용자 지정 필드에 대한 고객 응답은 다음에 포함됩니다:
  • Webhooks: payment.succeeded, subscription.active 및 기타 관련 event payload에 custom_field_responses 배열이 포함됩니다.
  • API responses: Payment 및 subscription object에 custom_field_responses가 포함됩니다.
object
구독 제품이 포함된 checkout session을 위한 추가 구성입니다.

Usage Examples

다음은 다양한 비즈니스 시나리오에 맞는 checkout session 구성을 보여주는 10가지 종합 예시입니다:

1. 단일 제품의 간단한 Checkout

2. 여러 제품 장바구니

3. Trial Period가 포함된 구독

4. 사전 확정된 Checkout

confirmtrue로 설정되면 고객은 모든 확인 단계를 건너뛰고 checkout page로 바로 이동합니다.

5. 통화 재정의가 적용된 Checkout

billing_currency 재정의는 account settings에서 adaptive currency가 활성화된 경우에만 적용됩니다. adaptive currency가 비활성화되면 이 parameter는 적용되지 않습니다.

6. 재방문 고객을 위한 저장된 결제 수단

7. Tax ID 수집을 포함한 B2B Checkout

8. 누적 Discount Codes가 적용된 Dark Theme Checkout

9. 지역별 결제 수단(인도의 UPI)

UPI 구성 및 테스트에 대한 자세한 내용은 India Payment Methods 페이지를 참조하세요.

10. BNPL(Buy Now Pay Later) Checkout

BNPL 구성 및 테스트에 대한 자세한 내용은 Buy Now Pay Later (BNPL) 페이지를 참조하세요.

11. 즉시 Checkout을 위한 기존 결제 수단 사용

고객의 저장된 결제 수단을 사용해 즉시 처리되는 checkout session을 생성하고 결제 수단 수집을 건너뜁니다:
payment_method_id를 사용할 때는 confirmtrue로 설정하고 기존 customer_id를 제공해야 합니다. payment method는 결제 통화에 대한 사용 가능 여부가 검증됩니다. charge가 즉시 처리되므로 checkout_urlnull로 반환됩니다. 대신 반환된 payment_id를 사용하세요.
payment method는 고객에게 속해야 하며 결제 통화와 호환되어야 합니다. 이를 통해 재방문 고객에게 one-click purchase를 제공할 수 있습니다.
사용자 지정 slug를 사용해 공유 가능한 단축 결제 링크를 생성합니다:
Short links는 SMS, 이메일 또는 소셜 미디어 공유에 적합합니다. 긴 URL보다 기억하기 쉽고 고객 신뢰를 높일 수 있습니다.

13. 결제 성공 페이지를 건너뛰고 즉시 리디렉션

기본 성공 페이지를 거치지 않고 결제 완료 후 고객을 즉시 리디렉션합니다:
기본 결제 성공 페이지보다 더 나은 사용자 경험을 제공하는 사용자 지정 성공 페이지가 있는 경우 redirect_immediately: true를 사용하세요. mobile apps 및 embedded checkout flow에 특히 유용합니다.
redirect_immediately가 활성화되면 고객은 결제 완료 직후 기본 성공 페이지를 완전히 건너뛰고 return_url로 리디렉션됩니다.

14. 언어 강제 지정

고객 브라우저의 언어 감지를 재정의하여 checkout을 특정 언어로 표시합니다:
고객의 선호 언어를 알고 있는 경우(예: account settings에서 확인) 또는 특정 지역 시장을 대상으로 하는 경우 force_language를 사용하세요.
지원되는 언어: 아랍어(ar), 카탈루냐어(ca), 중국어(zh), 네덜란드어(nl), 영어(en), 프랑스어(fr), 독일어(de), 히브리어(he), 인도네시아어(id), 이탈리아어(it), 일본어(ja), 한국어(ko), 말레이어(ms), 폴란드어(pl), 포르투갈어(pt), 루마니아어(ro), 러시아어(ru), 스페인어(es), 스웨덴어(sv), 태국어(th), 터키어(tr)

15. 사용자 지정 필드 수집

사용자 지정 필드를 사용해 checkout 중 고객으로부터 추가 정보를 수집합니다:
사용자 지정 필드 응답은 webhook payload(payment.succeeded, subscription.active 등)에 자동으로 포함되며 API를 통해 가져올 수 있습니다. 이를 활용해 CRM을 보강하거나 onboarding flow를 트리거하고 고객 경험을 맞춤 설정하세요.
Available field types: text, number, email, url, date, dropdown, boolean

Checkout Sessions 미리 보기

checkout session을 생성하기 전에 세금, 할인 및 합계를 포함한 가격 내역을 미리 볼 수 있습니다. 고객이 checkout을 진행하기 전에 정확한 가격을 표시할 때 유용합니다.
장바구니에 구독 제품이 포함되면 preview response에 next_billing_date도 반환됩니다. 이는 예정된 청구일의 미리 보기이므로 구독이 생성되기 전에 표시할 수 있습니다. 현재 시점을 기준으로 계산되며, trial이 적용되면 now + trial period, 그렇지 않으면 now + one payment frequency입니다. 일회성 제품만 포함된 장바구니에서는 필드가 생략됩니다. 이는 preview 시점에 기준을 둔 추정치이며, 실제 next_billing_date는 구독이 활성화될 때 설정됩니다.
preview는 trial_period_days(유효 trial 기간, 무료 또는 유료) 및 trial_amount(할인 후 trial의 단위당 charge, 가격 통화의 최소 단위)도 반환합니다. trial_amountpaid trial에만 포함되며 무료 trial 또는 trial이 없으면 null입니다. 오늘 실제로 납부해야 하는 세금 포함 합계에는 current_breakup를 사용하세요.

Preview API Reference

전체 preview endpoint 문서 보기

Dynamic Links에서 Checkout Sessions로 이전

주요 차이점

이전에는 Dynamic Links로 payment link를 생성할 때 고객의 전체 청구지 주소를 제공해야 했습니다. Checkout Sessions에서는 더 이상 필요하지 않습니다. 보유한 정보만 전달하면 나머지는 자동으로 처리됩니다. 예를 들어:
  • 고객의 청구 국가만 알고 있다면 해당 정보만 제공하세요.
  • checkout flow가 결제 페이지로 이동하기 전에 누락된 세부정보를 자동으로 수집합니다.
  • 반대로 필요한 정보를 이미 모두 보유하고 결제 페이지로 바로 이동하려면 전체 데이터 세트를 전달하고 request body에 confirm=true를 포함하세요.

Migration Process

Dynamic Links에서 Checkout Sessions로의 마이그레이션은 간단합니다:
1

Update your integration

새 API 또는 SDK method를 사용하도록 통합을 업데이트합니다.
2

Adjust request payload

Checkout Sessions format에 맞게 request payload를 조정합니다.
3

That's it!

예. 측에서 추가로 처리하거나 특별한 마이그레이션 단계를 수행할 필요는 없습니다.

관련 API Reference

Create Checkout Session

사용 가능한 모든 parameters와 options를 포함한 checkout session 생성 API reference

Preview Checkout Session

session 생성 전 가격, 세금 및 합계를 미리 보기 위한 API reference
마지막 수정일 2026년 8월 6일