Overview
Subscriptions are read through connectors for recurring-billing, payments, membership, e-learning and email-marketing platforms. When a connector with the subscriptions capability is used to verify customers, the platform adds a My Subscriptionstool to your bot. Like every account tool it is verified-only: it runs after the customer has passed the one-time-code check, never before.
Read-only by design
The bot can tell a customer what plan they are on, whether it is active and when it renews. It cannot upgrade, pause, cancel or change a subscription in your system; none of the subscription connectors request write access.Questions it answers
| Customer asks | Field used | Example answer |
|---|---|---|
| “Which plan am I on?” | plan | “You are on the Pro Monthly plan.” |
| “Is my membership still active?” | status | “Your membership is active.” |
| “When will I next be charged?” | next_billing | “Your next payment is due on 1 November 2026.” |
| “When does my access end?” | expires / term_end where mapped | “Your current term ends on 31 March 2027.” |
| “How far through the course am I?” | progress / percent_complete (course platforms) | “You have completed 60% of the course.” |
The subscription shape
Every source is mapped to the same core fields; id and plan must be present for a row to count. Dates are normalised to YYYY-MM-DD, and amounts reported in minor units are converted to pounds.
| Field | Meaning | Example |
|---|---|---|
| id | Subscription, membership or enrolment reference | sub_1Nx… |
| plan | Plan, product, membership or course name | Pro Monthly |
| status | active, trialing, past_due, paused, cancelled … | active |
| next_billing | Next renewal or payment date | 2026-11-01 |
| amount | Recurring amount, where the vendor exposes it | 29.00 |
| since / start | When the subscription started | 2025-11-01 |
| expires / term_end | When access or the current term ends | 2027-03-31 |
Mailing-list platforms (Klaviyo, MailerLite, Kit, Omnisend and others) use the same shape to report which lists a customer is subscribed to, so the bot can answer “am I still on your newsletter?”. Each connector’s page lists exactly which fields it maps.
The subscriptions endpoint the bot calls
https://www.siluxchat.com/api/connect/{connection_id}/subscriptionsPer-connection key (platform-held)Request body: {"session_token": "…"}. Called by your bot after verification — you never call it yourself.
- 1The session token identifies the customer record found in your platform during verification.
- 2The platform reads that customer’s subscriptions from the vendor’s documented API with your encrypted credentials.
- 3Rows are mapped to the standard shape; any row naming a different customer’s email address is removed.
- 4The bot answers from the rows returned, and nothing else.
{
"success": true,
"subscriptions": [
{
"id": "sub_1Nx42eLkdIwHu7ix",
"plan": "Pro Monthly",
"status": "active",
"next_billing": "2026-11-01"
}
]
}| Case | Response |
|---|---|
| No subscriptions | {"success": true, "subscriptions": []} |
| The connected system does not hold subscriptions | {"success": true, "subscriptions": [], "message": "<Name> does not hold subscriptions"} |
| Vendor unreachable or key revoked | {"success": false, "system_error": true, "message": "We can't read subscriptions right now — our team has been told."} |
| Session expired | HTTP 401 — Session expired — please verify again. |
Plans from your own system
If you run your own billing platform, the plan and renewal date belong in your Account Connect /account-summary response — there is no separate subscriptions endpoint in Account Connect. The live demo shows the pattern: its account summary carries the plan, monthly price and contract end date.
# export SESSION=<the session_token returned by POST /verify-otp>
: "${SESSION:?export SESSION first}"
curl -s -X POST "https://www.siluxchat.com/api/account-connect-demo/v1/account-summary" \
-H "X-API-Key: demo-account-connect-key" \
-H "Content-Type: application/json" \
-d "{\"session_token\":\"$SESSION\"}"{
"success": true,
"account": {
"account_number": "C1002",
"status": "active",
"plan": "Unlimited Calls Bundle — 24 months",
"monthly_price": "£29.95",
"contract_end": "2028-01-15",
"balance_due": "£29.95",
"name": "Jane Demo"
}
}If a customer holds several plans
Return them as a short array inside the account object. Keep it compact — the bot reads roughly the first 2,000 characters.
{
"success": true,
"account": {
"account_number": "C1001",
"name": "Test Customer",
"subscriptions": [
{ "id": "S-11", "plan": "Business Line", "status": "active", "next_billing": "2026-10-01", "amount": "£19.95" },
{ "id": "S-12", "plan": "Broadband 500", "status": "active", "next_billing": "2026-10-01", "amount": "£32.00" }
]
}
}Subscription connectors
Payments
Subscriptions & billing
Several of these (Stripe, Chargebee, Recurly, Paddle and others) also read invoices, so one connection can answer both “when is my next payment?” and “has my last one gone through?”. See Billing & invoices.
Cancellations and changes
Because the bot cannot change a subscription, cancellation and plan-change requests follow your process:
- Put your cancellation terms — notice periods, cooling-off rights, early-termination charges — in your knowledge base, so the bot states them accurately and consistently.
- The bot reads the customer’s plan and term end so it can explain what applies to them, then raises a support ticket for your team to action the request.
- If your platform offers a self-service cancellation page, add the link to your knowledge base and the bot can point customers to it.
Never confirm a cancellation the bot has not made
The bot says a request has been passed to your team; it does not say a subscription has been cancelled. Your team — or your own self-service page — completes the change.Errors and edge cases
| Situation | What happens |
|---|---|
| Status is past_due or unpaid | The bot reports the status factually and follows your knowledge base for how to pay. |
| Cancelled subscription still has access until term end | Return (or map) the end date so the bot can explain when access stops. |
| Customer signed up with a different email | Verification fails to match; the bot asks for the email or mobile used at sign-up. |
| Vendor rate-limiting | Retried automatically, up to three attempts, honouring the vendor’s Retry-After. |
| Key revoked or OAuth sign-in expired | Connection marked failing; the account owner is emailed once by the daily health check; the bot says it cannot check right now. |
Full reference: Troubleshooting.
Get help
Using a membership or billing platform that is not listed? Email support@siluxcall.co.uk and our integration team will help you find the best route.
Need help with your integration?
Our integration team can review your endpoints, help you choose the right connector and check a test run with you. Tell us which system you use and what you would like the bot to answer.