Built for

Fraud scoring for rewards sites and offerwalls

Alex MugoFounder, Kaidn
3 min readRevised

Also called: GPT sites · get-paid-to · offerwall · rewards platform · incentive platform

Why reward platforms lose money at the payout rather than the signup, which events carry the loss, and how partner reversals turn fraud into a second bill weeks later.

How the money moves

You are paid by advertisers or networks for completed actions, and you pay a share of that to the user who completed them. Your margin is the spread, so anything that produces a payout without a valid conversion does not just cost you the payout, it costs the advertiser revenue that funded it.

Where it leaves

  • arrow_outwardCashouts to PayPal, gift cards, crypto or bank transfer, which are effectively irreversible once sent.
  • arrow_outwardPoints and balances credited on conversions that will later be reversed by the network, leaving you paid out against revenue you no longer have.
  • arrow_outwardReferral bounties, which pay immediately and are self-referred more often than most operators measure.
  • arrow_outwardSignup and welcome bonuses, the cheapest thing on the site to farm at volume.
  • arrow_outwardPartner clawbacks weeks later, which is the loss that arrives twice: once as the payout, once as the reversal.

What to score, and why these

Scoring everything is expensive and scoring the signup alone misses most of it. These are the events that carry the loss in rewards and offerwalls.

The cashout, not just the signup

This is the event that matters most here and the one most operators score last. At registration a farmed account has told you almost nothing. At withdrawal it has told you everything: which accounts converge on the same destination, in the same window, through the same networks. If you only score one event, score this one.

The conversion or offer completion

Where value is created, and where it is faked. Completion patterns that are identical across accounts, or impossibly fast for the offer, precede the reversal by weeks. Catching it here is the difference between refusing a payout and clawing one back.

The referral

Self-referral is the most common single abuse on reward platforms because the bounty is immediate and the structure is easy. Scoring the referral link at the moment it is claimed catches reciprocal pairs before either side is paid.

The signup

Worth scoring, but for coverage rather than as the main line. It filters the obvious automated wave and gives you a baseline to link later events against.

The patterns you will see

When we are not the answer

  • blockIf your losses are chargebacks on card payments rather than payouts, this is the wrong shelf. That is payments fraud and a payments platform will serve you better.
  • blockIf you have no payout mechanism at all and monetise purely on ad impressions, most of what we score does not apply to you.
  • blockIf your compliance requirement is identity verification (KYC) rather than abuse detection, we do not do that and you should not buy us for it.
  • blockIf you are pre-launch with no traffic, wait. Our signals get better with volume and a graph with nothing in it cannot link anything.

Rewards platforms have a structural problem that most fraud tooling was not designed around: the fraud is not a theft, it is a payout you agreed to make, to a user who did the thing you asked, who happens to be the same person as thirty other users.

Nobody used a stolen card. Nothing was broken into. Each account, examined on its own, did exactly what the offer required.

Score the withdrawal#

The most useful change most reward operators can make is to move detection from the signup to the cashout.

At registration you have an email, an IP and a device, and a farmed account looks like a new user because it is a new user. At withdrawal you have weeks of behaviour, a completion history, and above all a destination. Payout convergence, many accounts sending value to a small number of endpoints, is the single strongest signal in this vertical, and it does not exist at signup.

This is also the point where blocking is cheap and reversible. Refusing a suspicious cashout costs you a support ticket. Sending it costs you the money permanently.

The loss that arrives twice#

The thing that makes reward fraud more expensive than it first appears is the reversal cycle.

A fraudulent conversion pays you, you credit the user, the user cashes out. Weeks later the network reverses the conversion because the advertiser rejected it. You have now lost the payout you already sent and the revenue that was funding it, and your reversal rate is worse in the partner's dashboard for the next negotiation.

That second effect is the one to protect. A poor invalid-traffic rate is a commercial problem with your networks long after the individual money is gone, and it constrains which offers you get access to.

Fraud you can afford, and fraud you cannot#

Not all of this is worth chasing, and the honest position is that some abuse is a cost of doing business.

A user who games one offer for a few dollars is annoying and not worth an engineer's afternoon. A ring running forty accounts into one wallet is worth stopping today. The difference is concentration, and concentration is only visible if you are scoring the payout and linking on entities rather than checking accounts one at a time.

