Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
OverviewAccept a paymentUpgrade your integration
Online payments
OverviewFind your use case
Use Payment Links
Use a pre-built checkout page
Build a custom integration with Elements
Build an in-app integration
Use Managed Payments
Recurring payments
In-person payments
Terminal
Payment Methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment operations
Analytics
Balances and settlement time
Compliance and security
Currencies
Declines
Disputes
Fraud prevention
Radar fraud protection
    Overview
    Optimise fraud signals
    Radar Session
    Risk evaluation
    Customer abuse evaluation
    Multi-processor Radar scores
    Risk settings
    Reviews
    Lists
    Rules
    Local payment methods
    Radar analytics
    Radar for Platforms
Payouts
ReceiptsRefunds and cancellations
Advanced integrations
Custom payment flows
Flexible acquiring
Off-Session Payments
Multiprocessor orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Machine payments
Financial Connections
Climate
Verify identities
United States
English (United Kingdom)
HomePaymentsRadar fraud protection

Customer abuse evaluationPrivate preview

Get risk evaluations for customer account registration and login events.

The Customer Account Evaluation API provides risk intelligence for your registration and login flows to detect multi-accounting patterns and suspicious account sharing:

  • No payment collection required: Evaluate risk during registration and at login, before collecting any payment information.
  • Get risk scores upfunnel: Apply decision signals earlier in your workflow to get risk scores sooner (login or registration) than traditional Stripe PaymentIntents. This can help you make informed decisions about allowing or blocking account access where service abuse is suspected.

Account evaluation lifecycle

To request an account evaluation for to detect abuse:

  1. On the client side, use Stripe.js to create a Radar Session that captures device metadata, then send the session token to your server.
  2. Create a customer or prepare end user data for inline customer creation.
  3. Request an AccountEvaluation when customers register or log in.
  4. After the customer registers or logs in, report the outcome to Stripe to improve future evaluations.

The following diagram shows the high-level interactions between you (the business), Stripe and your end customer at registration time.

Create a Radar Session

Before requesting an account evaluation, you need to capture device metadata from the client using Stripe.js. Pass the Radar Session token from the response to your server to use it in the Account Evaluation request. Learn more about Radar Sessions.

Create an AccountEvaluation

After you create a Radar Session to capture device metadata, request an AccountEvaluation to get risk signals from Stripe. The evaluation uses type-based polymorphism to support different event types.

Registration flow

Use the registration_initiated type to evaluate new user registrations. You can reference an existing Customer or create one inline. Preserve the customer ID for use in future payment requests to ensure accurate fraud detection.

Using an existing Customer

Command Line
cURL
No results
curl https://api.stripe.com/v1/radar/account_evaluations \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-10-29.preview" \ -d type=registration_initiated \ -d "registration_initiated[customer]"=
"{{CUSTOMER_ID}}"
\ --data-urlencode "registration_initiated[client_device_metadata_details][radar_session]"="rse_****"

Using inline customer creation

If you don’t provide an existing customer ID, Stripe creates a new Customer object using customer_data.

Command Line
cURL
No results
curl https://api.stripe.com/v1/radar/account_evaluations \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-10-29.preview" \ -d type=registration_initiated \ --data-urlencode "registration_initiated[customer_data][email]"="user@example.com" \ --data-urlencode "registration_initiated[client_device_metadata_details][radar_session]"="rse_****"

Login flow

Use the login_initiated type to evaluate user login attempts and detect account sharing patterns. Use the same customer ID that you created during registration.

Command Line
cURL
No results
curl https://api.stripe.com/v1/radar/account_evaluations \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-10-29.preview" \ -d type=login_initiated \ --data-urlencode "login_initiated[customer]"="cus_****" \ --data-urlencode "login_initiated[client_device_metadata_details][radar_session]"="rse_****"

Risk signals

Stripe returns risk signals in the response based on the evaluation type. Use these signals to make informed decisions about allowing or blocking the action.

Evaluation typeSignal returnedDescription
registration_initiatedmulti_accountingRisk that the same end customer is registering multiple times
login_initiatedaccount_sharingRisk that the same account is being used from multiple locations simultaneously

Each signal includes a score.

Report outcome

After you evaluate an account, report the final outcome to Stripe. This feedback improves our accuracy in abuse detection over time.

Call report_event and pass the type of event you’re reporting. Supported event types include:

  • registration_succeeded: Report when a registration completes successfully
  • registration_failed: Report when a registration attempt fails
  • login_succeeded: Report when a login completes successfully
  • login_failed: Report when a login attempt fails

The following example shows a successful registration:

Command Line
cURL
No results
curl https://api.stripe.com/v1/radar/account_evaluations/aceval_******/report_event \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-10-29.preview" \ -d type=registration_succeeded

Retrieve an AccountEvaluation

You can retrieve a previously created AccountEvaluation by ID at any time:

Command Line
cURL
No results
curl https://api.stripe.com/v1/radar/account_evaluations/aceval_****** \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-10-29.preview"

Use with Payment Intents

When creating payments, you must use the same customer ID that you used for the account evaluation. This ensures that we can provide accurate risk assessments by connecting registration, login, and payment activity for the same customer.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-10-29.preview" \ -d amount=1000 \ -d currency=usd \ --data-urlencode customer="cus_****" \ --data-urlencode payment_method="pm_****" \ -d confirm=true

Note

The customer parameter at payment time must match the customer ID used when creating the AccountEvaluation.

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc