Subscriptions

“When is my next payment?”, “which plan am I on?” and “is my membership still active?” — answered from the billing, membership or course platform you already run. This guide explains what subscription data the bot reads for a verified customer, where it comes from, and how to handle cancellation requests responsibly.
7 min readhttps://www.siluxchat.comcurl · Python · PHP · Node.js

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 asksField usedExample 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.

FieldMeaningExample
idSubscription, membership or enrolment referencesub_1Nx…
planPlan, product, membership or course namePro Monthly
statusactive, trialing, past_due, paused, cancelled …active
next_billingNext renewal or payment date2026-11-01
amountRecurring amount, where the vendor exposes it29.00
since / startWhen the subscription started2025-11-01
expires / term_endWhen access or the current term ends2027-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

POSThttps://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.

  1. 1
    The session token identifies the customer record found in your platform during verification.
  2. 2
    The platform reads that customer’s subscriptions from the vendor’s documented API with your encrypted credentials.
  3. 3
    Rows are mapped to the standard shape; any row naming a different customer’s email address is removed.
  4. 4
    The bot answers from the rows returned, and nothing else.
Response — one active subscription
{
  "success": true,
  "subscriptions": [
    {
      "id": "sub_1Nx42eLkdIwHu7ix",
      "plan": "Pro Monthly",
      "status": "active",
      "next_billing": "2026-11-01"
    }
  ]
}
CaseResponse
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 expiredHTTP 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.

Account summary with plan details (live demo)
# 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\"}"
Response — Jane Demo
{
  "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.

account-summary with several subscriptions
{
  "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

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

SituationWhat happens
Status is past_due or unpaidThe bot reports the status factually and follows your knowledge base for how to pay.
Cancelled subscription still has access until term endReturn (or map) the end date so the bot can explain when access stops.
Customer signed up with a different emailVerification fails to match; the bot asks for the email or mobile used at sign-up.
Vendor rate-limitingRetried automatically, up to three attempts, honouring the vendor’s Retry-After.
Key revoked or OAuth sign-in expiredConnection 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.

support@siluxcall.co.uk