Subscription Price Management
The Subscription Price Management feature defines the cost, billing rules, and integration details for each subscription package.
Admins can manage prices across PayOS (Android/Web) and IAP (App Store).
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
| Status | Enum | Yes | Active (available) or Inactive (hidden). |
| Code | String | Yes | Unique identifier for the price (e.g., PRO_MONTHLY). |
| Name | String | Yes | Display name (e.g., Pro Monthly Plan). |
| PayOS Description | Text | Optional | Payment description for PayOS integration. |
| Description | Text | Optional | Internal description of the price. |
| Price | Number | Yes | The cost of the subscription (in local currency). |
| Subscription Package | Select | Yes | Links price to a subscription package (Free, Pro, Premium). |
| Price Type | Enum | Yes | One-time or Recurring. |
| Billing Period | String | Optional | e.g., monthly, yearly. Required if recurring. |
| Trial Days | Number | Optional | Free trial days before billing starts. |
| Service Id | String | Optional | Reference ID for external services. |
IAP (In-App Purchase) Fields
For iOS / App Store integration:
| Field | Type | Notes |
|---|---|---|
| IAP Before | Number | Original (pre-discount) price. |
| IAP Price | Number | Current App Store price. |
| IAP Percent Difference | Number | Difference percentage between before & current price. |
| IAP Product Id | String | Unique product ID in App Store. |
| IAP Description | Text | Description shown in App Store. |
| IAP Discount Percentage | Number | Discount percentage applied. |
1. Create Subscription Price
Steps:
- Go to Backoffice → Subscription Prices.
- Click New Price.
- Fill in the required fields.
- Save to create.
Example Request (JSON):
{
"status": "active",
"code": "PRO_MONTHLY",
"name": "Pro Monthly Plan",
"payosDescription": "Pro Plan Subscription via PayOS",
"description": "Access premium courses and features monthly",
"price": 9.99,
"subscriptionPackage": "PRO",
"priceType": "recurring",
"billingPeriod": "monthly",
"trialDays": 7,
"serviceId": "svc-2025-pro-m1",
"iapBefore": 12.99,
"iapPrice": 9.99,
"iapPercentDifference": -23,
"iapProductId": "com.simzy.pro.monthly",
"iapDescription": "Monthly Pro Plan with trial",
"iapDiscountPercentage": 20
}
Response:
json
Copy code
{
"success": true,
"message": "Subscription price created successfully"
}
2. View Subscription Prices (Table)
Code Name Package Price Type Billing Status Actions
PRO_MONTHLY Pro Monthly Plan PRO 9.99 Recurring Monthly Active Edit / Delete
PRO_YEARLY Pro Yearly Plan PRO 99.99 Recurring Yearly Active Edit / Delete
FREE_TRIAL Free Trial Plan FREE 0.00 One-time — Inactive Edit / Delete
3. Update Subscription Price
Steps:
Go to Subscription Prices Table.
Find the price you want to update.
Click Edit ✏️.
Modify the fields.
Save changes.
Example Update Request:
json
Copy code
{
"priceId": "subp-101",
"status": "active",
"code": "PRO_YEARLY",
"name": "Pro Yearly Plan",
"price": 89.99,
"billingPeriod": "yearly",
"iapBefore": 120,
"iapPrice": 89.99,
"iapDiscountPercentage": 25
}
Response:
json
Copy code
{
"success": true,
"message": "Subscription price updated successfully"
}
4. Delete Subscription Price
Steps:
Go to Subscription Prices Table.
Click Delete 🗑️.
Confirm deletion in the dialog.
Delete Request Example:
json
Copy code
{
"priceId": "subp-101",
"action": "delete"
}
Response:
json
Copy code
{
"success": true,
"message": "Subscription price deleted successfully"
}
⚠️ Deletion is permanent. If unsure, use Inactive status instead.
Best Practices
Use recurring billing for sustainable revenue (monthly/yearly).
Always set trial days for first-time users to improve conversion.
Keep PayOS and IAP descriptions consistent across platforms.
Use Inactive status instead of deletion to avoid breaking linked subscriptions.
Validate IAP product IDs with App Store before publishing.