Comprehensive API documentation for managing subscriptions, payments, and related operations. These APIs allow you to programmatically manage subscription lifecycles, handle payments, configure products, and integrate subscription functionality into your applications.
- Generate customer portal access link by customer ID or email
External APIs (0.0.1)
- https://subscription-admin.appstle.com/api/external/v2/subscription-contract-details/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://subscription-admin.appstle.com/api/external/v2/subscription-contract-details/customers?name=string&email=string&activeMoreThanOneSubscription=false&page=0&size=10&sort=id%2Cdesc&api_key=string' \
-H 'X-API-Key: string'[ { "customerId": 0, "name": "string", "email": "string", "activeSubscriptions": 0, "nextOrderDate": "2019-08-24T14:15:22Z", "inActiveSubscriptions": 0, "lifetimeValue": 0.1 } ]
Request
Generates a secure, time-limited magic link that allows customers to access their subscription management portal. This endpoint supports lookup by either customer ID or email address, making it flexible for different integration scenarios.
Key Features:
- Dual Lookup: Find customer by ID or email
- Auto Customer Discovery: Automatically finds customer from email
- Secure Tokens: Encrypted tokens with 2-hour expiration
- Custom Domains: Supports shop's public domain
- Zero-Auth Access: Customers don't need passwords
Customer Lookup Logic:
Option 1: By Customer ID (Preferred)
GET /api/external/v2/manage-subscription-link?customerId=12345- Direct lookup by Shopify customer ID
- Fastest and most reliable method
- No ambiguity
Option 2: By Email
GET /api/external/v2/manage-subscription-link?emailId=customer@example.com- Searches for customer by email in subscription database
- Finds customer ID automatically
- If not found: Returns error
Validation Rules:
- Either
customerIdORemailIdmust be provided - Cannot provide both (customerId takes precedence)
- Email must match a customer with subscriptions
- Customer must belong to authenticated shop
Token Generation:
Token Contents:
- Encrypted customer ID
- Shop domain
- Generation timestamp
- Expiration time (2 hours)
Security Features:
- Cryptographically secure encryption
- Cannot be forged or modified
- Automatic expiration after 2 hours
- Single-use recommended (though not enforced)
- Tied to specific shop and customer
Generated URL Structure:
https://[shop-domain]/[manage-subscriptions-path]?token=[encrypted-token]Example URLs:
https://mystore.com/tools/recurring/customer_portal?token=eyJhbGc...
https://shop.myshopify.com/tools/recurring/customer_portal?token=eyJhbGc...Use Cases:
1. Email Campaigns:
- Add "Manage Subscription" button to transactional emails
- Include in billing reminder emails
- Send in order confirmation emails
- Add to marketing campaigns
2. Customer Support:
- Provide customers quick portal access
- Avoid "forgot password" issues
- Enable instant self-service
- Reduce support ticket volume
3. Post-Purchase Flows:
- Thank you page portal links
- First order welcome emails
- Onboarding email sequences
- Re-engagement campaigns
4. Account Management:
- SMS notifications with portal links
- Push notification deep links
- Customer dashboard integrations
- Third-party app integrations
Response Format:
{
"manageSubscriptionLink": "https://mystore.com/tools/recurring/customer_portal?token=eyJhbGciOiJIUzI1NiJ9...",
"tokenExpirationTime": "2024-03-15T14:30:00Z"
}Response Fields:
manageSubscriptionLink: Complete URL ready to usetokenExpirationTime: ISO 8601 timestamp when token expires
Integration Examples:
Email Template:
const response = await fetch(
`/api/external/v2/manage-subscription-link?emailId=${customerEmail}`,
{ headers: { 'X-API-Key': 'your-key' } }
).then(r => r.json());
const emailHtml = `
<p>Hi ${customerName},</p>
<p>Manage your subscription:</p>
<a href="${response.manageSubscriptionLink}">Manage Subscription</a>
<p><small>Link expires ${formatDate(response.tokenExpirationTime)}</small></p>
`;SMS Notification:
const { manageSubscriptionLink } = await getPortalLink(customerId);
const shortUrl = await shortenUrl(manageSubscriptionLink);
await sendSMS(customerPhone,
`Your subscription ships tomorrow! Manage it here: ${shortUrl}`
);Important Considerations:
Token Expiration:
- Tokens expire after exactly 2 hours
- Generate new token if expired
- Don't store tokens long-term
- Best practice: Generate on-demand
Domain Selection:
- Uses shop's
publicDomainif configured - Falls back to Shopify domain (.myshopify.com)
- Respects custom domain settings
- Maintains brand consistency
Customer Lookup Errors:
- Email not found: Returns 400 error
- Invalid customer ID: Returns error
- No parameters provided: Returns 400
- Both parameters provided: Uses customerId
Security Notes:
- Tokens cannot be used across different shops
- Cannot be used for different customers
- Tampering invalidates token
- Consider rate limiting token generation
Best Practices:
- Generate On-Demand: Create tokens when needed, not in advance
- Use HTTPS: Always serve links over HTTPS
- Show Expiry: Inform customers when link expires
- URL Shortening: Use URL shorteners for SMS/print materials
- Track Usage: Monitor which emails drive portal visits
- Prefer Customer ID: Use customerId when available for faster lookup
Comparison with /manage-subscription-link/{customerId}:
- This endpoint: Flexible lookup (ID or email)
- Path parameter version: Customer ID only
- Both generate identical tokens
- Use this for email-based flows
Authentication: Requires valid X-API-Key header
- https://subscription-admin.appstle.com/api/external/v2/manage-subscription-link
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://subscription-admin.appstle.com/api/external/v2/manage-subscription-link?api_key=string&customerId=0&emailId=string' \
-H 'X-API-Key: string'{ "manageSubscriptionLink": "https://mystore.com/tools/recurring/customer_portal?token=eyJhbGciOiJIUzI1NiJ9.eyJjdXN0b21lcklkIjoxMjM0NSwic2hvcCI6Im15c3RvcmUubXlzaG9waWZ5LmNvbSIsInRpbWVzdGFtcCI6MTcwOTU2MjAwMH0.abc123xyz", "tokenExpirationTime": "2024-03-15T14:30:00Z" }
Request
Generates a secure, time-limited link that allows customers to access their subscription management portal. This link provides customers with self-service capabilities to manage their subscriptions without requiring login credentials.
Key Features:
- Generates unique encrypted token for customer authentication
- Token expires after 2 hours for security
- Direct access to subscription management without password
- Uses store's custom domain when available
- Supports white-label customer portals
Token Security:
- Token contains encrypted customer ID, shop, and timestamp
- Cannot be reused after expiration
- Unique token generated for each request
- Cryptographically secure encryption
Customer Portal Access: Once customers click the link, they can:
- View all active subscriptions
- Update payment methods
- Change delivery addresses
- Modify product quantities
- Pause or cancel subscriptions
- Update delivery schedules
- Apply discount codes
- View order history
Use Cases:
- Email campaigns with 'Manage Subscription' CTAs
- Customer service providing quick access
- Post-purchase email flows
- Account management integrations
- Reducing support ticket volume
URL Structure: The generated URL follows this pattern: https://[store-domain]/[manage-subscription-path]?token=[encrypted-token]
Important Notes:
- Links are single-use and expire after 2 hours
- New link must be generated after expiration
- Customer ID must be valid and active
- Store must have customer portal configured
Authentication: Requires valid X-API-Key header
- https://subscription-admin.appstle.com/api/external/v2/manage-subscription-link/{customerId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://subscription-admin.appstle.com/api/external/v2/manage-subscription-link/987654321?api_key=string' \
-H 'X-API-Key: sk_live_1234567890abcdef'{ "manageSubscriptionLink": "https://store.example.com/pages/manage-subscriptions?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaG9wIjoic3RvcmUuZXhhbXBsZS5jb20iLCJjdXN0b21lcklkIjo5ODc2NTQzMjEsImNyZWF0ZWRBdCI6MTcxMDUxMjQwMDAwMH0.dGhpcyBpcyBhIHNhbXBsZSB0b2tlbiBmb3IgZG9jdW1lbnRhdGlvbg", "tokenExpirationTime": "2024-03-15T16:30:00.000Z", "expiresInMinutes": 120, "customerId": 987654321, "portalUrl": "https://store.example.com/pages/manage-subscriptions" }