Skip to content

[BUG] PaymentSheet: Link hidden when billingDetailsCollectionConfiguration.email = .always #6617

Description

@hArshpb11

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

  1. Set configuration.billingDetailsCollectionConfiguration.email = .always
  2. Confirm Link is enabled in Stripe Dashboard
  3. Create PaymentIntent with automatic_payment_methods[enabled]=true
  4. 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:bugtriagedIssue has been reviewed by Stripe and is being tracked internally

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions