POST /api/v1/apps/:appUuid/payment-providers/stripe/checkout-sessions
Creates a new checkout sessions resource.
This endpoint documentation is generated from the current Fastify route implementation and should be treated as the implementation-level contract for this version of the API.
Source route file:
src/api/routes/external/private/bearer/apps/payment-providers/stripe/checkout-sessions/post.ts
Request Method
POST
Base URL
https://api.userdocks.local:5000
Endpoint
/api/v1/apps/:appUuid/payment-providers/stripe/checkout-sessions
Path Variables
| Variable | Type | Required | Description |
|---|---|---|---|
appUuid | string | true | Path variable from route pattern. |
Query Parameters
No query parameters.
HTTP Headers
| Variable | Type | Required | Description |
|---|---|---|---|
Authorization | string | true | Bearer token in the form Bearer <jwt>. |
Content-Type | string | true | Use application/json for JSON request bodies. |
Request Body
Schema reference: createCheckoutSessionSchema
{
"tenantUuid": "11111111-1111-1111-1111-111111111111",
"priceId": "price_12345",
"taxRateId": "txr_12345",
"quantity": 1,
"mode": "subscription",
"billingAddressCollection": true,
"shippingAddressCollection": false,
"currency": "EUR",
"successUrl": "https://app.example.com/success",
"cancelUrl": "https://app.example.com/cancel",
"termsOfServiceUrl": "https://app.example.com/terms",
"collectTermsOfServiceConsent": true,
"isTaxIdCollectionEnabled": true,
"isTaxIdCollectionRequired": false
}
Successful Response
Success status code(s): 200.
{
"kind": "checkoutSessions",
"totalItems": 1,
"itemsLength": 1,
"items": [
{
"createdCheckoutSession": {
"id": 1,
"uuid": "csrow_11111111-1111-1111-1111-111111111111",
"appUuid": "app_11111111-1111-1111-1111-111111111111",
"paymentProviderUuid": "pp_11111111-1111-1111-1111-111111111111",
"sessionId": "cs_test_12345",
"nextActionUrl": "https://checkout.stripe.com/pay/cs_test_12345",
"userUuid": "user_11111111-1111-1111-1111-111111111111",
"tenantUuid": "tenant_11111111-1111-1111-1111-111111111111",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"deletedAt": null
},
"nextAction": {
"url": "https://checkout.stripe.com/pay/cs_test_12345"
}
}
]
}
Error Responses
| HTTP Status | Example Error |
|---|---|
401 | {"errors":[{"validation":"error","code":"[E4010]","message":"Unauthorized Token"}]} |
403 | {"errors":[{"validation":"error","code":"[E4030]","message":"App Is Disabled"}]} |
400 | {"errors":[{"validation":"error","code":"[E4000]","message":"Bad Request / validation error"}]} |
500 | {"errors":[{"validation":"error","code":"[E0000]","message":"Internal Server Error"}]} |
Example
const url = `https://api.userdocks.local:5000/api/v1/apps/appUuid-value/payment-providers/stripe/checkout-sessions`;
const response = await fetch(url, {
method: 'POST',
headers: {
Authorization: 'Bearer <jwt>',
'Content-Type': 'application/json',
},
body: '{"tenantUuid":"11111111-1111-1111-1111-111111111111","priceId":"price_12345","taxRateId":"txr_12345","quantity":1,"mode":"subscription","billingAddressCollection":true,"shippingAddressCollection":false,"currency":"EUR","successUrl":"https://app.example.com/success","cancelUrl":"https://app.example.com/cancel","collectTermsOfServiceConsent":true}',
});
const data = await response.json();
console.log(response.status, data);