How Stripe Radar’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score22/100
Agent-ready 49.5 × 0.30 = 14.85
API quality 6.0 × 0.20 = 1.20
Openness 3.4 × 0.20 = 0.68
Built-in AI 8.0 × 0.15 = 1.20
Automation 28.0 × 0.15 = 4.20
(14.85 + 1.20 + 0.68 + 1.20 + 4.20) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 22.13 ÷ 1.00 = 22.1
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready49.5/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [probe] https://docs.stripe.com/llms.txt“PROBE llms.txt: HTTP 200 at https://docs.stripe.com/llms.txt # Stripe Documentation When installing Stripe packages, always check the npm registry for the latest version rather tha”
- [probe] https://docs.stripe.com/radar.md“PROBE docs-md: HTTP 200 at https://docs.stripe.com/radar.md # Radar Use Stripe Radar to protect your business against fraud. ## Get started Use Radar to evaluate transactions, a”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.stripe.com/api/radar/reviews.md“POST /v1/reviews/:id/approve”
- [claimed-docs] https://docs.stripe.com/radar/testing.md“4000000000004954 | Results in a charge with a risk level of `highest`”
- [probe] https://docs.stripe.com/stripe-cli“official CLI documented at https://docs.stripe.com/stripe-cli”
- [community] https://hn.algolia.com/api/v1/items/13939674“We are seeing an opposite side: customers using Stripe that had very low fraud rates previously are now getting more false positives causing grief because their customers' cards are getting declined. The lack of easy programmatic control is an issue for us.”
Plug MCP servers into this product so it can use their toolsweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [probe] https://docs.stripe.com/mcp“official MCP server documented at https://docs.stripe.com/mcp”
Connect an agent via an official MCP serverweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [probe] https://docs.stripe.com/mcp“official MCP server documented at https://docs.stripe.com/mcp”
Use an official CLIweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [probe] https://docs.stripe.com/stripe-cli“official CLI documented at https://docs.stripe.com/stripe-cli”
Drive the product through a documented public APIweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://docs.stripe.com/api/radar/reviews.md“POST /v1/reviews/:id/approve”
- [claimed-docs] https://docs.stripe.com/api/radar/early_fraud_warnings.md“An early fraud warning indicates that the card issuer has notified us that a charge may be fraudulent.”
- [claimed-docs] https://docs.stripe.com/api/radar/value_lists.md“Value lists allow you to group values together which can then be referenced in rules.”
- [probe] https://docs.stripe.com/radar.md“PROBE docs-md: HTTP 200 at https://docs.stripe.com/radar.md # Radar Use Stripe Radar to protect your business against fraud. ## Get started Use Radar to evaluate transactions, a”
- [probe] https://docs.stripe.com/mcp“official MCP server documented at https://docs.stripe.com/mcp”
- [probe] https://docs.stripe.com/stripe-cli“official CLI documented at https://docs.stripe.com/stripe-cli”
- [probe] https://docs.stripe.com/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.stripe.com/openapi.json, https://docs.stripe.com/swagger.json, https://docs.stripe.com/api/openapi.json, https://docs.stripe.com/.well-known/openapi.json)”
Issue scoped/least-privilege API credentials for an agentweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Build against official SDKsweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.stripe.com/api/radar/reviews.md“POST /v1/reviews/:id/approve”
- [claimed-docs] https://docs.stripe.com/api/radar/early_fraud_warnings.md“An early fraud warning indicates that the card issuer has notified us that a charge may be fraudulent.”
- [probe] https://docs.stripe.com/stripe-cli“official CLI documented at https://docs.stripe.com/stripe-cli”
- [probe] https://docs.stripe.com/radar.md“PROBE docs-md: HTTP 200 at https://docs.stripe.com/radar.md # Radar Use Stripe Radar to protect your business against fraud. ## Get started Use Radar to evaluate transactions, a”
Subscribe to events via webhooksweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Agent-ready = 94.0 ÷ 190 × 100 = 49.5
API quality6.0/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.stripe.com/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.stripe.com/openapi.json, https://docs.stripe.com/swagger.json, https://docs.stripe.com/api/openapi.json, https://docs.stripe.com/.well-known/openapi.json)”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.stripe.com/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.stripe.com/openapi.json, https://docs.stripe.com/swagger.json, https://docs.stripe.com/api/openapi.json, https://docs.stripe.com/.well-known/openapi.json)”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 7 (quality) × 0.6 (partial) = 4.2 of 10 max
- [claimed-docs] https://docs.stripe.com/radar/testing.md“4000000000004954 | Results in a charge with a risk level of `highest`”
- [probe] https://docs.stripe.com/radar.md“PROBE docs-md: HTTP 200 at https://docs.stripe.com/radar.md # Radar Use Stripe Radar to protect your business against fraud. ## Get started Use Radar to evaluate transactions, a”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
API quality = 4.2 ÷ 70 × 100 = 6.0
Openness3.4/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 4 (quality) × 0.3 (disputed) = 2.4 of 20 max
- [claimed-docs] https://docs.stripe.com/radar/rules/reference.md“you can also set up rules that are unique to your business using the supported attributes”
- [claimed-docs] https://docs.stripe.com/radar/risk-settings.md“Risk settings let you balance authorization and fraud on your account by using risk controls.”
- [claimed-docs] https://docs.stripe.com/api/radar/reviews.md“POST /v1/reviews/:id/approve”
- [claimed-docs] https://docs.stripe.com/api/radar/early_fraud_warnings.md“An early fraud warning indicates that the card issuer has notified us that a charge may be fraudulent.”
- [claimed-docs] https://docs.stripe.com/api/radar/value_lists.md“Value lists allow you to group values together which can then be referenced in rules.”
- [community] https://hn.algolia.com/api/v1/items/13939674“We are seeing an opposite side: customers using Stripe that had very low fraud rates previously are now getting more false positives causing grief because their customers' cards are getting declined. The lack of easy programmatic control is an issue for us.”
- [community] https://news.ycombinator.com/item?id=32320364“Allow Rules, if not implemented properly, could open a vector for fraud. That's why it's not enabled for newer businesses on Stripe—we ask businesses to contact support to turn it on manually.”
Export all of my data in open formats and leaveweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Read the product's source under an open licenseweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Self-host the core productweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Openness = 2.4 ÷ 70 × 100 = 3.4
Built-in AI8.0/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://docs.stripe.com/radar/rules.md“Request 3D Secure (3DS) for all payments that support it and are made by a new customer”
- [claimed-docs] https://docs.stripe.com/radar/rules.md“Review and automatically pause payouts on accounts that have a high dispute rate”
- [claimed-docs] https://docs.stripe.com/radar/rules/reference.md“you can also set up rules that are unique to your business using the supported attributes”
- [claimed-docs] https://docs.stripe.com/radar/risk-settings.md“Risk settings let you balance authorization and fraud on your account by using risk controls.”
- [claimed-docs] https://docs.stripe.com/radar/lists.md“Customer IDs for trusted customers: Use this list to automatically allow payments by these customers.”
- [community] https://hn.algolia.com/api/v1/items/13939674“We are seeing an opposite side: customers using Stripe that had very low fraud rates previously are now getting more false positives causing grief because their customers' cards are getting declined. The lack of easy programmatic control is an issue for us.”
- [community] https://hn.algolia.com/api/v1/items/13939674“We got a couple cases of false positives ourselves, and the Stripe UI wasn't very clear that we couldn't override the 'block' (the button was there but didn't do anything). A quick email to Stripe support got the transactions whitelisted within hours.”
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Operate the product with natural-language commandsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.stripe.com/radar/rules/reference.md“you can also set up rules that are unique to your business using the supported attributes”
- [claimed-docs] https://docs.stripe.com/api/radar/value_lists.md“Value lists allow you to group values together which can then be referenced in rules.”
- [probe] https://docs.stripe.com/mcp“official MCP server documented at https://docs.stripe.com/mcp”
Built-in AI = 7.2 ÷ 90 × 100 = 8.0
Automation28.0/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.stripe.com/radar/rules.md“Request 3D Secure (3DS) for all payments that support it and are made by a new customer”
- [claimed-docs] https://docs.stripe.com/radar/rules/reference.md“you can also set up rules that are unique to your business using the supported attributes”
- [claimed-docs] https://docs.stripe.com/api/radar/value_lists.md“Value lists allow you to group values together which can then be referenced in rules.”
- [claimed-docs] https://docs.stripe.com/radar/transaction-reviews.md“You can create a targeted list of payments to review with criteria that you specify, and review them in the Dashboard.”
- [claimed-docs] https://docs.stripe.com/radar/lists.md“Customer IDs for trusted customers: Use this list to automatically allow payments by these customers.”
- [claimed-docs] https://docs.stripe.com/api/radar/reviews.md“POST /v1/reviews/:id/approve”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://docs.stripe.com/radar/rules.md“Request 3D Secure (3DS) for all payments that support it and are made by a new customer”
- [claimed-docs] https://docs.stripe.com/radar/rules.md“Review and automatically pause payouts on accounts that have a high dispute rate”
- [claimed-docs] https://docs.stripe.com/radar/rules/reference.md“you can also set up rules that are unique to your business using the supported attributes”
- [claimed-docs] https://docs.stripe.com/api/radar/value_lists.md“Value lists allow you to group values together which can then be referenced in rules.”
- [claimed-docs] https://docs.stripe.com/radar/risk-settings.md“Risk settings let you balance authorization and fraud on your account by using risk controls.”
- [claimed-docs] https://docs.stripe.com/radar/lists.md“Customer IDs for trusted customers: Use this list to automatically allow payments by these customers.”
- [community] https://hn.algolia.com/api/v1/items/13939674“We are seeing an opposite side: customers using Stripe that had very low fraud rates previously are now getting more false positives causing grief because their customers' cards are getting declined. The lack of easy programmatic control is an issue for us.”
- [community] https://news.ycombinator.com/item?id=32320364“Allow Rules, if not implemented properly, could open a vector for fraud. That's why it's not enabled for newer businesses on Stripe—we ask businesses to contact support to turn it on manually.”
Schedule recurring jobs or workflowsweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Version, review, and roll back my automationsweight 1
1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Automation = 16.8 ÷ 60 × 100 = 28.0