ipasis

Prevent Coupon Abuse & Multi-Account Promo Exploitation

Stop users from gaming your promotions. IPASIS detects serial abusers who create multiple accounts with disposable emails and VPNs to repeatedly claim discounts, free trials, and referral bonuses.

The Coupon Abuse Problem

🔄

Multi-Account Abuse

Users create dozens of accounts with fake emails to claim "first purchase" discounts, free trial extensions, or referral credits repeatedly.

💸

Revenue Loss

Serial abusers never pay full price, turning your profitable promotions into money-losing schemes that subsidize fraudsters.

⚖️

Unfair to Real Customers

Limited-quantity promos get exhausted by abusers, leaving legitimate customers unable to benefit from your marketing campaigns.

How IPASIS Detects Coupon Abuse

1

Disposable Email Detection

Identifies temporary email services (temp-mail.org, 10minutemail.com, guerrillamail.com) and newly registered domains used to create throwaway accounts.

2

VPN & Proxy Detection

Flags users hiding their true location to bypass geographic restrictions or create accounts that appear to come from different places.

3

IP Reputation Scoring

Analyzes IP history for patterns of abuse — if an IP has been used to create 50+ accounts in the past month, that's a red flag.

4

Comprehensive Trust Score

Combines email validation, IP reputation, and anonymization signals into a 0-100 score, enabling smart promo eligibility rules.

Implementation Example

Validate promo code applications and trial signups before granting discounts:

// Promo code redemption handler (Node.js example)
import axios from 'axios';

app.post('/api/apply-promo', async (req, res) => {
  const { email, promoCode, userId } = req.body;
  const userIP = req.ip;

  try {
    // Validate with IPASIS
    const ipasisResponse = await axios.post(
      'https://api.ipasis.com/check',
      {
        ip: userIP,
        email: email
      },
      {
        headers: {
          'Authorization': `Bearer ${process.env.IPASIS_API_KEY}`,
          'Content-Type': 'application/json'
        }
      }
    );

    const { trustScore, signals } = ipasisResponse.data;

    // Check if promo has been used before
    const promoUsage = await getPromoUsageHistory(promoCode);

    // Define abuse risk level
    let abuseRisk = 'low';
    let allowPromo = true;

    // High-value promos: stricter threshold
    const isHighValuePromo = promoCode.includes('50OFF') || 
                            promoCode.includes('FREE');

    const threshold = isHighValuePromo ? 70 : 50;

    if (trustScore < threshold) {
      abuseRisk = trustScore < 30 ? 'high' : 'moderate';
      allowPromo = false;

      await logBlockedPromoAttempt({
        email,
        ip: userIP,
        promoCode,
        userId,
        trustScore,
        signals,
        reason: `Trust score ${trustScore} below threshold ${threshold}`
      });

      return res.status(400).json({
        error: 'Promo code not eligible',
        message: 'This promo code cannot be applied to your account.'
      });
    }

    // Check for suspicious patterns
    if (signals.isDisposableEmail || signals.isVPN) {
      await flagSuspiciousPromoUse({
        email,
        ip: userIP,
        promoCode,
        userId,
        trustScore,
        signals
      });

      // Allow but require verification for moderate risk
      if (trustScore < 60) {
        return res.status(200).json({
          success: false,
          requiresVerification: true,
          message: 'Please verify your email to apply this promo.'
        });
      }
    }

    // Apply promo code
    const discount = await applyPromoCode({
      userId,
      promoCode,
      email,
      trustScore,
      ipAddress: userIP
    });

    // Track for analytics
    await trackPromoRedemption({
      userId,
      email,
      promoCode,
      discountAmount: discount.amount,
      trustScore,
      timestamp: new Date()
    });

    res.json({
      success: true,
      discount: discount.amount,
      message: `Promo code applied! You saved $${discount.amount}`
    });

  } catch (error) {
    console.error('Promo validation failed:', error);

    // Fallback: require manual approval
    await queueForManualReview({
      email,
      promoCode,
      userId,
      reason: 'IPASIS_CHECK_FAILED'
    });

    res.status(400).json({
      error: 'Unable to apply promo',
      message: 'Please contact support to apply this code.'
    });
  }
});

// Trial signup with abuse prevention
app.post('/api/start-trial', async (req, res) => {
  const { email, plan } = req.body;
  const userIP = req.ip;

  const ipasisResponse = await axios.post(
    'https://api.ipasis.com/check',
    { ip: userIP, email },
    { 
      headers: { 
        'Authorization': `Bearer ${process.env.IPASIS_API_KEY}` 
      } 
    }
  );

  const { trustScore } = ipasisResponse.data;

  // Prevent trial abuse: require trustScore >= 50
  if (trustScore < 50) {
    return res.status(400).json({
      error: 'Trial not available',
      message: 'Paid plans start at $9/month. Sign up now!'
      // Don't reveal fraud detection
    });
  }

  // Grant trial access
  const user = await createTrialUser({ email, plan, trustScore });
  res.json({ success: true, userId: user.id });
});

💡 Strategy Tip: Use tiered thresholds — high-value promos (50%+ off) require higher trust scores (>70), while small discounts (<20% off) can be more lenient (>50). Adjust based on your abuse patterns.

Impact on Promotion ROI

71%

Reduction in promo abuse

$29k

Average annual savings

2.8x

Better promo campaign ROI

Stop Coupon Abuse Today

Protect your promotions from serial abusers. Start with 1,000 free checks per day.

Start Free Trial

1,000 free requests/day • No credit card • 5-minute integration