Skip to content
Try Free →

The subscription_manager skill

Last updated: · 3 min read

What the skill does

The skill has exactly three actions:

  • Upgrade or downgrade a Stripe subscription to a target Stripe Price ID.
  • Refund a Stripe charge, given the charge ID and an amount.

Each call needs the customer's email, and the bot must give a short reason for the action.

It has no status lookup. It looks up the customer's subscription only as a step inside one of the three actions, and it doesn't return plan, renewal date or invoice details to the bot. There is also no read-only mode and no cancel action. For "what plan am I on?"-style questions, index your own billing FAQ content or enable escalate_to_human.

The skill is on Business and above, disabled by default, and needs the Stripe integration connected. Business+

How a confirmed action runs

The bot shows the visitor a confirm card first. AskVault records that it did, and runs the action only when a later message from the visitor, within 10 minutes of the card, is a short yes for the same request in the same conversation. A confirmation the AI writes for itself is ignored. Upgrades and downgrades then go to Stripe. Refunds have a second blocker: the written-policy check can't yet read a refund ceiling from your policy, so every refund is still declined. See the Stripe use cases page for the full detail.

Customer identification

The skill only acts for a visitor your site has signed in. Your server signs the customer's email as the user_id with your identity verification secret, and the widget passes both. The skill acts only when the email in the request is that signed email; it then looks the email up in Stripe, and if no Stripe customer has it, does nothing.

An email the visitor merely types, or a signed user_id that is not an email, is refused before Stripe is ever called, and the bot is told to offer a teammate instead. There's no email-code verification step.

Checks on each action

These are applied by AskVault's code:

  • Signed email. Every action is refused unless the email is the one your site signed (see above).
  • Written policy. Every refund and every downgrade needs a matching written policy in your knowledge base; no match, no action. Upgrades have no policy check.
  • Daily refund cap. A fixed ceiling of 10,000 (in the charge's currency units) per workspace across a rolling 24 hours. Not adjustable from the dashboard.
  • Idempotency. An identical request within 24 hours returns the earlier result instead of running twice.

Visitor confirmation. The action runs only after the visitor's own yes to the confirm card (see above); the AI's own "confirmed" marker is ignored.

There are no settings screens for response fields, trigger phrases, proactive alerts, write permissions, display currency or an audit log for this skill.

Common pitfalls

Bot says it couldn't find the account. No Stripe customer has the email given in the conversation, or Stripe returned an error during the lookup. The skill reports both the same way.

Bot offers a teammate instead of acting. The visitor isn't signed in with identity verification, or your site signs an internal user ID rather than the email. Sign the customer's email as the user_id.

A refund doesn't go through. Expected today: the policy check can't yet read a refund ceiling.

An upgrade or downgrade shows the confirm card again. The visitor's yes came after 10 minutes, or the request changed after the card; the bot asks again.

FAQ

Can the bot cancel a subscription?

No. The skill has no cancel action. Enable escalate_to_human if you want cancellation requests routed to your team.

Can the bot upgrade a customer's plan?

Yes, once the signed-in visitor confirms the bot's card with a yes. See How a confirmed action runs.

Does this work with Razorpay subscriptions?

No, Stripe only. For Razorpay, use the custom_webhook skill to call your backend that bridges to Razorpay.

Will the bot reveal billing info to non-verified visitors?

The skill doesn't return subscription details to the bot at all, and it refuses to act for any visitor whose email your site didn't sign.

Was this page helpful?