Fraud Prevention

Supercharge Your Stripe Radar with ATO Risk Signals

Ready to get more out of your fraud solution? Track your login events in Sumatra and start sending powerful Account-Takeover risk signals to Stripe at purchase time. Try for free

Fraud Prevention

Supercharge Your Stripe Radar with ATO Risk Signals

Ready to get more out of your fraud solution? Track your login events in Sumatra and start sending powerful Account-Takeover risk signals to Stripe at purchase time. Try for free

Fraud Prevention

Supercharge Your Stripe Radar with ATO Risk Signals

Ready to get more out of your fraud solution? Track your login events in Sumatra and start sending powerful Account-Takeover risk signals to Stripe at purchase time. Try for free

Problem

Radar can't see logins

Stripe Radar is great at identifying payment risk, but it lacks the risk signals to identify account takeover, because it can't see login behavior.

Solution

Add signals from Sumatra

Send logins to Sumatra, compute powerful ATO signals, and pass those signals to Stripe to add risk at purchase time.

Result

Able to write better rules

Fraud team can start writing better rules in minutes, stopping attackers from getting their goods out the door.

Problem

Radar can't see logins

Stripe Radar is great at identifying payment risk, but it lacks the risk signals to identify account takeover, because it can't see login behavior.

Solution

Add signals from Sumatra

Send logins to Sumatra, compute powerful ATO signals, and pass those signals to Stripe to add risk at purchase time.

Result

Able to write better rules

Fraud team can start writing better rules in minutes, stopping attackers from getting their goods out the door.

Problem

Radar can't see logins

Stripe Radar is great at identifying payment risk, but it lacks the risk signals to identify account takeover, because it can't see login behavior.

Solution

Add signals from Sumatra

Send logins to Sumatra, compute powerful ATO signals, and pass those signals to Stripe to add risk at purchase time.

Result

Able to write better rules

Fraud team can start writing better rules in minutes, stopping attackers from getting their goods out the door.

To stop Account Takeover, you need the full picture

To stop Account Takeover, you need the full picture

Implementing this recipe with Sumatra is as easy as pasting a few lines of code into the Sumatra Editor and adding a couple of API calls to your back end.

Implementing this recipe with Sumatra is as easy as pasting a few lines of code into the Sumatra Editor and adding a couple of API calls to your back end.

1. Send Login Events to Sumatra

1. Send Login Events to Sumatra

On every login attempt, call the Sumatra SDK from your back end (Node or Python) to pass attributes asynchronously to Sumatra:

On every login attempt, call the Sumatra SDK from your back end (Node or Python) to pass attributes asynchronously to Sumatra:

# server.py
import sumatra
sumatra.api_key = "7c096c2f-4023-4696-814e-a4c371517e8e"

sumatra.track("login", {
    "user_id": "user@example.com",
    "ip": "205.12.234.7",
    "successful": True
})

2. Copy-Paste Proven ATO Signals

2. Copy-Paste Proven ATO Signals

The following feature code, written in Scowl, identifies risky login activity and makes those signals available at purchase time:

The following feature code, written in Scowl, identifies risky login activity and makes those signals available at purchase time:

event login
failed_users_by_ip_15m := CountUnique(
    user_id
    by ip
    where not successful
    last 15 minutes)

event purchase
-- brute-force attack signal
failed_logins_by_user_5d := Count<login>(
    by user_id
    where not successful
    last 5 days)
-- credential-stuffing attack signal
failed_users_by_login_ip_5d := Max<login>(
    failed_users_by_ip_15m
    by user_id
    where successful -- attacker eventually succeeded
    last 5 days)
to_stripe = {failed_logins_by_user_5d, failed_users_by_login_ip_5d}

When you paste this snippet into the Sumatra Editor and click "Apply", you deploy a scalable, serverless feature service with stateful risk signals, in just a few seconds.

When you paste this snippet into the Sumatra Editor and click "Apply", you deploy a scalable, serverless feature service with stateful risk signals, in just a few seconds.

3. Fetch and Pass Signals to Stripe

3. Fetch and Pass Signals to Stripe

Call Sumatra's enrich function to fetch the features you configured and pass these signals along to Stripe as metadata:

Call Sumatra's enrich function to fetch the features you configured and pass these signals along to Stripe as metadata:

# server.py
features = sumatra.enrich("purchase", {
    "user_id": "user@example.com"
})

stripe.Charge.create(
    amount=2000,
    currency="usd",
    source="tok_amex",
    # add Sumatra features to metadata
    metadata=dict(order_id="12345", **features["to_stripe"]),
)

That's it!

That's it!

With the integration complete, you can continue to add more and more Sumatra features without touching your backend code again.

As soon as the first purchase with new metadata is processed, you can start writing rules on the new signals!

With the integration complete, you can continue to add more and more Sumatra features without touching your backend code again.

As soon as the first purchase with new metadata is processed, you can start writing rules on the new signals!

To check out another recipe for reducing fraud and abuse with Sumatra, see: Prevent Fake Account Creation with Smart Rate Limiting.

To check out another recipe for reducing fraud and abuse with Sumatra, see: Prevent Fake Account Creation with Smart Rate Limiting.

Get started

Get AI without the gimmicks

Get started

Get AI without the gimmicks

Get started

Get AI without the gimmicks