Changelog

Welcome to the changelog section of Freemius, here you'll find our weekly technical update notes. You can subscribe to all posts via Newsletter or follow us on Twitter to stay updated.

New API Endpoint to Generate License Upgrade Links

We’ve rolled out a new API endpoint that allows you to automatically generate Freemius Checkout links for upgrading a license.

While our Customer Portal already handles license upgrades internally, this endpoint is especially useful for SaaS makers who want to implement their own billing experience.

You can read more about the endpoint in our documentation. In a nutshell, from your product’s scope, make a request like:

POST /v1/products/{product_id}/licenses/{license_id}/checkout/link.json HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer 123
Host: api.freemius.com
Content-Length: 127

{
  "plan_id": "planID",
  "billing_cycle": "annual",
  "quota": 1,
  "currency": "usd"
}

The response will include:

  1. url – The URL of the Hosted Checkout
  2. settings – Configuration parameters you can pass directly to the Checkout JS SDK
  3. expires – The datetime when the URL will expire

We hope this new endpoint, along with Checkout Redirection and Webhooks, helps streamline your SaaS integration. As we continue improving the SaaS developer experience, please reach out via support with any questions or feature suggestions.

New Feature: Redirect After Successful Checkout

We released a new feature this week for our Hosted Checkout — you can now configure it to redirect to a specific page after a successful purchase. The redirected page will automatically receive purchase-related data.

This is especially helpful for SaaS makers who want to use Hosted Checkout directly within their software, email marketing, social platforms, etc.

Here’s how it works:

  • You share Freemius Hosted Checkout links.
  • Your customers make a purchase.
  • Our Checkout redirects back to your SaaS website.
  • You post-process and grant access to users immediately.

Currently, this feature is available for SaaS-type products only. To enable it, go to Plans → Customization and toggle the switch to get started. To learn more about how to use this feature and verify the purchase data please read our documentation.

Enable Checkout Success Redirection from Freemius Developer Dashboard

If you are not using Freemius for SaaS, but using for other products like WordPress plugins/themes or Apps, and if you have a valid use-case of this feature, please let us know through support and we might consider enabling this for other product types too.

New Feature: Reverse Invoices for your Payouts

At Freemius, we’re committed to simplifying all aspects of your compliance work. In that spirit, we’re excited to introduce a new feature: we now generate Reverse Invoices on your behalf for your payouts.

Getting paid through Freemius is easy — whether it’s via PayPal, wire transfer, or Payoneer. On the Earnings page, you can view your monthly payout amounts.

Now, on the same Earnings page, you’ll find the option to download a Reverse Invoice for each payout.

Freemius Developer Dashboard Earnings page

These invoices are issued to Freemius on your behalf. To generate them, you’ll need to ensure your billing information is properly set. If you haven’t done that yet, now is the perfect time.

Freemius Reverse Invoice

We hope this addition helps streamline your accounting process. Soon, these invoices will also be included in payout emails.

This feature is currently in beta — if you spot any bugs or have suggestions, feel free to reach out to us through support.

New SaaS Feature: Restrict one subscription per user

We’ve introduced a new feature to restrict users to only one active subscription at a time. In the SaaS world, this is a common pattern — typically, a user should have just one subscription active simultaneously. While SaaS makers can enforce this on their end, we want to offer the best developer experience (DX) possible.

To support this, you can now enforce this restriction directly from the Freemius dashboard. Simply head to your product’s Settings page and enable the Restrict Single Subscription Per User toggle.

Restricting single subscription per user in Freemius Developer Dashboard

Since this is a common practice among SaaS products, this setting is now enabled by default for all newly created SaaS products. If you created your SaaS product before this update, the feature will be disabled by default, but you can enable it anytime from the settings page.

Once enabled, our checkout will automatically block users from purchasing multiple subscriptions and display an error message like the one below:

Freemius Checkout blocking multiple subscription per user

If you’d like to customize the error message, just reach out to us via support and we’ll help you set it up.

And of course, if you prefer to allow multiple subscriptions per user, you can disable this feature at any time.

Customer Portal Bug Fix: Missing Delete Button on Website Page

We identified a UI bug where the Delete button was missing from the “Installed” products section of a website page in the Customer Portal.

This UI allows buyers/users to delete the installation data of a Freemius product from a website — particularly useful when a product was removed ad-hoc, without going through the proper uninstallation process.

