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
Build a payments page
Build a custom integration with Elements
Build an in-app integration
Use Managed Payments
Recurring payments
In-person payments
Terminal overview
Availability
Readers
No code
Custom integration
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
Radar
    Overview
    How Radar works
    Understand fraud
    Set up your integration
    Risk factors recommendations
    Risk controls and settings
    Risk prevention features
    Transaction risk prevention
    Customer abuse prevention
    Account fraud prevention
      Account risk signals
      Fraudulent merchant
      Merchant delinquency risk
      Payment delinquency exposure
      Fraudulent website
    Non-Stripe payment processor risk prevention
    Issuing authorization risk prevention
    Rules engine and analytics
    Rules
    Radar analytics
Payouts
ReceiptsRefunds and cancellations
Advanced integrations
Custom payment flows
Flexible acquiring
Off-Session Payments
Multiprocessor orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Financial Connections
Climate
Verify identities
United States
English (United States)
  1. Home/
  2. Payments/
  3. Radar/
  4. Account fraud prevention
Private preview

Fraudulent website signalPrivate preview

Evaluate connected account websites for suspicious or misleading content.

The fraudulent website signal evaluates whether a connected account’s website is deceptive or violates policy. This includes websites for accounts that don’t exist yet on Stripe.

Get early access to the fraudulent website signal.

Enter your email to request access.

Email
Submit
Privacy policy

Request an evaluation

Use the Account Evaluations API to trigger a fraudulent website evaluation on demand. You can evaluate an existing connected account or provide account data directly.

Evaluate an existing account

You can evaluate a website for an existing account.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/signals/account_evaluations \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview" \ --json '{ "account_details": { "account":
"{{CONNECTED_ACCOUNT_ID}}"
}, "requested_signals": [ "fraudulent_website" ] }'

Evaluate without an existing account

You can evaluate a website before creating a connected account by providing account_details.data with the business URL. The business_url field is the only required field for an entity-less evaluation. You can provide other fields to improve the accuracy of the assessment.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/signals/account_evaluations \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview" \ --json '{ "account_details": { "data": { "defaults": { "profile": { "business_url": "https://example.com" } } } }, "requested_signals": [ "fraudulent_website" ] }'

Webhook events

The evaluation is asynchronous. Listen for:

  • v2.signals.account_signal.fraudulent_website_ready when you request a fraudulent website evaluation.
  • v2.signals.account_evaluation.complete when you request multiple signals and want one notification after all results are ready.

These are thin events: data is always {}. Use related_object.id to fetch the related signal or evaluation.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v2/signals/account_signals/acctsig_61UDQe5wRb3w1JgCP16UDQb80xSQmM6vEqeUAlKES \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview"
{ "id": "acctsig_61UDQe5wRb3w1JgCP16UDQb80xSQmM6vEqeUAlKES", "object": "v2.signals.account_signal", "type": "fraudulent_website", "account_details": { "account": "acct_1T42eHAZTJIN1MEb" }, "account_evaluation": "acctevl_61UDQe5wRb3w1JgCP16UDQb80xSQmM6vEqeUAlKES", "created": "2026-02-26T00:43:28.000Z", "fraudulent_website": { "risk_level": "elevated", "details": "The website contains several indicators of potential fraud: product listings use vague descriptions inconsistent with industry norms, the contact page lacks a verifiable address, and images appear to be stock photos presented as original product photos." } }

Alternatively, if you received a v2.signals.account_evaluation.complete event, use related_object.id to fetch the full evaluation, which includes the signal result in evaluated_signals:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v2/signals/account_evaluations/acctevl_61UDQe5wRb3w1JgCP16UDQb80xSQmM6vEqeUAlKES \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview"
{ "id": "acctevl_61UDQe5wRb3w1JgCP16UDQb80xSQmM6vEqeUAlKES", "object": "v2.signals.account_evaluation", "account_details": { "account": "acct_1T42eHAZTJIN1MEb" }, "requested_signals": ["fraudulent_website"], "pending_signals": [], "evaluated_signals": { "fraudulent_website": { "signal": "acctsig_61UDQe5wRb3w1JgCP16UDQb80xSQmM6vEqeUAlKES", "evaluated_at": "2026-02-26T00:43:28.000Z", "risk_level": "elevated", "details": "The website contains several indicators of potential fraud: product listings use vague descriptions inconsistent with industry norms, the contact page lacks a verifiable address, and images appear to be stock photos presented as original product photos." } } }

The signal includes the following information:

FieldDescription
risk_levelThe risk level for the website: low, normal, elevated, highest, or unknown.
detailsA plain description of issues found on the website, generated by LLM analysis. If the risk_level is unknown, the explanation includes why we couldn’t complete the evaluation.

Note

If the website URL is invalid or unreachable, the evaluation returns a risk level of unknown with an explanation of why we couldn’t complete the evaluation.

Test in a sandbox

You can trigger a fraudulent_website evaluation in a sandbox and receive a deterministic result without waiting for a real website crawl. Use one of the reserved test URLs as the business_url in your evaluation request.

URLrisk_level result
https://fraudulent-website.test/lowlow
https://fraudulent-website.test/normalnormal
https://fraudulent-website.test/elevatedelevated
https://fraudulent-website.test/highesthighest
https://fraudulent-website.test/unknownunknown
Any other URLnormal (standard mock response)

Note

Reserved URLs only work in a sandbox. Live mode always performs a real website evaluation.

Test with an existing account

In a sandbox, update your connected account’s business URL to a reserved test URL, then trigger the evaluation.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/core/accounts/
{{CONNECTED_ACCOUNT_ID}}
\ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview" \ --json '{ "defaults": { "profile": { "business_url": "https://fraudulent-website.test/elevated" } } }'
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/signals/account_evaluations \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview" \ --json '{ "account_details": { "account":
"{{CONNECTED_ACCOUNT_ID}}"
}, "requested_signals": [ "fraudulent_website" ] }'

Test with an entity-less evaluation

Pass a reserved test URL as business_url in account_details.data:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/signals/account_evaluations \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview" \ --json '{ "account_details": { "data": { "defaults": { "profile": { "business_url": "https://fraudulent-website.test/highest" } } } }, "requested_signals": [ "fraudulent_website" ] }'

Take action on connected accounts

You can respond to the fraudulent website signals that you receive for a connected account using the Radar tools. See the list of available actions.

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc
On this page