Skip to content

Support CheckoutSession saved card expiry and billing updates#13341

Draft
cttsai-stripe wants to merge 8 commits into
cttsai/saved-pm-card-update-capabilitiesfrom
cttsai/mobilesdk4633-implementation-research-plan
Draft

Support CheckoutSession saved card expiry and billing updates#13341
cttsai-stripe wants to merge 8 commits into
cttsai/saved-pm-card-update-capabilitiesfrom
cttsai/mobilesdk4633-implementation-research-plan

Conversation

@cttsai-stripe

@cttsai-stripe cttsai-stripe commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Minion run

Summary

  • Enable updating saved card expiry and billing details for CheckoutSession via POST /v1/payment_pages/{session_id} with payment_method_to_update[...]
  • Keep CheckoutSession CBC edits disabled because EwCS does not accept card.networks.preferred
  • Guard CheckoutSession update params so unsupported card update fields fail before sending a request
  • Require the update response to include the updated payment method instead of fabricating a fallback object

Motivation

The CheckoutSession update endpoint supports payment_method_to_update for billing_details and expiry_details, and the Android edit UI plumbing already handles those fields. This closes the CheckoutSession gap for saved card expiry/billing edits without implying support for card number, CVC, allow_redisplay, or card brand choice updates.

Verification

  • ./gradlew :paymentsheet:apiCheck :paymentsheet:detekt
  • Pre-push hook passed: ./gradlew :paymentsheet:apiCheck :paymentsheet:detekt

Notes

This PR is stacked on #13344.

@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from 256af57 to 6f3451e Compare July 2, 2026 21:15
@cttsai-stripe cttsai-stripe changed the base branch from master to cttsai/saved-pm-card-update-capabilities July 2, 2026 21:38
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from 6f3451e to de91869 Compare July 2, 2026 21:38
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch from 95014ee to dbf7239 Compare July 2, 2026 21:46
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch 2 times, most recently from 7be138b to 078a454 Compare July 2, 2026 22:11
@cttsai-stripe cttsai-stripe changed the title Support updating saved payment methods for checkout sessions 🪿✨ Support CheckoutSession saved card expiry and billing updates Jul 2, 2026
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch from 9fe3a0d to c49ea57 Compare July 2, 2026 22:17
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from 078a454 to e3ed93e Compare July 2, 2026 22:18
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch 2 times, most recently from f16d1c7 to 6f1e443 Compare July 2, 2026 22:28
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from e3ed93e to 188a3f4 Compare July 2, 2026 22:29
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch from 6f1e443 to 45dbd64 Compare July 2, 2026 22:36
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from 188a3f4 to c4e6375 Compare July 2, 2026 22:40
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch from 45dbd64 to 7c3967c Compare July 2, 2026 23:02
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from c4e6375 to 4970b68 Compare July 2, 2026 23:03
cttsai-stripe and others added 5 commits July 2, 2026 16:34
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch from 7c3967c to 92c18ee Compare July 2, 2026 23:37
cttsai-stripe and others added 3 commits July 2, 2026 16:38
Add the ability to update saved payment method billing details and
expiry via the checkout session update endpoint. This brings checkout
sessions to parity with customer sessions for payment method editing.

Changes:
- Add updatePaymentMethod to CheckoutSessionRepository that sends
  payment_method_to_update params (billing_details + expiry_details)
- Fill the existing CheckoutSession branch in
  DefaultSavedPaymentMethodRepository.updatePaymentMethod (previously
  returned NotImplementedError)
- Enable canUpdateFullPaymentMethodDetails for CheckoutSession metadata
  so the edit UI exposes expiry and billing address fields
- Update tests to verify the new routing works correctly

Committed-By-Agent: goose
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
Committed-By-Agent: codex
Co-authored-by: codex <noreply@openai.com>
@cttsai-stripe cttsai-stripe force-pushed the cttsai/mobilesdk4633-implementation-research-plan branch from 4970b68 to 28f5e4c Compare July 2, 2026 23:38
@cttsai-stripe cttsai-stripe force-pushed the cttsai/saved-pm-card-update-capabilities branch 2 times, most recently from d940807 to af3b6b4 Compare July 6, 2026 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant