post_subscription_buy
POST /subscriptions/buy
Purchase Subscription
Initiate a subscription purchase for the authenticated user's organization. For paid subscriptions, creates a Stripe checkout session for payment processing. For free subscriptions, immediately activates the subscription without payment processing. Allows subscription changes by automatically handling cancellation of existing subscriptions.
Parameters
subscriptionPeriodId
body
string
true
Unique identifier for the subscription period
TypeScript Client Library
public buySubscription = async (data: BuySubscriptionRequest): Promise<BuySubscriptionResponse> => {
return this.makeRequest<BuySubscriptionResponse>('subscriptions/buy', 'POST', data);
};Code Samples
curl -X POST https://backend.flashback.tech/subscriptions/buy \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}' \
-H 'Content-Type: application/json' \
-d '{
"subscriptionPeriodId": "123e4567-e89b-12d3-a456-426614174000"
}'POST https://backend.flashback.tech/subscriptions/buy HTTP/1.1
Host: localhost:3000
Accept: application/json
Authorization: Bearer {access-token}
Content-Type: application/json
{
"subscriptionPeriodId": "123e4567-e89b-12d3-a456-426614174000"
}const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}',
'Content-Type':'application/json'
};
const body = {
subscriptionPeriodId: '123e4567-e89b-12d3-a456-426614174000'
};
fetch('https://backend.flashback.tech/subscriptions/buy',
{
method: 'POST',
headers: headers,
body: JSON.stringify(body)
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});Example responses
200 Response (Paid Subscription)
200 Response (Free Subscription)
200 Response (Subscription Change)
400 Response (No Organization)
400 Response (Stripe ID Missing)
400 Response (Stripe Price Invalid)
404 Response
404 Response (Subscription Not Found)
404 Response (Subscription Not Active)
404 Response (Organization Not Found)
403 Response (Not Authorized)
409 Response (Already Active)
409 Response (Payment In Progress)
500 Response
Responses
Response Schema
Status Code 200
» success
boolean
false
none
Indicates if the request was successful
» checkoutUrl
string
false
none
Stripe hosted checkout URL for redirect (null for free subscriptions)
» sessionId
string
false
none
Stripe checkout session identifier or free payment ID
» isSubscriptionChange
boolean
false
none
Indicates if this is changing from an existing subscription
» previousSubscription
object
false
none
Details of the previous subscription (null if not a change)
»» id
string
false
none
Previous subscription identifier
»» name
string
false
none
Previous subscription name
» isFreeSubscription
boolean
false
none
Indicates if this is a free subscription (no payment required)
Status Code 400
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code (NO_ORGANIZATION, STRIPE_ID_MISSING, STRIPE_PRICE_INVALID)
» message
string
false
none
Human-readable error message
Status Code 403
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code (NOT_AUTHORIZED)
» message
string
false
none
Human-readable error message
Status Code 404
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code (USER_NOT_FOUND, SUBSCRIPTION_PERIOD_NOT_FOUND, SUBSCRIPTION_NOT_ACTIVE, ORG_NOT_FOUND)
» message
string
false
none
Human-readable error message
Status Code 409
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code (SUBSCRIPTION_ALREADY_ACTIVE, PAYMENT_IN_PROGRESS)
» message
string
false
none
Human-readable error message
Status Code 500
» success
boolean
false
none
Will be false for error responses
» error_code
string
false
none
Machine-readable error code
» message
string
false
none
Human-readable error message
Last updated
Was this helpful?