Subscriptions
Subscription Statuses
| Status | Description |
|---|---|
trial | Free trial period |
active | Paid and active |
expired | Past expiration date |
cancelled | Manually cancelled |
pending_payment | Awaiting payment confirmation |
Public Routes
GET /subscriptions/plans
List available subscription plans (public).
Auth: None
Response:
{
"success": true,
"data": {
"plans": [
{
"id": "uuid",
"name": "Starter",
"slug": "starter",
"description": "For small shops",
"price_per_month": 15000,
"duration_months": 1,
"included_stores": 1,
"extra_store_price_per_month": 12000,
"sort_order": 1
}
],
"count": 3
}
}GET /subscriptions/plans/:id
Get a single plan.
Auth: None
Owner Routes
GET /subscriptions/my-subscription
View own subscription details.
Auth: Required + Owner
GET /subscriptions/store-limit
Check store limit against current plan.
Auth: Required + Owner
Admin Routes
POST /subscriptions/plans
Create a pricing tier.
Auth: Required + Admin
Request Body:
{
"name": "Business",
"slug": "business",
"description": "For growing businesses",
"price_per_month": 45000,
"duration_months": 1,
"included_stores": 3,
"extra_store_price_per_month": 12000,
"sort_order": 2
}PATCH /subscriptions/plans/:id
Update a pricing tier.
Auth: Required + Admin
DELETE /subscriptions/plans/:id
Deactivate a plan.
Auth: Required + Admin
GET /subscriptions/all
List all subscriptions (admin view).
Auth: Required + Admin
Query: status, organisation, page, page_size
GET /subscriptions/all/:id
Get subscription detail (admin view).
Auth: Required + Admin
POST /subscriptions/all/:id/activate
Activate or update a subscription.
Auth: Required + Admin
Request Body:
{
"status": "active",
"payment_reference": "PAY-123",
"payment_date": "2024-01-15T00:00:00Z",
"amount_paid": 45000,
"notes": "January payment"
}PATCH /subscriptions/all/:id/extra-stores
Set extra store slots.
Auth: Required + Admin
Request Body:
{
"extra_stores": 2
}