Affiliate fraud detection that holds the money.

AffiliateTracking's affiliate fraud detection runs 12 rules on every sale the moment it's credited. When one fires, it holds the commission with the evidence attached, and no payout run can pay it until you decide.

Runs on every saleHolds, never auto-paysThresholds published below

Fraud queue: coupon_hijack on SPRING40 froze the affiliate, while asn_reputation, self_referral and click_velocity each placed a hold. Below, 6 held commissions with affiliate, amount and reason.
The fraud queue, running on demo data.

A flag is a note. A hold is a stop.

What happens to every sale

Most tools flag fraud on a dashboard, then pay it anyway. Here the check happens before the money can move.

  1. 01Sale comes in

    Your billing sends the event. It keeps its ID, so a retry can't count it twice.

  2. 02Commission credited

    Attribution picks the affiliate and writes the commission as pending.

  3. 0312 rules run

    Right away, on that commission. A sweep runs them again every 5 minutes.

  4. 04Held with evidence

    If a rule fires, the commission gets a payment hold. Payout runs skip it.

  5. 05You decide

    Release it and it pays out as normal. Uphold it and it's cancelled and clawed back.

It fails closed. If the fraud check itself errors on a sale, that commission is held with the reason screening_error instead of slipping through unchecked.

From the product code

The 12 rules, with their exact thresholds

No black box. Each rule below says what it catches, when it fires and what it holds. The code name is what you'll see in your fraud queue.

The 12 fraud rules with what each catches, when it fires and what happens
RuleWhat it catchesWhen it firesWhat happens
Buying from yourself 3 rules
Self-referralself_referralAn affiliate buying through their own linkThe buyer's email matches the affiliate's, after +tags are stripped, and dots too on GmailHold
Duplicate accountsduplicate_accountOne person running several affiliate accountsThe affiliate's email, with aliases stripped, is also on another active affiliate accountHold
Shared buyerspayment_fingerprintA ring of affiliates buying from each other2 or more of the affiliate's buyer emails also bought through other affiliates' linksHold
Coupon abuse 1 rule
Coupon hijackcoupon_hijackA leaked coupon stealing credit for customers other affiliates already brought inThe coupon took credit for 3 or more customers bound to other affiliates within 7 daysHold Freezes coupon owner
Fake or bought traffic 4 rules
Click velocityclick_velocityClick bursts from one source50 or more clicks from one IP address in the last hourHold + burst's commissions
Datacenter trafficasn_reputationClicks from servers, not people80% or more of 20+ clicks in 7 days came from datacenter or hosting IP rangesHold
Bot trafficbot_class_gatingTraffic that gets past the known-bot filter but still looks automatedHalf or more of 20+ counted clicks in 7 days are suspected botsHold + those clicks' commissions
IP overlapip_overlapReferral farms, many "affiliates" behind one office or VPN2 or more of the affiliate's visitor IPs also clicked other affiliates' links in 30 daysHold + overlapping clicks' commissions
Suspicious conversions 4 rules
Conversion velocityconversion_velocityA sudden flood of sales on one affiliate30 or more commissions credited to one affiliate within an hourHold
Odd conversion hoursconversion_time_anomalySales that never sleep, the pattern of scripts and farmsMore than half of 20+ conversions in 7 days landed between 00:00 and 05:59 UTC, far above your program's normal shareHold
Geo mismatchgeo_mismatchSales from countries the affiliate's audience isn't in3 or more of 5+ geo-tagged conversions in 7 days, and at least 1 in 10, came from countries none of their clicks came fromHold
IP fallback anomaliesip_fallback_anomalyAffiliates living on the weakest form of creditMore than 5% of 10+ conversions in 7 days were credited by IP match, the last-resort attribution stepHold
Thresholds from the rule code, checked . Windows are rolling. IPs are compared as hashes, never stored raw.

One more backstop. A commission credited to a frozen or removed affiliate is held too. It isn't one of the 12. It closes a gap.

The rule most tools don't have

Coupon hijack, caught on the third customer

Your affiliate brings in a customer. Later that customer finds a coupon code on a coupon site and uses it at checkout. The coupon's owner now looks like they made the sale.

When one coupon does that to 3 customers in 7 days, its owner is frozen and the commission is held. It's the only rule that can freeze an account, because nobody else can make an affiliate's own coupon override other affiliates' customers.

