Subscribe to Plan
curl --request POST \
--url https://api.example.com/api/billing/subscribe \
--header 'Content-Type: application/json' \
--header 'X-Organization-Id: <x-organization-id>' \
--data '
{
"plan": "<string>"
}
'import requests
url = "https://api.example.com/api/billing/subscribe"
payload = { "plan": "<string>" }
headers = {
"X-Organization-Id": "<x-organization-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Organization-Id': '<x-organization-id>', 'Content-Type': 'application/json'},
body: JSON.stringify({plan: '<string>'})
};
fetch('https://api.example.com/api/billing/subscribe', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/billing/subscribe",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'plan' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Organization-Id: <x-organization-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/billing/subscribe"
payload := strings.NewReader("{\n \"plan\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Organization-Id", "<x-organization-id>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/billing/subscribe")
.header("X-Organization-Id", "<x-organization-id>")
.header("Content-Type", "application/json")
.body("{\n \"plan\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/billing/subscribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Organization-Id"] = '<x-organization-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"checkout_url": "https://checkout.dodopayments.com/pay/cs_def456",
"session_id": "cs_def456",
"plan": "pro",
"price": 79.0
}
Billing
Subscribe to Plan
POST
/
api
/
billing
/
subscribe
Subscribe to Plan
curl --request POST \
--url https://api.example.com/api/billing/subscribe \
--header 'Content-Type: application/json' \
--header 'X-Organization-Id: <x-organization-id>' \
--data '
{
"plan": "<string>"
}
'import requests
url = "https://api.example.com/api/billing/subscribe"
payload = { "plan": "<string>" }
headers = {
"X-Organization-Id": "<x-organization-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Organization-Id': '<x-organization-id>', 'Content-Type': 'application/json'},
body: JSON.stringify({plan: '<string>'})
};
fetch('https://api.example.com/api/billing/subscribe', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/billing/subscribe",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'plan' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Organization-Id: <x-organization-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/billing/subscribe"
payload := strings.NewReader("{\n \"plan\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Organization-Id", "<x-organization-id>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/billing/subscribe")
.header("X-Organization-Id", "<x-organization-id>")
.header("Content-Type", "application/json")
.body("{\n \"plan\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/billing/subscribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Organization-Id"] = '<x-organization-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"checkout_url": "https://checkout.dodopayments.com/pay/cs_def456",
"session_id": "cs_def456",
"plan": "pro",
"price": 79.0
}
Initiate a subscription upgrade or creation for your organization. This generates a checkout session for a recurring billing plan.
Request
string
required
The unique identifier of the organization.
string
required
The name of the target plan. Valid options include
pro and enterprise. Note that upgrading to enterprise requires contacting the sales team.Response
string
The URL to redirect the user to complete their subscription via Dodo Payments.
string
The unique identifier of the checkout session.
string
The plan name requested.
number
The monthly price of the requested plan.
{
"checkout_url": "https://checkout.dodopayments.com/pay/cs_def456",
"session_id": "cs_def456",
"plan": "pro",
"price": 79.0
}
⌘I