Retrieves all available billing frequency options configured for specific Shopify selling plan(s). Returns the complete set of billing intervals that customers can choose from, including frequency, interval type, and any associated discounts or pricing policies.
What This Endpoint Does: Queries the subscription group plans database to find all frequency configurations associated with given selling plan ID(s). This is essential for building subscription frequency selectors in customer portals or during subscription modifications.
Key Concepts:
Selling Plans:
Frequency Info:
Request Parameters:
sellingPlanIds (required):
"123456,123457,123458"Lookup Process:
Response Data Included:
For Each Frequency Option:
Pricing Policy Details:
Use Cases:
1. Frequency Selection UI:
2. Subscription Modification:
3. Product Page:
4. Customer Portal:
Response Format:
[
{
"id": "123456",
"frequencyName": "Every 2 Weeks",
"interval": "WEEK",
"intervalCount": 2,
"deliveryInterval": "WEEK",
"deliveryIntervalCount": 2,
"pricingPolicy": {
"adjustmentType": "PERCENTAGE",
"adjustmentValue": "10.0"
}
},
{
"id": "123457",
"frequencyName": "Monthly",
"interval": "MONTH",
"intervalCount": 1,
"deliveryInterval": "MONTH",
"deliveryIntervalCount": 1,
"pricingPolicy": {
"adjustmentType": "PERCENTAGE",
"adjustmentValue": "15.0"
}
}
]
Integration Example:
Customer Portal - Frequency Selector:
// Get selling plan from current subscription
const currentSellingPlanId = subscription.sellingPlanId;
// Fetch available frequencies
const frequencies = await fetch(
`/api/external/v2/subscription-contract-details/billing-interval?sellingPlanIds=${currentSellingPlanId}`,
{ headers: { 'X-API-Key': 'your-key' } }
).then(r => r.json());
// Build selector
const selector = frequencies.map(freq => `
<option value="${freq.id}"
${freq.id === currentSellingPlanId ? 'selected' : ''}>
${freq.frequencyName} - Save ${freq.pricingPolicy.adjustmentValue}%
</option>
`).join('');
document.querySelector('#frequency-select').innerHTML = selector;
Important Considerations:
Data Source:
Multiple Selling Plans:
Empty Results:
[] if no plans foundBest Practices:
Authentication: Requires valid X-API-Key header
curl --request GET \
--url https://subscription-admin.appstle.com/api/external/v2/subscription-contract-details/billing-interval[
{
"frequencyCount": 123,
"billingFrequencyCount": 123,
"payAsYouGoPrepaidBillingFrequencyCount": 123,
"frequencyName": "<string>",
"frequencyDescription": "<string>",
"discountOffer": 123,
"discountOffer2": 123,
"afterCycle1": 123,
"afterCycle2": 123,
"discountEnabled": true,
"discountEnabled2": true,
"discountEnabledMasked": true,
"discountEnabled2Masked": true,
"id": "<string>",
"specificDayValue": 123,
"specificMonthValue": 123,
"specificDayEnabled": true,
"maxCycles": 123,
"minCycles": 123,
"cutOff": 123,
"prepaidFlag": "<string>",
"idNew": "<string>",
"freeTrialEnabled": true,
"freeTrialCount": 123,
"memberOnly": true,
"nonMemberOnly": true,
"memberInclusiveTags": "<string>",
"memberExclusiveTags": "<string>",
"formFieldJson": "<string>",
"upcomingOrderEmailBuffer": 123,
"frequencySequence": 123,
"groupName": "<string>",
"groupId": 123,
"repeatingCycle": true,
"repeatingNumberOfCycle": 123,
"keepOriginalNextBillingDateAfterTrial": true,
"defaultSelectedPlan": true,
"frequencyNameTranslations": {},
"appstleCycles": [
{
"afterCycle": 3,
"discountType": "PERCENTAGE",
"value": 10,
"freeVariantId": 42549172011164,
"freeProductHandle": "free-gift-product",
"repeatingCycle": true,
"repeatingNumberOfCycle": 6,
"preventDuplicationFreeProduct": true
}
]
}
]Documentation Index
Fetch the complete documentation index at: https://appstleinc-aeca3e0a.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
API Key (Deprecated - Use Header X-API-Key instead)
Selling Plan ID
Successfully retrieved billing intervals (may be empty array)
DAY, WEEK, MONTH, YEAR DAY, WEEK, MONTH, YEAR PERCENTAGE, FIXED, PRICE PERCENTAGE, FIXED, PRICE ON_PURCHASE_DAY, ON_SPECIFIC_DAY PAY_AS_YOU_GO, PREPAID, ADVANCED_PREPAID, PAY_AS_YOU_GO_PREPAID ASAP, NEXT, $UNKNOWN DAY, WEEK, MONTH, YEAR Show child attributes
ON_FULFILLMENT, ON_SALE, $UNKNOWN Show child attributes
curl --request GET \
--url https://subscription-admin.appstle.com/api/external/v2/subscription-contract-details/billing-interval[
{
"frequencyCount": 123,
"billingFrequencyCount": 123,
"payAsYouGoPrepaidBillingFrequencyCount": 123,
"frequencyName": "<string>",
"frequencyDescription": "<string>",
"discountOffer": 123,
"discountOffer2": 123,
"afterCycle1": 123,
"afterCycle2": 123,
"discountEnabled": true,
"discountEnabled2": true,
"discountEnabledMasked": true,
"discountEnabled2Masked": true,
"id": "<string>",
"specificDayValue": 123,
"specificMonthValue": 123,
"specificDayEnabled": true,
"maxCycles": 123,
"minCycles": 123,
"cutOff": 123,
"prepaidFlag": "<string>",
"idNew": "<string>",
"freeTrialEnabled": true,
"freeTrialCount": 123,
"memberOnly": true,
"nonMemberOnly": true,
"memberInclusiveTags": "<string>",
"memberExclusiveTags": "<string>",
"formFieldJson": "<string>",
"upcomingOrderEmailBuffer": 123,
"frequencySequence": 123,
"groupName": "<string>",
"groupId": 123,
"repeatingCycle": true,
"repeatingNumberOfCycle": 123,
"keepOriginalNextBillingDateAfterTrial": true,
"defaultSelectedPlan": true,
"frequencyNameTranslations": {},
"appstleCycles": [
{
"afterCycle": 3,
"discountType": "PERCENTAGE",
"value": 10,
"freeVariantId": 42549172011164,
"freeProductHandle": "free-gift-product",
"repeatingCycle": true,
"repeatingNumberOfCycle": 6,
"preventDuplicationFreeProduct": true
}
]
}
]