Fraud scoring for marketplaces
Also called: two-sided marketplace · peer-to-peer marketplace · gig platform · seller payouts
How the money moves
Buyers pay in, you hold funds briefly, sellers are paid out. You take a cut in the middle. That gap between money arriving and money leaving is your entire exposure, and its length decides how much fraud you can catch before it becomes unrecoverable.
Where it leaves
- arrow_outwardSeller payouts, which are the irreversible leg. Once funds reach a seller's bank or wallet, recovery is a legal process rather than a technical one.
- arrow_outwardBuyer refunds and chargebacks on transactions you have already paid the seller for, leaving you covering both sides.
- arrow_outwardCollusive transactions where buyer and seller are the same operator, using stolen cards to convert them into clean payouts through your platform.
- arrow_outwardPromotional credit and first-order discounts, farmed at the buyer end with fresh accounts.
- arrow_outwardFees you never collected, on transactions taken off-platform after contact was made on it.
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 marketplaces.
The seller payout
The irreversible leg, and the one worth scoring hardest. A payout destination shared across supposedly unrelated seller accounts is the clearest signal of a collusion ring, and it is invisible if you only score listings and logins.
Seller onboarding
A fraudulent seller account is set up before it is used, often long before. Scoring at onboarding, when the account has no history to hide behind, is cheap and catches the operators who register in batches.
The transaction itself
Where buyer-side and seller-side risk meet. The signal that matters is not the transaction in isolation but the relationship: a buyer and seller who share a device, a network or a payout destination are not two parties.
Payout destination changes
The marketplace equivalent of a recovery-email change in account takeover. A seller account with real history whose bank details change days before a large payout deserves a hold, and this is a common outcome of a compromised seller account.
The patterns you will see
Account takeover
Established seller accounts are valuable precisely because they have history and reviews. Taking one over is faster than building one.
Card testing
Marketplaces with fast, low-value checkout are attractive validation endpoints, and the decline-rate damage lands on you.
Multi-accounting
Sellers evading suspension, and buyers farming first-order promotions, both show up as duplicate accounts.
Fake signups
Bulk seller accounts registered in advance, aged, and used later or sold on.
When we are not the answer
- blockIf you are single-sided and take no payouts, most of the value here does not apply. Your risk is payments fraud and belongs with a payments-focused tool.
- blockIf your core problem is counterfeit or prohibited goods, that is content moderation and classification, not behavioural fraud scoring, and we do not do it.
- blockIf you need identity verification on sellers for regulatory reasons, buy a KYC provider. We are not one and cannot be made into one.
- blockIf disputes and chargeback representment are the bulk of your loss, a payments platform will serve you better than we will.
Marketplaces are harder than single-sided businesses for a reason that is easy to state and awkward to build around: you have two populations with opposite incentives, and abuse frequently involves both at once, sometimes operated by the same person.
Most fraud tooling assumes one user doing one suspicious thing. Here the suspicious thing is often a perfectly ordinary transaction between two accounts that should not know each other.
The gap is the exposure#
Money arrives from a buyer and leaves to a seller. Everything you can do sits in that window.
If you pay out instantly, you have chosen to have almost no fraud window, and you will absorb the losses accordingly. If you hold for a week, you can catch a great deal more and you have made your sellers' cash flow worse, which is a real product cost in a competitive market.
That trade is a business decision rather than a technical one, and it is worth making deliberately rather than inheriting from whatever the payments integration did by default. Risk-based holds, where most sellers are paid fast and a scored minority waits, are usually the better answer than one global delay.
Collusion is a relationship problem#
The pattern that costs marketplaces most is not a lone bad actor. It is a buyer and a seller who are the same operator: a stolen card buys a nonexistent item from a seller account they control, and your platform converts card fraud into a clean bank transfer.
Nothing about either account is individually alarming. The buyer bought something. The seller sold something. The fraud is entirely in the relationship, and the relationship is only visible if you are linking entities across accounts rather than scoring each account alone.
Shared devices, shared networks, shared payout destinations, and transaction graphs with suspiciously short cycles are what surface it.
Seller accounts are an asset, so they get stolen#
A seller account with two years of history and four hundred reviews is worth more than a new one, and it takes minutes to take over versus years to build.
The tell is almost never the login. It is the payout destination changing shortly before a withdrawal, or a listing pattern that breaks with everything the account did previously. Score those as their own events, with the login context attached, and hold payouts on a destination change until the real owner confirms.
That single control catches a category of loss that login monitoring alone will miss.
Scoring the payout and the destination change#
Two events carry most of a marketplace's exposure, and neither of them is the signup:
const r = await kaidn.score({ event: "seller_payout", user_id: seller.id, ip: req.ip, email: seller.email, device_id: body.kaidn_device_id, }); if (r.verdict === "block") return holdPayout(seller.id, r.reason_text); if (r.verdict === "review") return queueForReview(seller.id, r.event_id); return releasePayout(seller.id);
// the highest-value control on this page, and most of it is not the score const r = await kaidn.score({ event: "payout_destination_change", user_id: seller.id, ip: req.ip, email: seller.email, device_id: body.kaidn_device_id, }); const newDevice = !(await db.accountDevices.exists({ user_id: seller.id, device_id: body.kaidn_device_id, })); if (newDevice || r.verdict !== "allow") { await holdDestinationChange(seller.id, "24h"); await notifyPreviousContact(seller, r.event_id); // the details from BEFORE the change return { status: "pending" }; }
Finding collusion in your own order table#
Kaidn scores identities, not orders. The circular-flow half is a query you own, and it is short:
SELECT buyer_id, seller_id, count(*) AS orders, sum(total) AS value FROM orders WHERE created_at > now() - interval '90 days' GROUP BY buyer_id, seller_id HAVING count(*) > 4 AND count(*) = (SELECT count(*) FROM orders o2 WHERE o2.buyer_id = orders.buyer_id) ORDER BY value DESC;
A buyer whose entire history is with one seller is not proof of anything on its own. A buyer whose entire history is with one seller, and who shares a resolved device with them, is.
Where we sit#
We score events on both sides with the same engine, and the value is in linking them: device, network, email identity, payout destination and velocity across accounts, with verdicts carrying the checks that fired and their weights.
We are not a payments processor and we do not handle disputes or representment. We do not do KYC and we do not classify listings. If your problem is counterfeit goods or regulatory identity checks, those are different products and you should buy them.
Frequently asked questions
Where is a marketplace actually exposed?
In the gap between taking a buyer's money and releasing a seller's payout. That window is the product: it is what makes the marketplace trustworthy, and it is also the entire attack surface, because everything a fraudster does is aimed at getting value out of it before the truth catches up. Score the payout and you are scoring the exposure; score only the signup and you are scoring the cheapest moment.
Why is collusion hard to detect per account?
Because both sides of a colluding pair are behaving perfectly normally. A buyer buys and a seller sells, and no individual account does anything a rule can object to. What is wrong is the relationship: the same device or network on both sides, transaction patterns that only ever involve each other, and value moving in a circle. That is a graph question, not a per-account one.
Do seller accounts get stolen?
Constantly, and an established seller account is one of the most valuable things on a marketplace: it carries reputation, reviews and a payout channel that already exists. The takeover pattern is a login from an unfamiliar device followed quickly by a payout-destination change, which is why that change deserves to be its own scored event rather than a settings update.
What is the single highest-value control?
A hold on the payout-destination change. Twenty-four hours plus a notification to the contact details that were on file before the change gives the real owner the one thing an attacker needs them not to have, which is time. It costs almost nothing and catches takeovers that no scoring layer would have refused outright.
Can Kaidn see the transaction graph between buyers and sellers?
It sees the identity evidence on each event: the device, the resolved mailbox, the network, the velocity. It does not hold your order table, so circular value flow between a buyer and a seller is a query you run on your own data. Kaidn tells you these two accounts look related; your order history tells you they only ever trade with each other.
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.