Freemius Customer Portal with Installed products on a website

This bug has now been fixed, and the Delete button will appear and work as expected.

Fixed Intermittent Server Downtime from Last Week

Last week, we noticed intermittent downtime across our Developer Dashboard and some API servers. Upon investigation, we found that this was caused by unexpectedly high traffic volumes and overall network growth.

To resolve this, we identified bottlenecks in our infrastructure and deployed several improvements and fixes. These changes not only resolved the downtime but also enhanced overall performance. For example:

  • The SDK pricing page now loads faster.
  • Buyers will experience improved performance in the integrated Customer Portal, eliminating the “white screen” timeout issue.
  • Our SDK now receives faster responses when querying for available premium updates.

We apologize for any inconvenience this may have caused. Fortunately, no critical systems were affected. As a precaution, we have also invested in additional monitoring systems to help us detect and address such bottlenecks more efficiently in the future.

Checkout UI Improvements

We have deployed two minor UI improvements to our Checkout this week.

Fixed Padding Issue in Zip/Postal Code Input

As a regression to our newly introduced UX improvements for the VAT Number UI, we noticed there was extra left-over padding on the zip/postal code input. This has now been fixed.

Removed Money-Back Guarantee UI from Free Plans

We noticed that we’ve been incorrectly showing the money-back guarantee UI when the Checkout is opened in the context of a Free plan. The same has now been fixed.

Developer Dashboard UI Improvements

This week, we’re rolling out several UI/UX improvements to the Developer Dashboard.

Enhancements to Subscription and Payment Tables

Subscription table improvement in the Freemius Developer Dashboard

We’ve reorganized the columns in the Payments and Subscription tables to prioritize the most important data at the beginning. Additionally, we’ve refined some wording to enhance clarity.

Offline UI Improvements

Offline UI in the Developer Dashboard

We observed that the offline UI was sometimes too quick to detect network issues. We’ve identified these cases and deployed a fix to improve its accuracy.

Other Improvements

  • Fixed alignment issues in some UIs.
  • Resolved artifacts caused by old color schemes.

Fixed issue with subscription cancellation

Freemius allows both you, as a maker, and your buyers to cancel subscriptions at any time. We recently identified a regression where cancellations made very close to the renewal date were sometimes failing. This issue has now been fixed.

New Feature: Billing Selector UI for Checkout

This week, we’re introducing one of the most anticipated features for our Checkout. Last year, we released Phase 2 of the Checkout, which underwent a major redesign. At that time, we removed the legacy Billing Cycle UI in favor of a more compact Upsell UI.

However, we’ve received feedback requesting the return of the billing selector UI. This feature is particularly useful for makers using Freemius Checkout directly, without a dedicated pricing page. It provides buyers with more flexibility to select their preferred billing cycle at the time of purchase.

Freemius Checkout Billing Selector UI

We’ve listened to your feedback and are now introducing an optimized and visually enhanced Billing Cycle UI that complements the new Checkout experience.

This feature is not enabled by default. To activate it, add the following URL parameter to your Checkout URL:

?billing_cycle_selector=responsive_list

Alternatively, if you’re using the Checkout JS SDK, you can enable it with the following configuration:

const handler = new Checkout({
  billing_cycle_selector: 'responsive_list',
});

Configuration Options

The billing_cycle_selector parameter accepts the following values:

  1. responsive_list – Displays billing cycles in a smart list that adapts to available space.
  2. dropdown – Shows a dropdown UI, allowing buyers to select their preferred billing cycle.
  3. list – Same as responsive_list but always show up vertically.

If none of the values are present the UI will not show up. Read more details below.

Rendering a Responsive List

Our recommendation is to use the responsive_list option. You can do so by setting the parameter value to responsive_list or simply true.

Responsive list of Billing Cycle in Freemius Checkout

This will display all available billing cycles upfront. If only two billing cycles are available, they will appear in a horizontal layout to save space.

Flat vertical list of Billing cycle UI in Freemius Checkout

If you prefer a vertical list, you can use list instead of responsive_list.

Dropdown UI

If you want to minimize vertical space usage, set the parameter to dropdown.

This will render a single item that buyers can click to open a dropdown menu for selection.

Billing Cycle dropdown UI in open state - Freemius Checkout

Adjustment with Upsells

Enabling the billing cycle UI will automatically disable annual and lifetime upsells.

