Summary
When billingDetailsCollectionConfiguration.email is set to .always, the Link payment method is completely hidden from the PaymentSheet. Setting it to .automatic immediately causes Link to reappear with no other changes.
Environment
- Stripe iOS SDK: 25.12.0
- Swift 5
- iOS Deployment Target: 15.0
- Integration: PaymentSheet with PaymentIntent client secret
returnURL: Configured correctly
StripeAPI.handleURLCallback: Implemented in SceneDelegate
- Link: Enabled in Stripe Dashboard
- PaymentIntent: Created with
automatic_payment_methods[enabled]=true
Steps to Reproduce
- Set
configuration.billingDetailsCollectionConfiguration.email = .always
- Confirm Link is enabled in Stripe Dashboard
- Create PaymentIntent with
automatic_payment_methods[enabled]=true
- Present PaymentSheet
Result: Link does not appear in PaymentSheet
Expected: Link appears alongside other payment methods
Confirmed: API response logs show payment_method_types: ["card", "link"] — the issue is in the SDK presentation layer, not the backend.
Business Impact
Our app must collect email from all customers to send order invoices. This makes email = .always a hard requirement. Currently this conflicts with showing Link, forcing us to collect email outside PaymentSheet as a workaround.
Expected Behavior
email = .always should show the email field AND still display Link. Since Link requires an email to authenticate, these two requirements are not inherently incompatible — the collected email should be passed to Link's flow rather than suppressing Link entirely.
Question
The CHANGELOG mentions:
"[Changed] The native Link experience (private preview) is now available as a payment method even if you collect billing details via billingDetailsCollectionConfiguration."
Is this available in the stable SDK (25.12.0)? If so, how do we enable it?
Summary
When
billingDetailsCollectionConfiguration.emailis set to.always, the Link payment method is completely hidden from the PaymentSheet. Setting it to.automaticimmediately causes Link to reappear with no other changes.Environment
returnURL: Configured correctlyStripeAPI.handleURLCallback: Implemented in SceneDelegateautomatic_payment_methods[enabled]=trueSteps to Reproduce
configuration.billingDetailsCollectionConfiguration.email = .alwaysautomatic_payment_methods[enabled]=trueResult: Link does not appear in PaymentSheet
Expected: Link appears alongside other payment methods
Confirmed: API response logs show
payment_method_types: ["card", "link"]— the issue is in the SDK presentation layer, not the backend.Business Impact
Our app must collect email from all customers to send order invoices. This makes
email = .alwaysa hard requirement. Currently this conflicts with showing Link, forcing us to collect email outside PaymentSheet as a workaround.Expected Behavior
email = .alwaysshould show the email field AND still display Link. Since Link requires an email to authenticate, these two requirements are not inherently incompatible — the collected email should be passed to Link's flow rather than suppressing Link entirely.Question
The CHANGELOG mentions:
Is this available in the stable SDK (25.12.0)? If so, how do we enable it?