Flow diagram: how coupon hijack detection works A customer bound to Affiliate A checks out with coupon SPRING40 from a coupon site. The coupon would move the credit to its owner, Affiliate B. On the third override in 7 days, Affiliate B is frozen and the commission is held. STEP 1 Customer is bound to Affiliate A A referred them first. Renewals follow A. STEP 2 Checks out with coupon SPRING40 Found on a coupon site, not from A. STEP 3 Coupon owner B would get credit That's one override of A's customer. 3RD IN 7 DAYS B is frozen. Commission held. Evidence: 3 overrides in 7 days, on record 7-day window Override 1 Override 2 Override 3: rule fires
The default threshold is 3 overrides per coupon in 7 days. SPRING40 is demo data.

Built so it can't be aimed at your best affiliates

Fake clicks cost nothing. A rule that anyone can trigger would let a rival freeze your top partner. So the rules hold narrowly.

Only the sale in question is held

A hold covers the commission being checked, plus commissions from the flagged clicks. It never locks an affiliate's whole balance.

Traffic rules need real sales first

Datacenter traffic, bot traffic and IP overlap only act once the affiliate has 3 or more conversions in the window. Junk clicks alone do nothing.

One rule can freeze an account

Coupon hijack, and it freezes the coupon's owner. Duplicate accounts reports a freeze but only holds, since anyone can sign up with someone else's email alias.

Admin fraud tab: 4 verdicts, each with its rule, subject, reason and action, above the list of held commissions with amounts.
Every hold shows the rule, who it's about and the reason, in plain text.

You make the call

Each hold waits in the fraud queue with its evidence, for example coupon "SPRING40" overrode 17 existing customer bindings in 7d. Release or uphold it with one API call. Buttons in the admin screen are not built yet.

Release

The hold lifts and the commission carries on to maturity and payout as normal.

Uphold

The commission is cancelled and the money is clawed back through the ledger, so the books still add up.

Every reversal is written down, never edited. See how the ledger records it.

Try the rules without holding anything

Turn on dry-run mode and every rule still runs and records its verdict, but nothing gets held. Read what would have been caught, then switch to enforce when you trust it.

Held commissions are skipped when payout runs pick who to pay.

Fraud checks next to the usual tools

From each tool's public homepage and pricing page, checked .

Compare every feature side by side

Fraud features of AffiliateTracking, Rewardful, FirstPromoter and Tolt, checked 28 Sep 2026
FeatureAffiliateTrackingRewardfulFirstPromoterTolt
Fraud checks12 rules, money heldSelf-referralSelf-referral, suspicious leadsNot listed
Coupon hijack detection✓ YesNot listedNot listedNot listed

Fraud FAQ

What is affiliate fraud?

It's commission paid for a sale the affiliate didn't bring in. Buying through your own link, stealing credit with a leaked coupon and sending bought or fake traffic are the common ones.

What are examples of affiliate fraud?

Self-referrals, one person running several accounts and affiliates buying from each other. Coupon codes leaked to coupon sites. Click bursts, datacenter and bot traffic. Sales from countries the affiliate's audience isn't in.

Is this AI fraud detection?

No. It's 12 fixed rules with the thresholds published on this page. Every hold says which rule fired and why, so you can check it yourself.

Can a rule hold a good affiliate by mistake?

Yes, it can happen. That's why a rule holds the money instead of cancelling the sale. You release it with one API call and the commission pays out as normal.

Can someone send junk traffic to my best affiliate to get them frozen?

No. Traffic rules need 3 or more real conversions before they act, holds cover only the flagged sales, and only coupon hijack can freeze an account.

What happens if a held commission turns out to be fraud?

You uphold it. The commission is cancelled and clawed back through the ledger. If it was already paid, the refund flow reverses it instead.

Can I test the rules before they hold anything?

Yes. Start it with AE_FRAUD_DRYRUN=1 and the rules record their verdicts without holding. Restart without it to enforce.

What if the fraud check itself breaks?

The commission it was checking is held with the reason screening_error. A broken check can't wave a sale through.

Which plans include the fraud engine?

All of them. Self-host and every cloud plan get all 12 rules and money holds. See what each plan costs.

The next coupon hijack
gets held.

Buy self-host for $99 and run all 12 rules today. Or let us run it, free for 14 days.