In most cases, customers change their own subscription plans using Outseta's Profile Embed. However, there are times when you need to change a customer's plan administratively.
This guide covers three methods:
Method 1: Using the Outseta Dashboard
The simplest way to change an account's plan is through the Outseta dashboard interface. This method is perfect for customer service teams or account managers who need to make quick plan changes without technical implementation.
Steps to Change a Plan via Dashboard
- Navigate to CRM > Accounts in your Outseta dashboard
- Find and open the account you want to modify
- Locate the Subscription section on the account page
- Click the "Options" dropdown next to the subscription details
- Select "Change subscription" from the menu
- Follow the wizard to select the new plan, billing term, and review charges
Method 2: Using the Outseta REST API
For automated workflows, bulk operations, or custom integrations, the REST API provides programmatic control over subscription changes. This method requires more technical implementation but offers greater flexibility and automation capabilities.
Prerequisites
Before using the API, you'll need:
- API Key and Secret from Settings > Integrations > API Keys
- Account Uid of the customer
- Plan Uid of the target plan
Step 0: Get Current Subscription Information
First, retrieve the account's current subscription details to get the subscription uid needed for the update using the GET Account endpoint:
// Get account with current subscription details const accountResponse = await fetch( `https://<your-domain>.outseta.com/api/v1/crm/accounts/<account-uid>`, { headers: { Authorization: `Outseta <api-key>:<secret-key>`, 'Content-Type': 'application/json' } } ); const accountData = await accountResponse.json();
const currentSubscription = accountData.CurrentSubscription;
Step 1: Update the Subscription
Once you have the current subscription uid, use it to update the subscription with the new plan using the PUT Change subscription:
// Update subscription with new plan const subscriptionUpdate = { Account: { Uid: '<account-uid>' }, Plan: { Uid: '<new-plan-uid>' }, BillingRenewalTerm: currentSubscription.BillingRenewalTerm, // or 1 for Monthly, 2 for Annual }; const updateResponse = await fetch( `https://<your-domain>.outseta.com/api/v1/billing/subscriptions/${currentSubscription.Uid}/changesubscription`, { method: 'PUT', headers: { Authorization: `Outseta <api-key>:<secret-key>`, 'Content-Type': 'application/json' }, body: JSON.stringify(subscriptionUpdate) } ); const updatedSubscription = await updateResponse.json();
You can create a preview of the subscription change to show users what they'll be charged before committing to the change. See the Outseta API documentation for details on the preview endpoint.
Important API Notes
- Authentication format:
Outseta <api-key>:<secret-key>
- Billing renewal terms: 1 = Monthly, 2 = Annual
- Never expose API keys in client-side code
Method 3: Using Make (Integromat) with the Outseta App
Make provides a visual, no-code approach to automating subscription changes. This method is ideal for teams that want automation without custom development.
Prerequisites
Before configuring the Outseta modules, you'll need a trigger that provides:
- Account ID of the customer whose plan you want to change
- New Plan ID for the target subscription plan
This could be a webhook, manual trigger, or data from another service in your workflow.
Step 1: Outseta > Get Account
First time you add the
- Add the "Get Account" Outseta module to your scenario
- Configure the connection with your Outseta credentials
- Set the Account ID (can be from trigger data or manually specified)
Step 2: Outseta > Make API Call
- Add the "Make an API Call" module from the Outseta App
- Set the URL to
/billing/subscriptions/{{3.CurrentSubscription.Uid}}/changesubscription
- Configure method: PUT to update existing subscriptions
- Configure headers:
Content-Type
:application/json
- Set up the body with subscription update data, the
{{}}
denotes data from other steps, see screenshot:
{ "Account": { "Uid": "{{3.Uid}}" }, "Plan": { "Uid": "{{1.PlanUid}}" }, "BillingRenewalTerm": "{{3.CurrentSubscription.BillingRenewalTerm}}", }