Billing Portal
curl --request GET \
--url https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal', 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.bunship.com/api/v1/organizations/{orgId}/billing/portal",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"url": "https://billing.stripe.com/p/session/bps_abc123..."
}
}
Billing
Billing Portal
Get a Stripe Customer Portal URL for self-service billing management
GET
/
api
/
v1
/
organizations
/
{orgId}
/
billing
/
portal
Billing Portal
curl --request GET \
--url https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal', 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.bunship.com/api/v1/organizations/{orgId}/billing/portal",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bunship.com/api/v1/organizations/{orgId}/billing/portal")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"url": "https://billing.stripe.com/p/session/bps_abc123..."
}
}
Creates a Stripe Customer Portal session. The portal allows users to manage their subscription, update payment methods, view invoices, and cancel their plan.
Auth
Requires a valid Bearer token. User must be a member of the organization.
Path Parameters
Organization identifier.
Query Parameters
URL to redirect the user back to after leaving the portal. Must match the configured application
origin.
Response
Always
true on success.{
"success": true,
"data": {
"url": "https://billing.stripe.com/p/session/bps_abc123..."
}
}
Example
curl "https://api.bunship.com/api/v1/organizations/org_cld2abc123def456/billing/portal?return_url=https://app.bunship.com/billing" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
⌘I

