At a glance
An estimate of revenue lost to 3D Secure (SCA) friction over the last 30 days. Specifically: charges that were sent through 3DS, the customer abandoned the challenge, and the customer did not retry. Most material for UK and EU stores subject to PSD2 / SCA mandates.
| What it counts | COUNT(charges WHERE three_d_secure.result IN {failed, processor_declined} AND status IN {failed, requires_action, canceled}) × commerce_sibling.aov × abandon_to_lost_sale_correlation_pct. The correlation factor (typically 60, 75%) discounts the gross 3DS-abandon count to reflect customers who would have completed but didn’t because of the friction. |
| API resource & fields | GET /v1/charges, fields payment_method_details.card.three_d_secure.result, status, amount, currency. |
| Currency | The commerce sibling’s primary store currency. Charges in non-primary currencies are FX-converted at the day’s mid-market rate. |
| Fees / processing cost | NOT deducted. The card answers “how much top-line revenue is being lost”, not net. |
| Refunds | NOT a factor. The lost charges never succeeded so could not be refunded. |
| Disputes / chargebacks | NOT a factor. 3DS-authenticated charges have a lower dispute rate (issuer takes liability), but disputes happen on succeeded charges. |
| Failed / declined payments | This is the metric source. Specifically, the 3DS-failed and SCA-abandoned subset (status ∈ {failed, requires_action, canceled} AND 3DS attempted). |
| 3DS handling | Reads three_d_secure.result. Values authenticated are excluded (success); failed, processor_declined, and missing-when-attempted contribute. |
| SCA-required-abandoned | INCLUDED in the numerator. status = requires_action charges where the customer never came back form most of the loss for UK and EU stores. |
| Page cap | 1,000 charges per refresh. High-volume merchants see the trailing edge of the 30-day window dropped. |
| Time window | 30D (rolling) |
| Alert trigger | > $1k/month, calibrated low because 3DS friction loss is usually fixable with frictionless-3DS optimisation, exemptions, and improved challenge UX |
| Roles | owner, finance, marketing |
Calculation
Calculated automatically from your Stripe data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK fashion DTC store on Shopify + Stripe, mostly UK and EU traffic. The 30-day window covers 13 Mar 26 to 12 Apr 26 (980 charges within the cap).three_d_secure.result (when 3DS attempted) | status | Count | Sum (£) | Notes |
|---|---|---|---|---|
authenticated | succeeded | 612 | £58,140 | 3DS worked; not in scope |
failed | failed | 18 | £1,710 | Customer entered wrong code or wrong device |
processor_declined | failed | 6 | £570 | Issuer rejected the auth request |
failed then abandoned | requires_action | 41 | £3,895 | The big bucket: SCA challenge sent, customer never returned |
not_supported | succeeded (no challenge) | 178 | £16,910 | Older cards, no 3DS attempt; not in scope |
- The SCA-abandoned bucket (
requires_action) is the dominant loss. £3,895 of the £6,175 gross sits there: customers got the SCA challenge SMS, didn’t open it, and never came back. This is the friction the card was built to surface; it’s largely invisible on Stripe-only dashboards becauserequires_actioncharges sit between “succeeded” and “failed” filters. - The 35% discount factor is meant to be honest. Of those 65 customers, some would have abandoned for non-3DS reasons (changed mind, found cheaper alternative, hit a shipping issue). The 65% correlation factor reflects the share that would have completed if the SCA step weren’t there. UK fashion has a higher correlation factor than UK electronics (more impulse-driven purchases, larger SCA dropoff).
- The fix is technical, not commercial. Implementing frictionless 3DS (passing more risk-data fields to the issuer to reduce the rate of full challenges), enabling Stripe’s
request_three_d_secure: 'automatic'instead of'any', and using exemptions for low-value transactions can typically halve the friction loss. UK ecommerce best practice is 60, 70% of 3DS attempts ending frictionless.
Sibling cards merchants should reference together
| Card | Why merchants reach for it next to 3DS Friction Loss |
|---|---|
| 3DS Total | The denominator. How many charges had 3DS attempted? Friction-loss share is meaningless without context on attempt volume. |
| 3DS Success Rate | The healthy / unhealthy band. UK ecommerce target is 80, 92% (3DS-authenticated rate), this card surfaces the dollar cost of being below that. |
| 3DS Abandon Rate | The rate complement. Abandon-rate × 3ds-attempted-volume × AOV approximates the gross loss before correlation factor. |
| Auth Rate | 3DS abandons are a significant component of why auth rate falls. The two cards together separate “issuer declines” from “SCA friction”. |
| Decline vs Funnel | The companion cross-channel card. 3DS-driven funnel drops show up there as funnel-only movement (no decline-rate spike). |
| Recoverable Revenue (decline-driven) | Sister cross-channel card. Where this card covers SCA friction, that one covers soft-decline retries. Two different recovery motions. |
| Decline Rate by Card Country | Some EU issuers have stricter SCA enforcement than others; the geographic split helps target the friction-loss fix. |
| Shopify Conversion Rate / BC Conversion Rate | The commerce-side input. Higher AOV → higher per-abandon loss; same friction rate, very different dollar cost. |
Reconciling against the vendor’s own dashboard
Where to look in Stripe Dashboard: Stripe Dashboard does not expose a “3DS friction loss” composite. The closest Stripe-native screens for cross-checking the inputs:- Payments → All payments → filter “Required action” for the SCA-abandoned subset.
- Payments → Failed payments filtered to
outcome.reason = authentication_requiredfor 3DS-failed declines. - Reports → Authentication report for the historical 3DS-attempt and success-rate inputs.
- Settings → Payment methods → 3D Secure for the configured 3DS request mode (
automaticvsanyvschallenge).
- Stripe’s “Requires action” tile. Counts charges in flight, not lost revenue. Most of those will resolve (succeed or fail explicitly) within a few hours; only the abandoned ones contribute to this card.
- Stripe Sigma “3DS abandon” custom queries. Closest equivalent. They typically don’t apply the abandon-to-lost-sale correlation factor; the gross number runs higher than ours.
- GA4 checkout-step-abandonment funnel. Sees the customer abandonment but not the 3DS-specific cause.
| Reason | Direction | Why |
|---|---|---|
| Correlation factor | Ours lower than gross sum | We multiply gross 3DS-friction charges by an abandon-to-lost-sale correlation (60, 75% by vertical) to reflect customers who would have completed without SCA. Stripe Dashboard doesn’t apply this. |
requires_action settlement window | Ours may overcount | We treat requires_action charges older than 6 hours as abandoned. Some merchants run 24h-window resolutions; their numbers will be slightly higher. |
| Page cap (1,000 charges) | Ours based on the most recent slice | The trailing edge of the 30-day window can drop on high-volume merchants. |
| FX conversion | Ours estimate-grade | Multi-currency 3DS charges are converted at the day’s mid-market rate. |
| 3DS attempt detection | Ours strict | We require payment_method_details.card.three_d_secure to be set, not null. Some Stripe Dashboard views include cards that should have done 3DS but didn’t (frictionless flow); ours doesn’t. |
| Time zone | Boundary days drift | Stripe Dashboard runs on the account-level time zone; we use UTC. |
| Comparison | Expected relationship | When divergence is legitimate |
|---|---|---|
stripe_xc_3ds_friction_loss ↔ stripe.stripe_3ds_abandon_rate | The latter is the rate without dollarisation. Loss ≈ abandon_rate × 3ds_attempted_volume × commerce_aov × correlation_factor. | A high abandon rate with a low loss number means low average ticket size; a low rate with a high loss means a few high-value abandoned charges drove most of the cost. |
stripe_xc_3ds_friction_loss ↔ stripe.stripe_xc_decline_vs_funnel | The latter shows funnel-drops without a Stripe-side decline-rate spike (often the 3DS signal). When this card is high, that card frequently shows funnel-only movement. | Both can be elevated for unrelated reasons (Radar block + 3DS abandons co-occurring); the cards are independent measurements. |
stripe_xc_3ds_friction_loss ↔ Shopify / BC / Adobe checkout-completion-rate | The dollar value here approximates the SCA-attributable share of the commerce-platform funnel drop. | Useful when the merchant’s commerce-platform conversion-rate alert fires; this card explains how much of that drop is Stripe-3DS-friction-related. |
Known limitations / merchant FAQs
Reconciliation questions are answered in the Reconciling against the vendor’s own dashboard section above.**“My US store has 0. If your US store sees a non-zero number, it’s usually international cards on the same Stripe account; check Decline Rate by Card Country for which countries are driving the friction. “What’s a healthy 3DS friction band?” For UK and EU merchants under PSD2, a healthy 3DS-attempt success rate is 80, 92%, leaving 8, 20% friction. The dollar cost depends on AOV and 3DS-attempted volume; the alert at $1k / month is a low calibration for a metric that’s usually addressable. Expensive verticals (luxury, electronics) hit the threshold faster because of higher AOVs. “Why are SCA-required charges that the customer abandoned counted as friction loss?” Because they are. The customer started checkout, Stripe routed them through SCA, the customer never completed the challenge. Even if the abandonment was for a non-SCA reason (changed mind, found better deal), the abandon-to-lost-sale correlation factor (typically 60, 75%) discounts that share. The remainder is the genuine SCA-attributable loss. “How do I reduce 3DS friction loss?” Three usual levers, ranked by typical impact:
- Frictionless 3DS optimisation. Pass more risk-data fields (browser fingerprint, address, email, account age) on the charge so the issuer can authenticate without challenging the customer. Stripe handles this automatically when you use
request_three_d_secure: 'automatic'. - Exemption usage. For low-value transactions (< €30), Stripe can request issuer exemption, skipping the SCA challenge. Configure in Settings → Payment methods → 3DS.
- Challenge-UX improvements. If your store uses a custom checkout, ensure the challenge iframe is fully visible, doesn’t redirect away, and shows the bank’s branding (which prevents customers thinking it’s a phishing attempt). Most customers who abandon do so because they distrust the SCA prompt.
payment_method_options.card.request_three_d_secure: 'automatic' and setup_future_usage: 'off_session' on the original payment intent.
“What’s the abandon-to-lost-sale correlation factor for my vertical?”
Vortex IQ defaults vary by vertical:
- UK fashion / apparel: 65%
- UK electronics: 55% (more shopping-around behaviour)
- UK subscription / SaaS: 80% (high purchase intent)
- DE fashion: 60%
- FR fashion: 70%
- Universal default if vertical is unknown: 65%
count × AOV without the correlation factor?”
Because that would overstate the loss. Some customers who abandon at the SCA step would have abandoned anyway for unrelated reasons. The correlation factor is meant to keep the dollar number honest, the kind a merchant could actually defend in a finance-team review. The unfiltered gross is on 3DS Abandon Rate if you need it.