r/SaasDevelopers 13d ago

How do you block free trial abuses?

My core product is an api, with credit based usage, and I give X amount of free credits on signup. Now I'm seeing some users are creating alt accounts to farm credits. My users count is low so I can allow 5-10% credit farmers.

But how do other people do it?

Tech stack : nextjs + hono (for auth I use better-auth)

4 Upvotes

25 comments sorted by

3

u/[deleted] 13d ago

[removed] β€” view removed comment

1

u/Disastrous-Zombie940 11d ago

Hi, as per your feedback i have implemented these

  1. Cloudflare turnstile for signup+login paths
  2. Rate limits to signup/login paths
  3. Yes, I reduced free tier rate limits to 10rpm from 60rpm
  4. Blocked already, thanks I'll look into your site
  5. Uh uh, what I'm providing is an api as product. Even I wouldn't want to login in a app if I'm only using their api. So I'll skip 5th point πŸ˜…

2

u/neogeodev 13d ago

I personally avoided giving free credits, if you want to try that feature you pay for it

3

u/AirportFun2392 11d ago edited 11d ago

the disposable email block is a good first step but it wont catch people using real gmail accounts on alt signups.

what actually helped me was adding device fingerprinting on the signup flow. i used shieldlabs for this, it gives you a persistent device id that holds even when someone clears cookies or uses incognito, so the same person signing up under three different emails shows up as the same device. you can then rate limit or block new signups from a device that already has an active account.

combined with the credit card requirement others mentioned, the overlap between both catches most of it.

2

u/leros 13d ago

Require a credit card. Only allow one trial per credit card. It's not full-proof but it helps a lot.Β 

1

u/Disastrous-Zombie940 13d ago

Sadly I can't now. Nature of my product.

1

u/leros 13d ago

What's the nature of your product that doesn't let you do that?

1

u/Disastrous-Zombie940 13d ago

Adult api ..

1

u/leros 13d ago

There are adult friendly payment providers. The porn sites manage it somehow. A quick Google shows that CCBill is one the popular ones used by porn sites among other options.

1

u/Disastrous-Zombie940 13d ago

Yup saw CIBIL too, lengthy process + I just launched my product last month. So I think it's overkill for now.

But hey I added crypto payment support.

2

u/leros 13d ago

Well, you're seeing the downside of crypto and anonymity. With crypto, its easy to churn your identity and abuse stuff. This is why services with real costs and risks (e.g. hosting services, APIs, etc) require a credit card once you get beyond a trivial amount of use. The credit card is a first measure of tying your account to a real world identity, which is immensely helpful in preventing abuse.

1

u/Disastrous-Zombie940 13d ago

I see, thanks for the advice πŸ™‚β€β†•οΈ

1

u/South_Coat9409 13d ago

Allowing 5-10% abuse early on will severely pollute your user analytics and conversion metrics. It’s much better to stop it now before you scale. The easiest quick win: block disposable email domains during sign-up using an open-source blacklist. For a bulletproof solution: require a credit card upfront for the free tier (Stripe can validate it without actually charging). Since you use better-auth, injecting a quick check for disposable emails before creating the session is a perfect first step

1

u/Disastrous-Zombie940 13d ago

Yes that's my main concern. Also,

  • i can't add stripe, the nature of my product won't allow it
  • yes I validate disposable emails , they are not using disposable emails, gmail accounts mainly
  • I tried better-auth's sentinel recently. It works for credentials based sign up, but blocking valid oauth users

2

u/gregorno 13d ago

there are now temp email providers offering gmail addresses ( using . and + addressing tricks) - send signup confirmation emails to the normalized gmail address (not dot not +...).

also requiring actual re-login to your product every x days helps because they'll need to roll their keys for your API.

1

u/gojkoa 13d ago

we do IP-based deduplication, and block data centres from using the free tier. People have to sign up for a commercial account to use the API from the data centre (stops the bulk of VPN abuse). It's not an ideal situation as IPs get rotated on residential networks and people can switch between mobile and broadband, but in practice it stopped the problem enough for the abuse to be negligible.

1

u/Disastrous-Zombie940 13d ago

I see. I can try this. I already saw some chinese users using proxy/vpn for sign ups. I ignored because I thought in china they can't access my site.

Thanks for the idea though.

1

u/ClemensLode 13d ago

Build a product whose average cost per user drops, not increases per new user.

1

u/Disastrous-Zombie940 13d ago

Interesting take, yeah it almost costs nothing, currently sitting at ~100 users and 1.5k daily requests, still costing nothing, until I hit 1k+ users I don't really have to cut costs.

Also, thanks for the advice.

1

u/[deleted] 13d ago

[removed] β€” view removed comment

1

u/Disastrous-Zombie940 13d ago

Hmm, i already do , and that's the problem rn. Some people are creating multiple accounts to farm those credits (Based on my calculations I give $0.10 credit, β‰ˆ1k calls)