curl -X POST https://api.llmgenerator.com/api/v1/subscriptions/portal \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"returnUrl": "https://yourapp.com/settings/billing"
}'
const response = await fetch('https://api.llmgenerator.com/api/v1/subscriptions/portal', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
returnUrl: 'https://yourapp.com/settings/billing'
})
});
const data = await response.json();
// Redirect user to Stripe portal
window.location.href = data.url;
import requests
response = requests.post(
'https://api.llmgenerator.com/api/v1/subscriptions/portal',
headers={
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
json={
'returnUrl': 'https://yourapp.com/settings/billing'
}
)
data = response.json()
print(f"Redirect to: {data['url']}")
{
"url": "https://billing.stripe.com/p/session/test_a1b2c3d4..."
}
Subscriptions
Create Billing Portal Session
Create a Stripe billing portal session for managing subscription and payment methods.
POST
/
subscriptions
/
portal
curl -X POST https://api.llmgenerator.com/api/v1/subscriptions/portal \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"returnUrl": "https://yourapp.com/settings/billing"
}'
const response = await fetch('https://api.llmgenerator.com/api/v1/subscriptions/portal', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
returnUrl: 'https://yourapp.com/settings/billing'
})
});
const data = await response.json();
// Redirect user to Stripe portal
window.location.href = data.url;
import requests
response = requests.post(
'https://api.llmgenerator.com/api/v1/subscriptions/portal',
headers={
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
json={
'returnUrl': 'https://yourapp.com/settings/billing'
}
)
data = response.json()
print(f"Redirect to: {data['url']}")
{
"url": "https://billing.stripe.com/p/session/test_a1b2c3d4..."
}
Overview
Creates a Stripe Customer Portal session where users can:- Update payment methods
- View billing history
- Change subscription plans
- Download invoices
- Cancel subscription
For third-party integrations: Use
POST /subscriptions/portal/api with API Key authentication instead.Authentication
string
required
Your JWT access token. Format:
Bearer YOUR_ACCESS_TOKENRequest Body
string
URL to redirect to when user exits the portal. Defaults to application dashboard.
curl -X POST https://api.llmgenerator.com/api/v1/subscriptions/portal \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"returnUrl": "https://yourapp.com/settings/billing"
}'
const response = await fetch('https://api.llmgenerator.com/api/v1/subscriptions/portal', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
returnUrl: 'https://yourapp.com/settings/billing'
})
});
const data = await response.json();
// Redirect user to Stripe portal
window.location.href = data.url;
import requests
response = requests.post(
'https://api.llmgenerator.com/api/v1/subscriptions/portal',
headers={
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
json={
'returnUrl': 'https://yourapp.com/settings/billing'
}
)
data = response.json()
print(f"Redirect to: {data['url']}")
{
"url": "https://billing.stripe.com/p/session/test_a1b2c3d4..."
}
Response Fields
string
URL to redirect the user to. This is a Stripe-hosted billing portal.
Portal Capabilities
The Stripe Customer Portal allows users to:| Feature | Description |
|---|---|
| Payment Methods | Add, update, or remove credit cards |
| Invoices | View and download past invoices |
| Plan Changes | Upgrade or downgrade subscription |
| Cancellation | Cancel subscription |
| Billing History | View all past transactions |
Error Responses
Bad Request - No billing account found. User must make a purchase first.
Unauthorized - Invalid or missing token.
The billing portal is only available for users who have previously made a purchase or have an active subscription. New users should use the checkout endpoint instead.
POST /subscriptions/portal/api
Creates a Stripe Customer Portal session using API Key authentication. Ideal for third-party integrations.Authentication
Requires API Key authentication. Include your API key in theAuthorization header:
Authorization: Bearer llmgen_your_api_key_here
Request Body
Same as/subscriptions/portal above.
Response
Same as/subscriptions/portal above.
curl -X POST https://api.llmgenerator.com/api/v1/subscriptions/portal/api \
-H "Authorization: Bearer llmgen_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"returnUrl": "https://yourapp.com/settings/billing"
}'
const response = await fetch('https://api.llmgenerator.com/api/v1/subscriptions/portal/api', {
method: 'POST',
headers: {
'Authorization': 'Bearer llmgen_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
returnUrl: 'https://yourapp.com/settings/billing'
})
});
const data = await response.json();
// Redirect user to Stripe portal
window.location.href = data.url;
import requests
response = requests.post(
'https://api.llmgenerator.com/api/v1/subscriptions/portal/api',
headers={
'Authorization': 'Bearer llmgen_your_api_key_here',
'Content-Type': 'application/json'
},
json={
'returnUrl': 'https://yourapp.com/settings/billing'
}
)
data = response.json()
print(f"Redirect to: {data['url']}")
Best Practices
- Link in settings: Add a “Manage Billing” button in your app’s settings page
- After checkout: Redirect users to the portal after subscription purchase
- Support: Provide portal access as a self-service option for billing issues
Was this page helpful?
⌘I