Create checkout session
curl --request POST \
--url https://api.truthlocks.com/v1/billing/checkout \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"plan": "<string>",
"success_url": "<string>",
"cancel_url": "<string>"
}
'import requests
url = "https://api.truthlocks.com/v1/billing/checkout"
payload = {
"plan": "<string>",
"success_url": "<string>",
"cancel_url": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({plan: '<string>', success_url: '<string>', cancel_url: '<string>'})
};
fetch('https://api.truthlocks.com/v1/billing/checkout', 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.truthlocks.com/v1/billing/checkout",
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>',
'success_url' => '<string>',
'cancel_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.truthlocks.com/v1/billing/checkout"
payload := strings.NewReader("{\n \"plan\": \"<string>\",\n \"success_url\": \"<string>\",\n \"cancel_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.truthlocks.com/v1/billing/checkout")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"plan\": \"<string>\",\n \"success_url\": \"<string>\",\n \"cancel_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/billing/checkout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan\": \"<string>\",\n \"success_url\": \"<string>\",\n \"cancel_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"checkout_url": "<string>",
"session_id": "<string>",
"expires_at": "<string>"
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}Billing
Create checkout session
Initiate a payment session to upgrade or change your plan.
POST
/
v1
/
billing
/
checkout
Create checkout session
curl --request POST \
--url https://api.truthlocks.com/v1/billing/checkout \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"plan": "<string>",
"success_url": "<string>",
"cancel_url": "<string>"
}
'import requests
url = "https://api.truthlocks.com/v1/billing/checkout"
payload = {
"plan": "<string>",
"success_url": "<string>",
"cancel_url": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({plan: '<string>', success_url: '<string>', cancel_url: '<string>'})
};
fetch('https://api.truthlocks.com/v1/billing/checkout', 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.truthlocks.com/v1/billing/checkout",
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>',
'success_url' => '<string>',
'cancel_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.truthlocks.com/v1/billing/checkout"
payload := strings.NewReader("{\n \"plan\": \"<string>\",\n \"success_url\": \"<string>\",\n \"cancel_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.truthlocks.com/v1/billing/checkout")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"plan\": \"<string>\",\n \"success_url\": \"<string>\",\n \"cancel_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/billing/checkout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan\": \"<string>\",\n \"success_url\": \"<string>\",\n \"cancel_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"checkout_url": "<string>",
"session_id": "<string>",
"expires_at": "<string>"
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}POST /v1/billing/checkout
Request body
string
required
The plan to subscribe to:
STARTER, BUSINESS, or ENTERPRISE.string
Payment provider to use (
stripe, paystack, or flutterwave). If omitted, the provider is selected automatically based on your region. See billing configuration to check your default provider.string
required
URL to redirect the user to after successful payment.
string
required
URL to redirect the user to if they cancel the checkout.
Response
string
The hosted checkout page URL. Redirect the user to this URL to complete payment.
Authorizations
API key for machine-to-machine authentication
Body
application/json

