$1 trial abuse: how to protect paid introductory offers
A $1 trial feels safe because there's a payment. It isn't. How to stop $1 trial abuse and repeat introductory discounts without adding friction at checkout.
A $1 trial feels like the safe version of a free trial. There's a card on file, a real charge, a real customer. So teams relax, and that's exactly when $1 trial abuse starts. The dollar doesn't stop anyone. It just makes the abuse look like revenue.
One person pays $1, uses a full month of a $49 product, lets it lapse and signs up again with a new email and a new card. Repeat that every month and they're using your product for a 98% discount, forever. Multiply by everyone who figures it out, and your introductory offer becomes your most popular plan.
Why a payment step isn't protection
A payment proves that a payment method works. It doesn't prove the person is new.
- New cards are cheap. Virtual and prepaid cards make a fresh payment method a minute's work.
- The dollar barely covers itself. Processing fees on a $1 charge can eat a large share of it, so each repeat claim is close to a free month of your product.
- It hides in your revenue. Repeat $1 sign-ups show up as paying customers. Your dashboard shows healthy conversions while your introductory offer is quietly being farmed.
- It skews every decision. Inflated "paid" sign-ups make the offer look like a success, so it stays, and grows.
From our early beta
Scammers created account after account with a stack of email aliases and the same one or two cards. Every one of those accounts shared a payment fingerprint, but nothing was checking it, and the team's payment processor restricted their payment processing.
The math is the same as any repeat claim, except the loss hides behind a charge. Run your numbers in the real cost of free trial abuse.
Treat the payment as evidence, not a gate
The card is useful. Not as a gate, but as one more identifier to check against everyone who's already received the offer. AbuseZero accepts the stable payment method fingerprint your payment processor assigns, alongside email, device, network and your own identifiers, and checks all of them against your full claim history on every evaluation. You never send card numbers or card details.
const evaluation = await abusezero.evaluate(
{
benefit: "intro_offer",
claim_id: offerClaimId,
subject: { external_id: user.id, email: user.email, email_verified: user.emailVerified },
context: { ip },
identifiers: {
device_token: deviceToken,
payment: {
provider: "card_processor",
scope: "merchant_2041",
fingerprint: paymentFingerprint, // From your processor's server-side data.
},
},
},
`evaluate-${offerClaimId}`,
);See send identifiers for every field.
Check before you apply the discount
The introductory price is the benefit. Evaluate the claim before you charge the intro price, and decide what happens on each result.
A denied claim isn't a lost customer. They want your product enough to reach checkout. Show the regular price with a neutral message, and many will take it:
The introductory offer isn't available for this account. You can start today at the regular price.
Never explain what was detected. For more on denials that keep real customers, see multi-accounting detection without blocking real users.
Keep the offer, lose the farming
Protect your introductory price without adding a single step to checkout. Start with Builder or see pricing.
The playbook at a glance
| Decision | Recommendation |
|---|---|
| Benefit | The introductory price, one benefit per offer |
| Eligibility | Once ever, or a rolling window such as 365 days if you welcome returning customers |
| When to check | After the payment method is collected, before the intro price is charged |
| Protection level | Balanced; Strict when the discount is large |
| Identifiers | Payment method fingerprint, email, IP address, device token |
| On deny | Offer the regular price |
| Rollout | Observe first, then protect |
Choosing between a rolling window and once ever is covered in setting trial eligibility.
Discounts beyond the first month
The same pattern protects every introductory discount: "first three months at half price", "first year 40% off", "first seat free". Each is a benefit. Each gets evaluated before the discount is applied. Promo codes and referral rewards follow the same logic, with a few extra traps of their own. See how to stop promo code and referral abuse.
Frequently asked questions
Does charging $1 stop free trial abuse?
It filters out some casual abuse, but new payment methods are cheap. A $1 trial still needs a check on whether the person has already received the offer.
How do I stop people repeating an introductory discount with new cards?
Send the payment method fingerprint from your processor with each evaluation, alongside email, device and network. AbuseZero checks all of them against everyone who already received the offer.
Do I send card numbers to AbuseZero?
No. Send only the stable fingerprint your payment processor assigns to the payment method, taken from its server-side data.
What should happen when an intro offer claim is denied?
Offer the regular price. The customer has already shown intent by reaching checkout.
Is AbuseZero a payment fraud tool?
No. AbuseZero doesn't judge whether a payment is legitimate. Stolen cards and chargebacks are payment fraud: one team in our early beta took hundreds of chargebacks on a single plan from one stolen card, and that's a job for your payment processor's fraud tools. AbuseZero decides whether a claim should receive the benefit, here the introductory price. See abuse prevention vs fraud detection.
Protect your introductory offers
Start with Builder
Pay as you go. Protect your intro price today.
Send identifiers
Payment fingerprints and every other identifier.
See pricing
Builder, Pro, Scale and Enterprise.