Prerequisites
To integrate the Dodo Payments API, you’ll need:- A Dodo Payments merchant account
- API Credentials (API key and webhook secret key) from dashboard
Dashboard Setup
- Navigate to the Dodo Payments Dashboard
- Create a product (one-time payment or subscription)
-
Generate your API key:
- Go to Developer > API
- Detailed Guide
- Copy the API key the in env named DODO_PAYMENTS_API_KEY
-
Configure webhooks:
- Go to Developer > Webhooks
- Create a webhook URL for payment notifications
- Copy the webhook secret key in env
Integration
Payment Links
Choose the integration path that fits your use case:- Checkout Sessions (recommended): Best for most integrations. Create a session on your server and redirect customers to a secure, hosted checkout.
- Overlay Checkout (embedded): Use when you need an in-page experience that embeds the hosted checkout on your site.
- Static Payment Links: No-code, instantly shareable URLs for quick payment collection.
- Dynamic Payment Links: Programmatically created links. However, Checkout Sessions are recommended and provide more flexibility.
1. Checkout Sessions
Use Checkout Sessions to create a secure, hosted checkout experience for one-time payments or subscriptions. You create a session on your server, then redirect the customer to the returnedcheckout_url.
Checkout sessions are valid for 24 hours by default. If you pass
confirm=true, sessions are valid for 15 minutes and all required fields must be provided.1
Create a checkout session
Choose your preferred SDK or call the REST API.
- Node.js SDK
- Python SDK
- REST API
2
Redirect customer to checkout
After session creation, redirect to the
checkout_url to start the hosted flow.Prefer Checkout Sessions for the fastest, most reliable way to start taking payments. For advanced customization, see the full Checkout Sessions guide and the API Reference.
2. Overlay Checkout
For a seamless in-page checkout experience, explore our Overlay Checkout integration that allows customers to complete payments without leaving your website.3. Static Payment Links
Static payment links let you quickly accept payments by sharing a simple URL. You can customize the checkout experience by passing query parameters to pre-fill customer details, control form fields, and add custom metadata.1
Construct your payment link
Start with the base URL and append your product ID:
2
Add core parameters
Include essential query parameters:
-
Number of items to purchase.
-
URL to redirect after payment completion.
The redirect URL will include payment details as query parameters, for example:
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded3
Pre-fill customer information (optional)
Add customer or billing fields as query parameters to streamline checkout.
Supported Customer Fields
Supported Customer Fields
-
Customer’s full name (ignored if firstName or lastName is provided).
-
Customer’s first name.
-
Customer’s last name.
-
Customer’s email address.
-
Customer’s country.
-
Street address.
-
City.
-
State or province.
-
Postal/ZIP code.
-
true or false
4
Control form fields (optional)
You can disable specific fields to make them read-only for the customer. This is useful when you already have the customer’s details (e.g., logged-in users).
disable… flag to true:- Disable Flags Table
| Field | Disable Flag | Required Parameter |
|---|---|---|
| Full Name | disableFullName | fullName |
| First Name | disableFirstName | firstName |
| Last Name | disableLastName | lastName |
disableEmail | email | |
| Country | disableCountry | country |
| Address Line | disableAddressLine | addressLine |
| City | disableCity | city |
| State | disableState | state |
| ZIP Code | disableZipCode | zipCode |
Disabling fields helps prevent accidental changes and ensures data consistency.
5
Add advanced controls (optional)
-
Specifies the payment currency. Defaults to the billing country’s currency.
-
Show or hide the currency selector.
-
Amount in cents (for Pay What You Want pricing only).
-
Custom metadata fields (e.g.,
metadata_orderId=123).
6
Share the link
Send the completed payment link to your customer. When they visit, all query parameters are collected and stored with a session ID. The URL is then simplified to include just the session parameter (e.g.,
?session=sess_1a2b3c4d). The stored information persists through page refreshes and is accessible throughout the checkout process.The customer’s checkout experience is now streamlined and personalized based on your parameters.
4. Dynamic Payment Links
Prefer Checkout Sessions for most use cases, they offer more flexibility and control.
- One-time Payment Link API API reference
- Subscription Payment Link API API reference
Make sure you are passing
payment_link = true to get payment link - Node.js SDK
- Python SDK
- Go SDK
- Api Reference
After creating the payment link, redirect your customers to complete their payment.