Your SaaS Free Trial Should Require a Credit Card

How I gate my free trials (and why you should too)

This week, I published an article about how cc-gating my trials changed my business.

It spurred a lot of debate and conversation. I’ll show how I do it, why it works, and why you should do it too.

For context, ([] is a tool for B2B sales teams who do a lot of prospecting. It tracks their territories and tells them which accounts to focus on every day, with supporting research.

The tech side of things

If you’re here for the philosophy, scroll on. If you want to know how this works on my backend, this is for you.

I build MSB in Next.js. It takes a lot off my plate. It even has Next/Auth, a built in authentication package. When a user signs up for the first time or signs in, there’s only a few pages they’d see in my tool. They see uploaded companies the signals that get generated, or settings.

Each of these pages checks the user who is accessing it, which is pretty straightforward in React. It’s simple in Next using getServerSideProps().

  1. It first asks Next/Auth: are they signed in?
  2. Then: Are they paying?
  3. Then: Have they uploaded their first company?

If the user fails any checks, they get redirected via Next Router to the correct page. Either Login, Start a trial, or Upload your first company.

So when a user signs up, or when a user gets “pay-checked”, they’re met with my pricing page.

pricing for magic sales bot

Each of these options uses Stripe Checkout, which is again, less code that I have to write. They handle the logic of free trials ending. I set up Stripe Webhooks to confirm/deny if they actually complete checkout. If successful, I update that user to {paying: true} in my backend.

A user then goes through their trial. Since I’m still small, they likely interact with me at some point. Some find it’s not for them and ask me to cancel on their behalf. Some don’t interact with me and cancel from their settings page.

But on the 7th day of their trial, they become a paying user as their trial ends. If they cancel or fail on their payment, I again listen for Stripe Webhooks that will alert me. If payment fails or they cancel, my listener turns that user into {paying: false}. Now they’ll not be able to access the tool when I pay-check them.

Why you should do this too

First off, let my clarify what this is. I’m advocating for you, as someone building a business, to give users a limited free trial in exchange for their credit card information. Ask your users for the potential of payment if you successfully solve their problem.

Being an IndieHacker is hard enough

Every IndieHacker has a failure story. Even the most successful builders have a long trail of fail on their way to success. Of all the ways you could fail, not asking for the potential of payment has to be the worst.

The only way to give your business a fighting chance is to treat it like a business - an entity that earns money in exchange for a product or service.

Capitalize on user motivation

When an onboarding flow restricts users from setting up for long term usage and success, we call it a bad flow.

Yet, that’s what builders are doing by not including credit card details in the onboarding flow. Users are most motivated to solve the problem they seek your help with during that initial usage. So it benefits the both of us to get them fully set up in their first usage.

But we wait for a week, two weeks, or even a month to ask for something critical to their usage. Now, they’re not feeling the pain they felt when they sought you out in the first place. It's because they’re humans who experience more than one emotion over the course of a multi-week trial. Or because you successfully solved the problem for them.

In either case, they now lack that driving emotion to give you, the builder, what you need. And why should they? Their problem isn’t staring them in the face anymore!

Validate the business idea

I hope this goes without saying, but it’s going to come up between B2C and B2B builders. If a user is not willing to pay us to solve their problem, we do not have a business.

If a user puts a credit card down after landing on your site, and cancels their trial. That is incredibly validating data. It means that the problem you articulated on your landing page is worth money to solve. It only means your product did not fulfill the promise made by that landing page.

When you wait until after a free trial to ask for payment, and a user says no, you only have that user’s words to go on. And our post-event rationalizations for our actions are rarely trustworthy. You’re faced with looking at the whole picture: Am I solving the right problem? Maybe the product needs this feature instead. Is my marketing saying the right thing?

When you gate your trials, you compartmentalize issues. Now you can be more sure of what needs to be tweaked.

  1. No one is starting trials? Change marketing. Get different people in, or articulate the problem we’re solving differently.
  2. People cancel their trial? Our marketing might be working, but our product definitely isn’t. Let’s work on that.
  3. People don’t cancel their trial, but aren’t showing great success or telling their friends? It looks like we have an ok business.

We need to speak to these users to understand what would take this from good to great.

You’re worth it

You poured your heart into building this. How many hours have you spent? What are you giving up in the short term to build this, with the hope of being successful in the long term?

Compare that to what you’re asking for. The potential of being paid by putting down a credit card. It might take the user 5 minutes to cancel, or 30 seconds to email you so you can do it manually.

Purists will scream: “That’s not user friendly!” Friendliness is a two-way street. Be kind to yourself.

It’s simpler

Tyler Tringas, in his micro-saas e-book, says this better than I can:

Once the product is more mature and the onboarding flow more automated, it may make sense to test whether asking for a card upfront generates more long-term revenue, but in the MVP stage it is a nightmare and should be avoided.

Lastly, it is also a huge hassle to code a workflow to bother customers to add their card after their free trial expires, freeze their account if they don’t, and so on. Skip all that and ask for the card right at signup, set it up to automatically assign them to a plan after the free trial end unless they cancel. (...)

One of the big benefits of the no-freemium, card-upfront structure is that you can always keep your costs under control preventing any explosions in free trials or free plan usage. If you’re still not convinced, read about freemium almost caused Baremetrics to implode.

If you look at your product and you are convinced that freemium is the way to go, you might want to consider whether this idea is in fact a good fit for Micro-SaaS. The cost structure of freemium is risky, do you have deep enough pockets to actually lose money on your business in the short term if free users grows too rapidly? If people need to use your free product for months before they consider upgrading, I would question whether the product provides enough immediate value to be a Micro-SaaS business, though it may be a good fit for a funded startup.

Why people don’t do it


What if people hate me for asking for money? What if they think I’m sleazy or a sell-out? What if no one pays and then I realize this isn’t viable and I have to go back to the drawing board?

I understand. It’s a real fear. But as Mark Twain says, “If it's your job to eat a frog, it's best to do it first thing in the morning. And If it's your job to eat two frogs, it's best to eat the biggest one first.”

You’re going to have to do hard things. That’s why you signed up for this. Go get to the other side of fear.

They want to be product-led

You can be product-led and ask users to put a credit card down upfront. They’re not mutually exclusive.

Being product-led is: Using your product as the main vehicle to acquire, activate, and retain customers.

Notice: Acquire and Activate come first. You can’t retain a customer who isn’t actually a customer.

Being product-led is not: Saying “If we build something so obviously awesome, people will beg to pay us.” Also, any other form of building that strays away from asking hard questions of ourselves or avoidance of asking for money.

“It’s not how good businesses are run”

The best and biggest software businesses in the world are run this way. They often require 5-7 figures in upfront, annual payments before users are even given a login.

I know, I used to work at them.

This is not to say that you should do exactly this. It’s not applicable to businesses our size. But it is applicable to the idea that you are validated in at least asking for the potential of payment up front.

I hope this helped you find a new thought or two. I really hope this helps you get paid and get that much closer to building a successful business. I’m on (Twitter)[] - if you think your case is special and you still don’t want to ask for a credit card up front, tell me why. It’d be great to hear your thoughts.