Disabled upsells when Billing Cycle UI is shown

As always, we’re building this feature with our community. If you’d like to discuss anything, feel free to join our Slack or reach out to our support team.

Checkout UI/UX Improvements

This week, we are releasing several UI and UX improvements for our checkout. See the details below.

VAT Number Validation UX Improvement

Freemius allows buyers to enter their business VAT number for reverse VAT charges. Behind the scenes, Freemius validates the VAT, and if valid, it nullifies any VAT for EU/UK buyers. We noticed that in rare cases, a buyer might submit the checkout even though the VAT number validation had not yet completed. While the checkout still displayed the amount with VAT, we understand that this could be confusing for some buyers.

Freemius Checkout VAT number validation UX

To enhance the experience, we now display a spinner next to the VAT field while the system is validating the number. Additionally, if a buyer clicks the Review or Continue to PayPal button before validation completes, the form will shake, focus on the VAT number field, and display a short message: “Verifying…”.

Freemius Checkout Zip code validation UX

We also implemented similar UX improvements for the US Sales tax, where the tax amount depends on the billing details.

We hope these enhancements improve the overall buyer experience with Freemius Checkout.

Fixed Text in Money-Back Guarantee

Freemius Checkout includes built-in social proof elements, such as a money-back guarantee and customer reviews, to boost buyer confidence.

Freemius Checkout money-back guarantee UI

We noticed that the money-back guarantee text incorrectly referred to a plugin instead of a product. This has now been corrected.

Fixed Mobile UI Regression

We identified a regression where the mobile UI had incorrect top padding. This issue has now been fixed.

Fixed Loading of Abandoned Licenses in the Developer Dashboard

From the Freemius Developer Dashboard, makers can view and download a list of licenses. The system also allows filtering licenses based on various criteria.

Freemius Developer Dashboard - Filter Licenses

We identified a regression where selecting the Abandoned filter was not working correctly. Abandoned licenses refer to those that have expired or have an expired/canceled subscription. We have now identified the root cause and deployed a fix.

Optimizing Webhook Payloads: Removal of Developer Data

Freemius provides a webhook mechanism for seamless integration with your software. We recently discovered that some webhook payloads were unintentionally including developer data. To optimize network payloads, we will no longer be sending this data. All other entities and payloads will remain unchanged. For example, the license.created webhook will continue to receive the license object as expected.

This inclusion of developer data was an oversight on our part, and since it was never documented, we have no reason to believe it was actively used. However, if you were relying on it, you have two options:

  1. Retrieve the developer data directly via the API when needed.
  2. Recommended: Store the developer data in an environment variable or cache it within your system. Since this data rarely changes, frequent API calls or webhook-based retrieval are unnecessary.

Bulk Licenses, Payments Table & App Experience Improvements + Notification Controls

We’re rolling out several key enhancements to our Developer Dashboard this week.

Bulk Licenses for SaaS & App Products

Building on our recent introduction of custom unit labels, we’re now adding bulk licensing options for SaaS and App product types.

Bulk Licensing option for SaaS and Apps on Freemius Platform

When setting up pricing for bulk licenses/activations, you’ll now see predefined options for 50K, 100K, 250K, 500K, and 1M activation units.

Based on demand, we plan to enhance the UX further by allowing you to customize these values directly in the UI. For now, if you need a different number, feel free to reach out to our support team, and we’ll take care of it for you.

Payments Table Improvements for Migrated Payments

Freemius enables seamless and assisted migration from other platforms without losing existing subscriptions or licenses. To ensure you have a complete view of your Financials and Audience, we also display migrated data in the Developer Dashboard.

However, we noticed color inconsistencies in the Payments Table for migrated transactions. With this update, we’ve standardized the coloring to ensure clarity:

Freemius Payments table UI improvement with Migrated entries
  • Gross amounts are now blue (positive) or red (negative), depending on the value.
  • Test payments are displayed in gray for differentiation.
  • Migrated payments are now visually distinct, with the Migration icon at the start of the table highlighted for better visibility.

App Documentation Improvements

Freemius App integration documentation

We’ve published a new documentation with various examples of integrating Apps with Freemius.

Notification Settings for Failed Renewal Recovery Emails

We’ve added a new Notification Center setting that lets you control whether you want to receive a notification when Freemius successfully recovers a failed renewal through its dunning mechanism.

Load more