api.botsubscription.com
GET /v1/endpoint
Authentication Bearer
Token
Stays in this tab. Required for this endpoint — the value below is what gets sent.
Request GET Response —
cURL Node Python PHP Go Ruby
Copy curl --request GET \
--url https://api.botsubscription.com/v1/endpoint \
--header 'Authorization: Bearer sk_live_•••'— — · — · —
Response will appear here.
Generate a checkout session for a user to purchase a subscription plan. The API creates a payment intent with your configured provider and returns details you can use to redirect the user to complete payment. Optionally apply coupon codes for discounts.
POST /v2/projects/ {project_id} /payment-requests CopyTry it Authorization Bearer Token Required
Path Parameters The unique identifier of the project.
Request Body The plan UUID to purchase. The payment is created for the authenticated caller.
Merchant account UUID to use. Required unless paying with account balance (provider: 'internal').
Override the charged amount as a decimal string; defaults to the plan price. When coupon_id is supplied this is the GROSS — do not pre-discount on the client.
Optional coupon UUID to apply. The provider charges the discounted NET; do not pre-discount amount.
Payment provider override. Pass 'internal' to pay with the customer's account balance.
curl -X POST "https://api.botsubscription.com/v2/projects/YOUR_PROJECT_ID/payment-requests" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "11111111-1111-1111-1111-111111111111",
"merchant_account_id": "22222222-2222-2222-2222-222222222222",
"coupon_id": "33333333-3333-3333-3333-333333333333"
}' const project_id = 'YOUR_PROJECT_ID' ;
const response = await fetch ( `https://api.botsubscription.com/v2/projects/${ project_id }/payment-requests` , {
method: 'POST' ,
headers: {
'Authorization' : 'Bearer YOUR_TOKEN' ,
'Content-Type' : 'application/json'
},
body: JSON . stringify ({
plan_id: '11111111-1111-1111-1111-111111111111' ,
merchant_account_id: '22222222-2222-2222-2222-222222222222' ,
coupon_id: '33333333-3333-3333-3333-333333333333'
})
});
const data = await response. json (); import requests
project_id = 'YOUR_PROJECT_ID'
response = requests.post(
f 'https://api.botsubscription.com/v2/projects/ { project_id } /payment-requests' ,
headers = {
'Authorization' : 'Bearer YOUR_TOKEN' ,
'Content-Type' : 'application/json'
},
json = {
'plan_id' : '11111111-1111-1111-1111-111111111111' ,
'merchant_account_id' : '22222222-2222-2222-2222-222222222222' ,
'coupon_id' : '33333333-3333-3333-3333-333333333333'
}
)
data = response.json() $project_id = 'YOUR_PROJECT_ID' ;
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL , "https://api.botsubscription.com/v2/projects/{ $project_id }/payment-requests" );
curl_setopt ($ch, CURLOPT_POST , true );
curl_setopt ($ch, CURLOPT_HTTPHEADER , [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json'
]);
curl_setopt ($ch, CURLOPT_POSTFIELDS , json_encode ([
'plan_id' => '11111111-1111-1111-1111-111111111111' ,
'merchant_account_id' => '22222222-2222-2222-2222-222222222222' ,
'coupon_id' => '33333333-3333-3333-3333-333333333333'
]));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER , true );
$response = curl_exec ($ch); Payment request created application/json
{
"ok" : true ,
"request_id" : "11111111-1111-1111-1111-111111111111" ,
"method" : "POST" ,
"path" : "/v2/projects/YOUR_PROJECT_ID/payment-requests" ,
"code" : 201 ,
"message" : "Payment request created successfully" ,
"data" : {
"payment_request_id" : "11111111-1111-1111-1111-111111111111" ,
"merchant_account_id" : "22222222-2222-2222-2222-222222222222" ,
"amount" : "23.99" ,
"currency" : "USD" ,
"status" : "pending" ,
"request_type" : "invoice" ,
"created_at" : "2024-12-15T10:30:00.000Z" ,
"user_id" : "123456789012345678" ,
"provider" : "stripe" ,
"provider_payment_id" : "pi_3NkQz2ABC123" ,
"settled_at" : null ,
"payment_request_data" : {}
}
} Invalid request application/json
{
"ok" : false ,
"request_id" : "11111111-1111-1111-1111-111111111111" ,
"method" : "POST" ,
"path" : "/v2/projects/YOUR_PROJECT_ID/payment-requests" ,
"code" : 400 ,
"error" : {
"error_code" : "BAD_REQUEST" ,
"message" : "Plan not found"
}
} User already subscribed application/json
{
"ok" : false ,
"request_id" : "11111111-1111-1111-1111-111111111111" ,
"method" : "POST" ,
"path" : "/v2/projects/YOUR_PROJECT_ID/payment-requests" ,
"code" : 409 ,
"error" : {
"error_code" : "CONFLICT" ,
"message" : "User already has an active subscription to this plan"
}
} Last updated: July 8, 2026
PreviousGet Payment Next List Settings