Introduction
SubscriptionManager allows you to retrieve subscription information from a user’s merchant accounts. There are two ways to retrieve subscriptions depending on your use case:- After provisioning your card to the merchant account with CardSwitcher: the user authenticates to the merchant account, their card is provisioned, and their subscription data is returned in the
CARD_UPDATEDwebhook event. - Without provisioning a card: the user authenticates to the merchant account and their subscription data is returned in the
NEW_SUBSCRIPTIONS_AVAILABLEwebhook event.
SubscriptionManager must be enabled for your account. Reach out to the Knot team to get started.
Getting Started
- CardSwitcher
- Without provisioning a card
If you have already integrated CardSwitcher, you can receive subscription data as part of the card switch flow without any additional client-side integration.
Receive Subscription IDs
When a card is successfully updated, theCARD_UPDATED webhook will include subscription IDs in data.subscriptions:Retrieve Full Subscription Details
Upon receiving the webhook, call Get Subscription By ID for each ID indata.subscriptions to retrieve the full subscription object.
Get Ongoing Updates
New subscriptions
To be notified when new subscriptions are detected on a merchant account, listen to theNEW_SUBSCRIPTIONS_AVAILABLE webhook. You will receive this event each time a new subscription is found on the merchant account.
Upon receiving the NEW_SUBSCRIPTIONS_AVAILABLE webhook, make a request to Get Subscription By ID for each ID in data.subscriptions, passing the ID received in the webhook as a path parameter.
Updated subscriptions
Receiving updated subscription information is entirely optional and may not be relevant for your use case.
UPDATED_SUBSCRIPTIONS_AVAILABLE webhook. You will receive this event for a merchant account each time there are existing subscriptions for which data has changed (e.g. a price change or status update).
Upon receiving the UPDATED_SUBSCRIPTIONS_AVAILABLE webhook, make a request to Get Subscription By ID for each ID in data.subscriptions, passing the ID received in the webhook as a path parameter.
Cancel a Subscription
Once a user has linked a merchant account, they can cancel a subscription or bill associated with that merchant account. Follow the steps below to determine whether cancellation is available and to execute it.Display the subscription in your app
Call Get Merchant Accounts with the user’s In the response, check that the merchant account’s
external_user_id and merchant_id to check whether cancellation is supported for that merchant account.connection.scopes array contains an object with "type": "cancel" and that the subscription’s is_cancellable field is true. Only when both conditions are met should you display a cancel button to the user.Call the Cancel Subscription endpoint
When the user taps the cancel button, call Cancel Subscription with the subscription ID to cancel the subscription or bill within seconds. Subscribe to the
CANCELLATION_SUCCEEDED and CANCELLATION_FAILED webhooks to be notified of the outcome.Handle disconnected merchant accounts
If for example a user changes their password to a merchant account, the Get Merchant Accounts endpoint willconnection.status: disconnected and you’ll be notified via the ACCOUNT_LOGIN_REQUIRED webhook event. When this occurs, subscription data will not be refreshed (e.g. in case there is a plan or status change) and you will not be able to make requests to Cancel Subscription without the user relinking their merchant account.
You’ll want to display a UX in your app to allow users to reconnect their account. For example, you may choose to display a button that says “Reconnect” or “Refresh” depending on the exact UX. When the user clicks the button, call Create Session with type: link and invoke the SDK to allow the user to reconnect their merchant account.
To test this behavior in development, use the Disconnect Account endpoint.
Testing
To test SubscriptionManager in thedevelopment environment, use one of the merchants below. The following is a subset of merchants available for testing - it is not the full list of supported merchants.
- Verizon
- T-Mobile
- Spectrum
- Xfinity Internet
- Xfinity Mobile
- Apple
- Netflix
- Disney+
- Hulu
- Spotify
CARD_UPDATED webhook will include subscription IDs that you can then use to test retrieval of the full subscription details.
Without provisioning a card: Create a session with type: link, initialize the SDK with a test merchant, and authenticate using testing credentials user_good/ pass_good. The NEW_SUBSCRIPTIONS_AVAILABLE webhook will fire and include subscription IDs that you can then use to test retrieval.