Set your threshold where the loss actually is, not where the volume is.

Manual review is not a failure state#

For this vertical specifically, review is often the correct default rather than block.

The population is full of genuinely ambiguous cases: shared devices in one household, students on a university network, users in markets where carrier-grade NAT puts thousands behind one address. Blocking those outright generates support load and public complaints, and reward audiences are vocal.

A queue where a human sees the twenty highest-risk cashouts a day, with the reasons attached, is usually a better fit than an automated block, and it is the configuration we would suggest starting with.

Scoring both ends#

Two calls with the same identity fields, on the two events that matter. The signup call is cheap and mostly builds the history the second one reads:

app/api/signup/route.ts
import { Kaidn } from "@kaidn/sdk";

const kaidn = new Kaidn({ apiKey: process.env.KAIDN_API_KEY });

const r = await kaidn.score({
  event: "signup",
  user_id: user.id,
  ip: req.ip,
  email: user.email,
  device_id: body.kaidn_device_id,
  event_country: offer.country,        // where the offer expects the user to be
  ip_country: req.headers["cf-ipcountry"],
});

// let them in; hold what the account is WORTH
if (r.verdict !== "allow") await markBonusHold(user.id, r.event_id);
app/api/cashout/route.ts
const r = await kaidn.score({
  event: "cashout",
  user_id: user.id,
  ip: req.ip,
  email: user.email,
  device_id: body.kaidn_device_id,
});

if (r.verdict === "block") return holdPayout(user.id, r.reason_text);
if (r.verdict === "review") return queueForReview(user.id, r.event_id);

return payout(user.id);

The join Kaidn does not make for you#

Payout convergence is the strongest signal in this vertical and it is not a Kaidn check, because the API takes no payout-destination field. It is a short query on your own side and it is worth writing:

accounts converging on one destination
SELECT payout_destination, count(DISTINCT user_id) AS accounts, sum(amount) AS total
FROM payouts
WHERE created_at > now() - interval '30 days'
GROUP BY payout_destination
HAVING count(DISTINCT user_id) > 3
ORDER BY total DESC;

Combine that with the cashout verdict and you have both halves: Kaidn says this account looks like other accounts, and your own data says here is where they all send the money.

Where we sit#

This is the vertical Kaidn was built around first, so the signals are tuned for it: email identity, device continuity, ASN reputation, velocity across the funnel, and a cross-operator graph that links entities seen at other operators. Verdicts come back with the checks that fired and their weights.

We do not do KYC, we are not a payments processor, and we do not replace your relationship with your networks. We score events and explain the answer.

Frequently asked questions

Where should a rewards site score first, if it can only score one event?

The cashout. At signup the farmer has told you almost nothing: a working email, a plausible name, a real device, an address belonging to somebody's house. By the time value moves they have told you which accounts qualified in the same unusual way, in the same window, through the same networks, and whether the device came back. The registration is the cheapest event to score and the least informative.

Why does reward fraud cost twice?

Because you pay the reward and then you lose the campaign. The payout itself is the visible loss. The second loss is your standing with the network or advertiser: a partner seeing farmed conversions will claw them back or drop the campaign, and the acquisition budget behind the offer converted at nothing rather than at the number your dashboard showed.

Is manual review a failure state?

No, it is the correct outcome for the ambiguous middle and the whole reason a three-way verdict exists rather than a boolean. What does not scale is manual review of the entire funnel. Route allow and block automatically, and spend the analyst hours on the review band, where the evidence genuinely is mixed.

Does Kaidn detect payout convergence?

Not directly. Kaidn scores the cashout event and returns device, mailbox, network and velocity evidence about the account performing it. Counting how many accounts withdraw to the same destination is a join on your own side, because Kaidn does not take a payout destination field. It is worth building: convergence is the point at which forty independent-looking accounts stop looking independent.

We are pre-launch. Should we integrate now?

Probably not. The signals here get better with volume, because most of them are statements about other accounts, and a store with nothing in it cannot link anything. Come back when you have traffic and a loss you can measure.

Run it on your own traffic

10,000 events a month free, no card. Every verdict returns the checks that fired and their weights, so you can see which signal caught it.

Other business types