Skip to content
CAI
Software that uses CAICheck a score

stripe/stripe-ios

44.7

Weak · 1 October 2026

231.6k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the Stripe iOS SDK, a modular framework designed to integrate payment processing, identity verification, and financial connections into iOS applications. It provides native UI components and API clients for handling card payments, bank connections, and KYC compliance, while supporting internationalization and modern concurrency patterns. The codebase includes extensive example applications and internal tooling for continuous integration and stability testing across its sub-modules.

How it got here

2012–2021 — modular SDK architecture and CI infrastructure

77 changes.

The project migrated from a legacy monolithic structure to a modern, modular framework architecture, introducing distinct components like StripeCore, Stripe3DS2, and StripeCardScan. This period also established comprehensive CI/CD automation, standardized build configurations, and expanded the suite of example applications to demonstrate new payment and identity verification features.

2022 — Financial Connections launch and SDK modularization

68 changes.

This period focused on the release of the Stripe Financial Connections SDK, introducing a comprehensive native iOS UI for bank account linking alongside web-based authentication flows. Concurrently, the codebase underwent significant structural modernization, including the introduction of the StripePaymentSheet module, migration to iOS 15 minimum deployment, and the adoption of Swift concurrency patterns across core payment and Apple Pay integrations.

2023–2025 — Stripe Connect and Crypto Onramp SDKs

50 changes.

This period focused on the initial release and expansion of the StripeConnect module, introducing embedded components for account management, payments, and payouts alongside comprehensive theming and analytics. Concurrently, the StripeCryptoOnramp SDK was established to support crypto onboarding flows, including KYC, compliance, and wallet integration, while the StripeFinancialConnections SDK received significant native UI updates for Link verification and account linking.

2026 — Checkout playground and Crypto Onramp enhancements

4 changes.

The project introduced a comprehensive Checkout Sessions playground within the PaymentSheet example app, enabling developers to test full checkout flows with various configurations. Concurrently, the Crypto Onramp SDK was enhanced with structured error reporting for improved debugging and added support for additional KYC requirements, including document uploads and questionnaire handling.

Features

Add CameraExifMetadata helper to extract camera properties

A new \CameraExifMetadata\ struct has been added to the core camera library to extract EXIF data such as brightness value, focal length, and lens model from camera sample buffers. This enables the application to capture and utilize specific device and lens metadata alongside captured images.

StripeCameraCore/StripeCameraCore/Source · high confidence

Add CardImageVerification example app and end-to-end tests

The CardImageVerification example application is now available, providing a concrete demonstration of how to integrate and use the CardImageVerification SDK. The project includes the necessary build configuration to embed StripeCardScan and StripeCore frameworks, and introduces end-to-end UI tests to validate the verification flow.

Example/CardImageVerification Example/CardImageVerification Example.xcodeproj · high confidence

Add CardImageVerification example app resources

The CardImageVerification example app now includes its user interface resources, specifically the asset catalog (defining the app icon and accent color), the launch screen, and the main storyboard. The main storyboard provides the navigation structure for the demonstration, featuring a home screen with buttons to launch the 'CardImageVerificationSheet' and 'CardScanSheet' examples, as well as localized string files for Spanish (es.lproj) to support the UI text.

Example/CardImageVerification Example/CardImageVerification Example/Resources · high confidence

Add CartView example file

A new CartView.swift file has been added to the Example/PaymentSheet Example/PaymentSheet Example/Views directory. The file is currently empty, indicating the initial scaffolding for a cart view component within the example application.

Example/PaymentSheet Example/PaymentSheet Example/Views · low confidence

Add EmptyResponse and StripeFile API model structs

The StripeCore API bindings now include \EmptyResponse\ and \StripeFile\ structs to support new and existing API interactions. \EmptyResponse\ represents responses that contain no data, while \StripeFile\ models file objects hosted on Stripe's servers, including properties for creation time, ID, size, and file type. The \StripeFile\ struct also defines a \Purpose\ enum with cases for \dispute\_evidence\, \identity\_document\, \identity\_private\, and \crypto\_onramp\_kyc\_document\, enabling the SDK to handle file uploads and retrieval for identity verification, dispute evidence, and crypto onboarding KYC processes.

StripeCore/StripeCore/Source/API Bindings/Models · high confidence

Add Identity Verification example app project

The Identity Verification example application project file is added, configuring the build to embed and link StripeIdentity, StripeCameraCore, StripeUICore, and StripeCore frameworks, and enabling localization for multiple languages.

Example/IdentityVerification Example/IdentityVerification Example.xcodeproj · high confidence

Introduces a new warmup pane in the Financial Connections flow that displays the user's email and avatar, allowing them to continue with a pre-existing consumer session or skip the login step. The pane respects the Link brand appearance and handles dark mode color updates, while the underlying data source manages consumer session lookups and assertion completion.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/NetworkingLinkLoginWarmup · high confidence

Add Stripe 3DS2 Demo UI for testing authentication flows

Introduced the Stripe3DS2DemoUI iOS application, providing a suite of interactive demo screens for testing 3D Secure 2 authentication challenges. The demo app includes a main controller with buttons to present various challenge types—such as text-based OTP, single/multi-select questions, out-of-band (OOB) app redirection, and custom HTML challenges—along with a dark mode toggle and a progress view simulation. It also includes helper classes for generating mock challenge response objects and an HTML resource file for rendering custom ACS challenge pages.

Stripe3DS2/Stripe3DS2DemoUI · high confidence

Add StripeConnect Example app and UI test plan

The StripeConnect Example app is now available as a standalone Xcode project, linking StripeCore, StripeConnect, StripeUICore, and StripeFinancialConnections frameworks. A new test plan (StripeConnectExample.xctestplan) is included to configure and run the StripeConnect ExampleUITests target.

Example/StripeConnectExample/StripeConnect Example.xcodeproj · high confidence

Add appearance encoding and error handling for Connect embedded components

The StripeConnect SDK now includes helper utilities to support embedded components, specifically adding an \Appearance\ encoder that translates UI styling (colors, typography, buttons, badges, forms) into a dictionary for the web view, alongside new error types including \render\_error\ for component loading failures and URL parameter structs for connecting to the ConnectJS wrapper.

StripeConnect/StripeConnect/Source/Helpers · high confidence

Added Apple Pay-specific telemetry and analytics tracking

The SDK now logs detailed analytics for Apple Pay payment flows, including attempts to create payment methods, tokens, and confirm payment or setup intents. These events capture the source type and include device-specific metadata such as Apple Pay support status, OCR type, SDK variant, and a payment user agent string to aid in debugging and usage analysis.

StripeApplePay/StripeApplePay/Source/PaymentsCore/Analytics · high confidence

Added L10n linting and duplicate detection scripts

New Ruby scripts have been added to the CI localization pipeline to enforce string consistency. The \lint.rb\ script scans localization files to identify and remove unused string keys, ensuring that translation files only contain keys present in the source language. Additionally, \check\_for\_duplicate\_localizations.rb\ detects duplicate string keys across different modules, helping to prevent redundant translations and maintain a clean localization structure.

_ci\scripts/l10n · high confidence

Added Stripe iOS Test Host App scaffolding

Introduced a new iOS test host application (StripeiOSTestHostApp) to serve as a standalone environment for testing the Stripe iOS SDK. This addition includes the standard iOS application structure, such as the AppDelegate, ViewController, and associated storyboard files, along with configuration files like Info.plist and asset catalogs for icons and colors.

Stripe/StripeiOSTestHostApp · high confidence

Added StripeConnect Xcode scheme for build and test automation

The StripeConnect module now includes a dedicated Xcode scheme (StripeConnect.xcscheme) that configures the build, test, launch, profile, analyze, and archive actions for the StripeConnect framework and its associated tests. This enables developers to run and debug the StripeConnect module directly within Xcode using standard scheme-based workflows.

StripeConnect/StripeConnect.xcodeproj/xcshareddata · high confidence

Added Xcode Cloud and build scheme configuration for the Stripe Connect example app

The Stripe Connect example app now includes configuration files for Xcode Cloud CI/CD via a new manifest.json, and defines a complete build scheme (xcscheme) that specifies build, test, launch, profile, analyze, and archive actions for the 'StripeConnect Example' target.

Example/StripeConnectExample/StripeConnect Example.xcodeproj/xcshareddata · high confidence

Added Xcode project schemes for StripeiOS and test host app

The repository now includes explicit Xcode scheme definitions for the StripeiOS framework and the StripeiOSTestHostApp. These schemes configure the build, test, launch, profile, analyze, and archive actions, enabling developers to directly build, run, and test the Stripe iOS SDK and its hosted test application within Xcode without relying on external project generation tools.

Stripe/Stripe.xcodeproj/xcshareddata/xcschemes · high confidence

Added Xcode scheme files for example apps

The repository now includes explicit Xcode scheme definitions for the 'Non-Card Payment Examples' and 'UI Examples' applications. These schemes configure the build, test, launch, profile, analyze, and archive actions, enabling developers to directly run and test these example apps within Xcode.

Example/Non-Card Payment Examples/Non-Card Payment Examples.xcodeproj/xcshareddata, Example/UI Examples/UI Examples.xcodeproj/xcshareddata · high confidence

Added Xcode scheme for CardImageVerification Example

The CardImageVerification Example project now includes a defined Xcode scheme (CardImageVerification Example.xcscheme) that configures the build, launch, test, profile, analyze, and archive actions. This scheme explicitly includes both the main application target (CardImageVerificationExample.app) and the UI test bundle (CardImageVerificationExampleUITests.xctest), enabling developers to run and debug the example app and its associated UI tests directly from Xcode.

Example/CardImageVerification Example/CardImageVerification Example.xcodeproj/xcshareddata/xcschemes, StripeFinancialConnections/StripeFinancialConnections.xcodeproj/xcshareddata · high confidence

Added Xcode scheme for Financial Connections example app

The Financial Connections example project now includes a defined Xcode scheme (FinancialConnections Example.xcscheme) that configures the build, launch, and test actions. This scheme explicitly includes the main application target and the FinancialConnectionsUITests target, enabling users to run UI tests and launch the example app directly from Xcode without manual configuration.

Example/FinancialConnections Example/FinancialConnections Example.xcodeproj/xcshareddata/xcschemes · high confidence

Added Xcode scheme for PaymentSheet Example app

The Xcode project now includes a defined scheme for the PaymentSheet Example app, enabling users to build, run, test, profile, and archive the example application directly from the IDE. The scheme is configured to use the Debug configuration for building and testing, and Release for profiling and archiving, with test plans for sharded execution included.

Example/PaymentSheet Example/PaymentSheet Example.xcodeproj/xcshareddata/xcschemes · high confidence

Added Xcode scheme for StripeApplePay framework

The StripeApplePay project now includes a defined Xcode scheme (StripeApplePay.xcscheme) that configures the build, test, launch, profile, analyze, and archive actions. This scheme explicitly targets the StripeApplePay.framework for building and running, and includes the StripeApplePayTests.xctest target for testing, enabling developers to directly build, test, and debug the framework within Xcode.

StripeApplePay/StripeApplePay.xcodeproj/xcshareddata · high confidence

Added Xcode schemes for Stripe3DS2 framework and DemoUI app

The project now includes explicit Xcode scheme definitions for the Stripe3DS2 framework and the Stripe3DS2DemoUI application. These schemes configure build, test, launch, profile, analyze, and archive actions, enabling developers to directly build, run, and test the framework and its demo interface within Xcode without relying on external generation tools.

Stripe3DS2/Stripe3DS2.xcodeproj/xcshareddata · high confidence

Added localization files for Stripe Financial Connections

Added Localizable.strings files for multiple languages (including Bulgarian, Catalan, Czech, Danish, German, Greek, and British English) to the StripeFinancialConnections module. These files provide translated UI text for the financial account linking flow, covering messages for bank selection, manual entry, verification codes, micro-deposit instructions, and error states.

StripeFinancialConnections/StripeFinancialConnections/Resources/Localizations · high confidence

Added localization resources for Stripe Core

Added new Localizable.strings files for multiple languages (including Bulgarian, Catalan, Czech, Danish, German, Greek, English variants, Spanish variants, Estonian, Finnish, Filipino, French variants, Croatian, Hungarian, Indonesian, Italian, Japanese, Korean, Lithuanian, Latvian, Malay, and Maltese) in the StripeCore module. These files provide translated text for core UI elements such as card scanning, payment method updates, error messages, and privacy policy links, enabling the SDK to display these strings in the user's preferred language.

StripeCore/StripeCore/Resources · high confidence

Adds internal API bindings for Crypto Onramp endpoints

Introduces a comprehensive set of internal API request and response models for the StripeCryptoOnramp SDK, enabling communication with backend endpoints for crypto customer creation, KYC data collection and retrieval, wallet registration and deletion, identity verification, and partner terms acceptance. These bindings support headless UI mode, country hints for merchant of record selection, and credential management via consumer session client secrets.

StripeCryptoOnramp/StripeCryptoOnramp/Source/Internal/API Bindings · high confidence

Card Brand Choice and enhanced card validation infrastructure

StripePaymentsUI now supports Card Brand Choice (CBC), allowing users to select from multiple eligible card brands when entering their card number. This change introduces the \STPCBCController\ to manage brand selection state and a \CardElementConfigService\ that fetches CBC eligibility from Stripe's API. The card entry fields (\STPPaymentCardTextField\, \STPCardFormView\) now display a context menu for brand selection and provide specific error messages for disallowed funding types (e.g., 'Only debit cards are accepted'). Additionally, the SDK includes improved validation for Australian BSB numbers and account numbers, expanded postal code validation logic, and new analytics events to track card element interactions.

StripePaymentsUI/StripePaymentsUI · high confidence

Crypto Onramp Example App: New UI Helper Components

The Crypto Onramp Example application now includes a set of reusable SwiftUI UI helper components to support its interface. These additions include an \Alert\ struct for displaying standard alerts, an \AuthenticatedUserToolbarItemModifier\ that provides a toolbar menu for user actions like verifying KYC, checking customer information, and logging out, and a \PreviewWrapperView\ to simplify setting up previews with the necessary coordinator and publishable key. Additional utility views such as \ErrorMessageView\, \FormField\, \LoadingOverlayView\, and \PrimaryButtonStyle\ have also been added to standardize the example app's visual presentation and interaction states.

Example/CryptoOnramp Example/CryptoOnramp Example/UI Helpers · high confidence

Example app adds V1 backend API bindings and seamless sign-in support

The CryptoOnramp example app now includes a complete set of Swift API bindings for the V1 demo backend, enabling features like seamless sign-in, OAuth scope selection, and ACH settlement speed configuration. This change introduces new client methods for authentication (sign-up, log-in, auth intents), customer management (wallets, payment tokens, KYC status), and onramp operations (session creation, quotes, checkout), along with the corresponding request and response models required to interact with the updated backend.

Example/CryptoOnramp Example/CryptoOnramp Example/Example API Bindings · high confidence

Financial Connections SDK helper infrastructure and appearance system

The Financial Connections SDK now includes a new set of helper utilities and a dedicated appearance system. A new \FinancialConnectionsAppearance\ struct centralizes theme and color management, supporting both Stripe and Link branding with distinct light/dark mode palettes and logo tinting. Error handling is improved with an \Error+Extensions\ helper that exposes API \extra\_fields\ and distinguishes terminal client errors from transient ones, while \FinancialConnectionsEvent+Extensions\ parses server-driven error codes from those fields. UI consistency is enhanced via \FinancialConnectionsFont\ for scalable typography with custom line heights, \Image\ for canonical asset management, and \NSAttributedString\/\String\ extensions for parsing markdown bold and links. Additional helpers include \ScreenNativeScale\ for visionOS compatibility, \STPLocalizedString\ for consistent localization, and \UIViewController+Extensions\ for robust key window detection in modern iOS scene-based architectures.

StripeFinancialConnections/StripeFinancialConnections/Source/Helpers · high confidence

Financial Connections SDK introduces server-driven UI models and expanded account data structures

The Financial Connections SDK now supports server-driven UI configurations and richer account data. New API binding models (FinancialConnectionsSessionManifest, FinancialConnectionsSynchronize, FinancialConnectionsGenericInfoScreen, and FinancialConnectionsGenericErrorPane) allow the backend to control the flow's appearance, pane content, and error screens. The SDK also introduces models for networking features (FinancialConnectionsPartnerAccount, FinancialConnectionsNetworkedAccountsResponse) and adds support for ID consent content (FinancialConnectionsIDConsentContent). Existing models like FinancialConnectionsAccount and FinancialConnectionsSession have been updated to include new fields such as ownership, balance details, and bank account tokens.

StripeFinancialConnections/StripeFinancialConnections/Source/API Bindings/Models · high confidence

Initial fastlane configuration for iOS CI/CD

This change introduces the initial fastlane setup for the iOS project, adding the Appfile, Fastfile, Matchfile, Pluginfile, Snapfile, and SnapshotHelper.swift. The Fastfile defines lanes for building, testing (including unit, integration, and E2E tests), generating localized screenshots, running static analysis, and managing size reports. It also includes lanes for installation tests via CocoaPods and Swift Package Manager, and integrates the 'fastlane-plugin-emerge' for size reporting.

fastlane · high confidence

Initial localization and asset resources for Stripe3DS2

The Stripe3DS2 SDK now includes its foundational user-facing resources, adding localized strings for the 3D Secure challenge UI in multiple languages (including Arabic, Welsh, German, French, Spanish, and others) and defining image assets for payment network logos (Amex, Discover, Mastercard, Visa) and UI elements like chevrons and error indicators.

Stripe3DS2/Stripe3DS2/Resources · high confidence

Initial release of StripePaymentSheet module

This change introduces the StripePaymentSheet module, providing the foundational structure for the payment sheet component. It includes the core project configuration files (Xcode project, workspace, and schemes), essential resource files (Info.plist, PrivacyInfo.xcprivacy), and the initial set of localized strings for various languages (e.g., Bulgarian, Catalan, Czech). This establishes the base for the payment sheet UI and localization support.

StripePaymentSheet · high confidence

Initial release of the Stripe3DS2 framework source code

The Stripe3DS2 framework source code is now available, providing the core components for 3-D Secure 2 authentication on iOS. This release includes the networking manager for secure communication with Access Control Servers, JSON encoding and decoding helpers for message handling, and the native UI views for the authentication challenge flow, such as branding and information displays.

Stripe3DS2/Stripe3DS2 · high confidence

Initial release of the StripeApplePay framework

The StripeApplePay framework has been introduced, providing the foundational structure for Apple Pay integration. This release includes the primary framework header, a standard Info.plist configuration, and initial documentation stubs, establishing the base for future feature development.

StripeApplePay/StripeApplePay · high confidence

IntegrationTester app scaffolded with iOS 15 deployment target and new UI test coverage

The IntegrationTester tool now requires iOS 15 or later, enforced by the new \IPHONEOS\_DEPLOYMENT\_TARGET = 15.0\ in its build configuration. The app includes a comprehensive set of UI tests for payment methods, covering card authentication (including 3DS2, OTP, and multi-select flows), Apple Pay, PayPal, Alipay, Bancontact, OXXO, and Klarna. It also provides a centralized \IntegrationMethods\ enum to define default parameters for these payment methods and uses an \.xctestplan\ file to configure the test suite with a US region and location.

Testers · high confidence

Internal foundation for Crypto Onramp SDK UI, analytics, and localization

This change introduces the internal infrastructure required for the Crypto Onramp SDK, including a new analytics client that tracks user journeys (session creation, Link authorization, KYC, and checkout) with session identifiers, a comprehensive set of localized error and UI strings for identity verification and document uploads, and internal styling resources (typography, colors, images) to support the SDK's user interface.

StripeCryptoOnramp/StripeCryptoOnramp/Source/Internal · high confidence

Introduce Card Image Verification sheet and analytics infrastructure

This change introduces the \CardImageVerificationSheet\ and its supporting components (controller, intent, configuration, and analytics manager) within the StripeCardScan module. Users can now present a dedicated sheet to verify a credit card's image against an expected card, with the flow handling result completion, cancellation reasons, and error states. The implementation also adds a \ScanAnalyticsManager\ to track and upload scan session statistics, including frame processing, compression, and loop durations, while exposing configuration options like \strictModeFrames\ for controlling verification strictness.

StripeCardScan/StripeCardScan/Source/CardVerify/Card Image Verification · high confidence

Introduce FinancialConnectionsSheet with style configuration and event handling

The FinancialConnectionsSheet is now available as a drop-in UI component that allows users to connect their financial accounts. It supports explicit light, dark, or automatic style configuration via a new Configuration struct, exposes an onEvent callback for tracking connection lifecycle events, and provides both standard and token-based presentation modes (present and presentForToken) to integrate with existing payment flows.

StripeFinancialConnections/StripeFinancialConnections/Source · high confidence

Introduce StripeCryptoOnramp SDK project structure

The StripeCryptoOnramp SDK is now available as a standalone Xcode project, including the main framework target, a test bundle, and a shared workspace. The project is configured to build against StripeCore, Stripe, StripeUICore, StripePaymentSheet, StripeIdentity, and StripeFinancialConnections frameworks, and includes build configurations for Debug and Release modes.

StripeCryptoOnramp/StripeCryptoOnramp.xcodeproj · high confidence

Introduce StripeFinancialConnectionsLite SDK for lightweight pay-by-bank flows

StripeFinancialConnectionsLite is a new lightweight iOS SDK that enables pay-by-bank authentication via a hosted web flow without requiring the full StripeFinancialConnections SDK. It provides a simple web wrapper that supports app-to-app authentication with compatible banks (such as Chase) when a returnUrl is provided, and falls back to a secure in-app browser otherwise. The module includes an API client for synchronizing sessions and handling receipts, controllers for managing the auth flow (including a secure webview option), and support for pre-collected consent and Elements session context.

StripeFinancialConnectionsLite/StripeFinancialConnectionsLite · high confidence

Introduce native Financial Connections flow with server-driven routing and analytics

The Financial Connections sheet now supports a native iOS implementation alongside the existing web view. A new \FlowRouter\ determines whether to launch the native or web flow based on server-provided manifest data, including a killswitch and experiment assignments. The native experience includes a custom navigation controller that tracks back-button and swipe-back analytics, a \HostController\ to manage the session lifecycle, and UI components like a test-mode autofill banner and improved dimming animations for modal presentation.

StripeFinancialConnections/StripeFinancialConnections/Source/Common · high confidence

Added a new native iOS UI component (LinkLoginViewController) and its data source (LinkLoginDataSource) to handle the Link Login flow within Financial Connections. This pane allows users to sign up or look up existing accounts via email and phone number, supports pre-filling contact details from the session context, and manages the backend synchronization and account attachment steps. The implementation includes specific handling for attestation errors by triggering a fallback web flow and ensures the footer remains visible above the keyboard during manual entry.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/LinkLogin · high confidence

Added a new networking-based verification pane for Financial Connections that handles OTP (One-Time Password) verification via SMS. The implementation includes a data source and view controller that manage the verification lifecycle: initiating the OTP lookup, displaying the code entry UI, and handling the subsequent API calls. For the Instant Debits product, successful verification triggers an additional step to attach the consumer to the link account and synchronize data before proceeding to the account picker; for other products, it simply marks the link as verified and advances the flow.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/NetworkingLinkVerification · high confidence

Introduce reusable OTP verification view for Financial Connections

Added a new, reusable NetworkingOTPView component and its associated data source to handle One-Time Password verification within the Financial Connections flow. This view manages the OTP input field, displays test-mode autofill banners, and handles verification session lifecycle events (starting and confirming) via delegate callbacks, centralizing the UI and logic for OTP entry across the networking stack.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/Shared/NetworkingOTPView · high confidence

Financial Connections now supports two new server-driven panes. The generic error pane displays a customizable error screen (heading, subheading, icon, image, and primary CTA) provided by the backend; tapping the CTA either restarts the authentication flow or lets the user select another bank, and the system cancels any pending auth session in the process. The instant-debits consent content pane renders backend-provided consent text with bullet points and links, allowing users to agree and acquire consent via a server call. Both panes are integrated into the native flow controller and data manager, which now track the new pane types and manage their specific state and navigation logic.

StripeFinancialConnections/StripeFinancialConnections/Source/Native · high confidence

Adds new Codable model structures to support the Financial Connections consumer session and Link integration workflows. These models define the data contracts for looking up existing consumer sessions, initiating and confirming verification sessions (including sign-up, email, and SMS types), and handling responses from Link account attachment. This enables the SDK to properly serialize and deserialize the specific JSON payloads required for the new Instant Debits and Link brand resolution features.

StripeFinancialConnections/StripeFinancialConnections/Source/API Bindings/Models/ConsumerSession · high confidence

Introduces App Attestation for enhanced device security

StripeCore now includes a new App Attestation system that leverages Apple's DeviceCheck API to verify device integrity. This feature adds an \AppAttestService\ protocol and implementation to generate and attest cryptographic keys, a \StripeAttest\ actor to manage the assertion lifecycle and handle concurrent requests, and a backend client to communicate with Stripe's \mobile\_sdk\_attestation\ endpoints. This enables more secure, device-bound authentication for API requests.

StripeCore/StripeCore/Source/Attestation · high confidence

Introduces Apple Vision OCR as a parallel card scanning engine

The card scanning module now integrates Apple's Vision framework (\AppleOcr\) alongside the existing SSD-based model. This new engine runs in parallel within the \OcrMainLoop\, extracting the card number, expiry date, and cardholder name from images. The system combines results from both engines to improve detection accuracy and reliability, with the \CreditCardOcrPrediction\ structure updated to include name and bounding box data for all extracted fields.

StripeCardScan/StripeCardScan/Source/CardScan · high confidence

Introduces CameraSession and supporting coordinator components for camera control

The StripeCameraCore module now includes a new CameraSession class that manages AVFoundation capture sessions, allowing users to configure camera settings (such as preset quality, focus mode, and orientation), toggle between front and back cameras, and control the torch. This is supported by a CameraPermissionsManager for handling camera access authorization, an AppSettingsHelper to guide users to system settings if permissions are denied, and a Torch struct for managing flashlight state. Additionally, a MockSimulatorCameraSession is provided to enable camera functionality simulation on iOS simulators by cycling through provided images.

StripeCameraCore/StripeCameraCore/Source/Coordinators · high confidence

Introduces ConfirmationTokens API and deprecates legacy Apple Pay helpers

The SDK adds support for the new ConfirmationTokens API, introducing \STPConfirmationToken\, \STPConfirmationTokenParams\, and \STPConfirmationTokenClientContext\ to allow developers to collect payment details and confirm PaymentIntents or SetupIntents in a decoupled flow. It also adds \STPPaymentMethodPreview\ to inspect non-PII payment details from these tokens. Additionally, the \StripeAPI+Deprecated\ file introduces deprecation warnings for legacy top-level functions (such as \setDefaultPublishableKey\ and \paymentRequest(withMerchantIdentifier:)\), guiding users to the newer \StripeAPI\ static properties and methods.

StripePayments/StripePayments · high confidence

Introduces Crypto Onramp SDK components for identity, compliance, and payment flows

The \StripeCryptoOnramp/Source/Components\ directory now contains the foundational types and the \CryptoOnrampCoordinator\ protocol that power the crypto onramp experience. This includes data models for KYC information (\KycInfo\, \Address\), compliance identifiers for MiCA and CRS/CARF regulations, and result types for identity verification, payment method collection, and checkout. The coordinator exposes APIs for user registration, authentication, wallet address management, and payment collection via Link or Apple Pay, enabling merchants to integrate a complete onramp flow.

StripeCryptoOnramp/StripeCryptoOnramp/Source/Components · high confidence

Users connecting a bank account via Financial Connections now encounter a dedicated verification screen that requires entering an OTP sent to their phone. This new NetworkingSaveToLinkVerification component manages the OTP input flow, handles the API calls to save accounts to the network and link them, and displays appropriate loading states and success or error outcomes to the user.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/NetworkingSaveToLinkVerification · high confidence

Introduces web-based Financial Connections authentication flow

Adds a new web-based authentication flow for Financial Connections, implemented via \FinancialConnectionsWebFlowViewController\ and \AuthenticationSessionManager\. This change introduces a \ContinueStateView\ that displays a 'Continue linking your account' message with primary and secondary buttons, allowing users to resume or cancel the linking process. The flow manages \ASWebAuthenticationSession\ lifecycle, handles return URL parsing for success, cancellation, and native redirects, and integrates with the \HostedAuthUrlBuilder\ to pass prefill details and other context to the hosted auth page.

StripeFinancialConnections/StripeFinancialConnections/Source/Web · high confidence

Introduction of StripeUICore component library and UI extensions

StripeUICore now provides a foundational set of reusable UI components and UIKit extensions, including a custom ActivityIndicator, a configurable Button with state-based theming, and a OneTimeCodeTextField for OTP entry. The library also adds utility extensions for standard UIKit types such as CALayer, UIColor, UIFont, and UIStackView to support consistent styling and layout across the SDK.

StripeUICore/StripeUICore · high confidence

Introduction of structured scan analytics payload

The StripeCardScan module now includes a new, structured \ScanStatsPayload\ for uploading scan analytics. This payload captures detailed metrics including app and device information, configuration settings (such as \strictModeFrames\), and specific task durations for camera permission, image compression, and scan loops. It also tracks repeating tasks like the number of images processed, providing a standardized format for performance and usage data.

StripeCardScan/StripeCardScan/Source/CardVerify/Api/Models/Scan Analytics · high confidence

The NetworkingLinkSignup pane now uses a native UI for collecting user contact details, featuring an EmailTextField with real-time validation (showing errors only after the user stops editing) and a PhoneTextField that includes a country code selector and handles E.164 normalization. The form supports prefilling email and phone numbers from the session manifest or elements context, and intelligently manages keyboard focus—auto-focusing the email field initially, then transitioning to the phone field upon valid email entry, while suppressing the phone field if a number is already prefilled. The backend data source has been updated to use mobile-specific endpoints for verified flows and omits email/phone parameters in the subsequent save call when using the attestation-based sign-up path.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/NetworkingLinkSignupPane · high confidence

Native Partner Auth flow with server-driven prepane and GIF support

The native Partner Auth screen now supports a server-driven prepane that can display institution icons, text, and animated GIFs (via a WebView-based image loader) before launching the OAuth browser. The auth logic has been refactored into a dedicated \PartnerAuthDataSource\ to handle session creation, authorization, polling, and repair/relink flows, while the UI layer (\PartnerAuthViewController\) manages the prepane presentation, legacy browser timing, and event delegation.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/PartnerAuth · high confidence

Native manual bank account entry for Financial Connections

Users can now manually enter bank account details (routing and account numbers) within the Financial Connections SDK. This change introduces a new native UI flow that includes input validation for US routing numbers and account numbers, real-time error feedback, and a secure submission process that attaches the bank account to the link session. The implementation also supports test mode autofill for developers and adapts its messaging based on whether micro-deposit verification is required.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/ManualEntry · high confidence

New AppClipExample demo app for Apple Pay integration

The Example/AppClipExample directory now contains a complete, buildable iOS app demonstrating Stripe Apple Pay integration within an App Clip. This example includes the necessary Xcode project configuration, entitlements for the merchant identifier (merchant.com.stripetest.appclipexample), and shared SwiftUI source code (ContentView, ApplePayModel, BackendModel) that implements the payment flow using STPApplePayContext. It serves as a reference implementation for integrating Apple Pay in lightweight App Clip experiences.

Example/AppClipExample · high confidence

New CI script to detect public and SPI API changes

Added a new Ruby-based tooling suite in \ci\_scripts/api\_diff\ that automates the detection of changes to the public and Swift Package Manager (SPI) interfaces of the SDK frameworks. The scripts build xcframeworks for both the current branch and the merge base with master, extract \.swiftinterface\ files, and diff them to identify added, removed, or modified public and SPI symbols. The tool ignores import statements and specific SPI names (STP, ReactNativeSDK), classifies the severity of changes (public vs. SPI), and outputs a structured diff report and severity flag for CI integration.

_ci\_scripts/api\diff · high confidence

New CI scripts for documentation, localization, and release validation

The \ci\_scripts\ directory now includes a comprehensive suite of new automation tools. Documentation generation and validation are handled by \build\_documentation.rb\ (which builds DocC archives and fixes relative links) and \check\_documentation.sh\ (which enforces 100% documentation coverage and flags SPI usage). Release integrity is strengthened by \changelog\_utils.rb\ and \check\_changelog.rb\, which validate version bumps and changelog formatting, while \check\_version.rb\ ensures the VERSION file is synchronized across all podspecs and configuration files. Localization workflows are improved with scripts to check for missing translations (\check\_for\_untranslated\_strings.rb\), validate string formatting (\check\_for\_invalid\_formatting\_strings.sh\), and manage localization directories. Additionally, \create\_release.rb\ and \deploy\_release.rb\ provide structured, step-by-step workflows for proposing releases and deploying frameworks to CocoaPods and SPM mirrors.

_ci\scripts · high confidence

New CameraPreviewView for thread-safe camera session management

Added a new CameraPreviewView class that wraps AVCaptureVideoPreviewLayer to display the camera feed. This view introduces a public session property to bind a CameraSessionProtocol, and provides a setCaptureSession method that ensures thread-safe configuration by dispatching work between the main thread and the camera session queue, preventing main-thread blocking during session setup.

StripeCameraCore/StripeCameraCore/Source/Views · high confidence

New CardImageVerification example app skeleton

The CardImageVerification example application has been introduced, providing a complete skeleton for testing card image verification flows. This includes an API client for JSON requests, a URL helper pointing to the Stripe demo backend (stripe-card-scan-civ-example-app.stripedemos.com), and UI components like a CTA button with loading states. The app is configured with localized strings for Welsh (cy-GB) and Arabic (ar-SA) and requests camera permissions for card scanning.

Example/CardImageVerification Example/CardImageVerification Example · high confidence

New Checkout Sessions playground with cart, payment, and configuration views

The PaymentSheet Example app now includes a dedicated Checkout Sessions playground that lets developers test the full checkout flow. This new playground features a cart view displaying line items, shipping and billing addresses, and order summaries, alongside a payment method section that supports both embedded and sheet-based PaymentElement presentations. It includes a configuration interface for setting up currencies, customer types, backend endpoints, and Express Checkout Element options (including Apple Pay and Link), as well as a backend session factory for creating test Checkout Sessions with various tax and payment method configurations.

Example/PaymentSheet Example/PaymentSheet Example/Checkout Playground · high confidence

New CryptoOnramp Example App with Multi-Step KYC and EU Compliance Flows

The CryptoOnramp Example app has been rebuilt to demonstrate a complete, multi-step onboarding flow. Users can now register, collect KYC information at different levels (Level 0, 1, and 2), and handle identity verification. The app includes specific support for EU compliance, requiring users to enter national identifiers (MiCA/CARF) and follow a distinct EU flow. It also supports attaching wallet addresses, selecting OAuth scopes, and toggling between live and test modes.

Example/CryptoOnramp Example/CryptoOnramp Example · high confidence

New CryptoOnramp Example App with Stripe SDK integration

The CryptoOnramp Example application has been added to the project, providing a reference implementation for integrating the Stripe CryptoOnramp SDK. The Xcode project configuration includes embedding and linking multiple Stripe frameworks, such as StripeCryptoOnramp, StripeIdentity, StripeFinancialConnections, StripePaymentSheet, and StripeApplePay, enabling users to test end-to-end flows including KYC step-up, checkout, and Apple Pay.

Example/CryptoOnramp Example/CryptoOnramp Example.xcodeproj · high confidence

New Financial Connections Example app with token collection and WebView support

The Financial Connections Example app has been updated to include a 'Collect Bank Account Token' flow alongside the existing 'Connect Account' flow, allowing users to demonstrate token-based integration. Additionally, a new WebView example has been added to show how to handle Financial Connections authentication flows within an embedded WKWebView, including handling app-to-app authentication via universal links and fallback to ASWebAuthenticationSession.

Example/FinancialConnections Example/FinancialConnections Example · high confidence

New Financial Connections SDK bindings and prefill capabilities

This update introduces a comprehensive set of Swift bindings in StripeCore to support the Financial Connections SDK, enabling richer integration with bank linking flows. Developers can now prefill the Link Login pane with customer email and phone details via the new \ElementsSessionContext.PrefillDetails\ and \HostedAuthUrlBuilder\, which also handles billing address and incentive parameters for Instant Debits. The diff adds support for existing consumers through \FinancialConnectionsConsumer\ and \FinancialConnectionsPreCollectedConsent\, allowing for smoother re-authentication. It also defines the \FinancialConnectionsSDKInterface\ and \FinancialConnectionsSDKResult\ to standardize sheet presentation and result handling, including specific support for Instant Debits via \InstantDebitsLinkedBank\. Additionally, branding is managed through \LinkBrand\ and \FinancialConnectionsStyle\, and event tracking is enabled via \FinancialConnectionsEvent\ with detailed metadata for user actions and errors.

StripeCore/StripeCore/Source/Connections Bindings · high confidence

New Identity Verification example app with native UI and configuration options

The Identity Verification example app has been reorganized into its own subdirectory and updated to demonstrate both web-based and native iOS component flows. The new PlaygroundViewController allows users to toggle between invocation types (native, web, link), select verification types (document, ID number, address, phone), and configure document options such as allowed types (driving license, passport, ID card) and requirements (ID number, live capture, matching selfie, address). The app also supports reusing existing verification sessions and includes simulator mocking for the document camera. Localization support for Arabic and Welsh has been added, and the native UI variant uses a configuration object to set the brand logo.

Example/IdentityVerification Example/IdentityVerification Example · high confidence

New Non-Card Payment Examples app scaffolding

The Non-Card Payment Examples app has been added as a standalone Xcode project, linking and embedding the Stripe SDK frameworks (Stripe, StripeCore, StripePayments, StripePaymentSheet, StripePaymentsUI, StripeUICore, Stripe3DS2, StripeApplePay, StripeFinancialConnections, and StripeFinancialConnectionsLite) to demonstrate non-card payment integrations.

Example/Non-Card Payment Examples/Non-Card Payment Examples.xcodeproj · high confidence

New Stripe Connect embedded components for account management, onboarding, payments, payouts, and check scanning

This release introduces several new embedded UI components for Stripe Connect, allowing developers to integrate specific financial workflows directly into their apps. The new components include AccountManagementViewController and AccountOnboardingController for managing connected accounts and guiding users through setup, as well as PaymentsViewController and PayoutsViewController for displaying transaction and payout lists. Additionally, the SDK now supports PaymentDetailsViewController for dispute and refund management, NotificationBannerViewController for in-app alerts, and CheckScanningController for capturing US paper checks. These components are exposed via the DashboardOnly and PrivatePreviewConnect SPIs, with specific features like default filters for payments and dynamic type support for navigation bars.

StripeConnect/StripeConnect/Source/Components · high confidence

New SwiftUI examples for AddressElement and CustomerSession configuration

The PaymentSheet Example app now includes a new SwiftUI view for the AddressElement, demonstrating how to collect and display address details with pre-population support. Additionally, dedicated playground views for CustomerSession settings have been added for both PaymentSheet and CustomerSheet, allowing developers to configure payment method save, remove, and redisplay behaviors directly within the example app.

Example/PaymentSheet Example/PaymentSheet Example · high confidence

New UI Examples app with Card Brand Choice and localization support

The UI Examples sample app has been restructured into its own directory and now includes support for Card Brand Choice (CBC) in the Card Field and Card Form views, allowing users to see how CBC is enabled via the \cbcEnabledOverride\ property. The app also adds localization support for Arabic (ar-SA) and Welsh (cy-GB) through Info.plist entries, alongside existing localizations for German, English, Spanish, Finnish, French, Italian, Japanese, Norwegian, Dutch, and Chinese (Simplified). New demo screens include an AU BECS Debit form and a SwiftUI-based card form, providing a comprehensive showcase of Stripe's UI components.

Example/UI Examples/UI Examples · high confidence

New UI helper extensions for consistent font scaling and activity indicator animation

StripeCore now includes new Swift extensions for UIFont and UIActivityIndicatorView to improve consistency in UI rendering and testing. The UIFont extension provides methods to generate system fonts with specific styles and weights that automatically scale according to the user's dynamic type settings, ensuring accessibility compliance. The UIActivityIndicatorView extension introduces helper methods to start and stop animations while managing visibility, with a debug-mode toggle to disable animation for stable snapshot testing.

StripeCore/StripeCore/Source/UI · high confidence

New Xcode schemes for network recording, latency testing, and iOS 26 compatibility

Added new Xcode workspace schemes to support specialized testing and build configurations. The 'AllStripeFrameworks-NetworkRecordMode' scheme enables recording network mocks from Xcode, while 'StripePaymentSheet-LatencyTests' configures synthetic latency tests for the PaymentSheet module. Additionally, 'AllStripeFrameworks-iOS26' and 'AllStripeFrameworks-NoMocks' schemes provide targeted environments for iOS 26 snapshot testing and unmocked test execution respectively.

Stripe.xcworkspace/xcshareddata/xcschemes · high confidence

New analytics events for Mobile Payment Element interactions

The Mobile Payment Element now posts specific analytics notifications for key user interactions, including sheet presentation, payment method selection, form display and completion, confirm button taps, saved payment method selection and removal, and express checkout button taps. These events are exposed via the \MobilePaymentElementAnalyticEvent\ struct and the \Notification.Name.mobilePaymentElement\ notification, allowing developers to track detailed usage patterns within the payment flow.

StripeCore/StripeCore/Source/Analytics/Eventing · high confidence

New analytics infrastructure in StripeCore

StripeCore now includes a new analytics subsystem with a V2 client (\AnalyticsClientV2\) that logs events to \r.stripe.com\, alongside updated error serialization protocols (\AnalyticLoggableError\, \AnalyticLoggableErrorV2\) and helpers for session tracking, network detection, and cross-platform plugin identification. This provides a more structured and testable foundation for analytics collection across the SDK.

StripeCore/StripeCore/Source/Analytics · high confidence

New build configuration files and visionOS support

The project now includes a set of new Xcode build configuration files (xcconfig) that standardize build settings for Debug, Release, and Shared targets for both the main framework and its tests. These configurations enforce stricter compiler warnings and treat warnings as errors to improve code quality. Additionally, the build system has been updated to support visionOS by adding a \STP\_BUILD\_FOR\_VISION\ compilation condition for Apple Vision SDKs, ensuring compatibility across Xcode 14 and 15.

BuildConfigurations · high confidence

New card image verification API endpoints and response models

The StripeCardScan module now supports a network-based card image verification flow. This change introduces new API endpoints for fetching verification details (including expected card last-4 and issuer, plus accepted image formats like HEIC, JPEG, and WebP), submitting verification frames, and uploading scan statistics. The \STPAPIClient\ extension provides methods to initialize the verification session, submit the captured frames for server-side validation, and report analytics, while new Codable structs handle the server response parsing and image configuration settings.

StripeCardScan/StripeCardScan/Source/CardVerify/Api · high confidence

New image and coordinate utility categories for camera processing

Added new Swift extension files in StripeCameraCore to support camera and image handling: CGRect+StripeCameraCore provides methods to invert normalized coordinates and convert between center-cropped and original coordinate spaces; CVPixelBuffer+StripeCameraCore adds a helper to convert pixel buffers to CGImage; UIDeviceOrientation+StripeCameraCore maps device orientation to AVCaptureVideoOrientation; and UIImage+Buffer (simulator-only) enables conversion of images to pixel and sample buffers for testing or simulation purposes.

StripeCameraCore/StripeCameraCore/Source/Categories · high confidence

New model options for account collection and payment list filtering

Added \AccountCollectionOptions\ to allow customization of account onboarding requirements, including fields to collect (currently due vs. eventually due), future requirements handling, and specific requirement inclusion/exclusion. Added \PaymentsListDefaultFiltersOptions\ to enable default filtering of the payments list by amount (equals, greater/less than, between), date range (before, after, between), status, and payment method.

StripeConnect/StripeConnect/Source/Models · high confidence

New non-card payment example apps for BECS Debit, Affirm, Afterpay Clearpay, Alma, Amazon Pay, and Billie

The Non-Card Payment Examples app now includes dedicated view controllers for several new payment methods. Developers can explore native iOS implementations for Australian BECS Debit (using STPAUBECSDebitFormView), Affirm, Afterpay Clearpay, Alma, Amazon Pay, and Billie. These examples demonstrate how to create PaymentIntents, configure payment method parameters, and handle confirmation flows for each respective provider.

Example/Non-Card Payment Examples/Non-Card Payment Examples · high confidence

New utility extensions added to StripeCore

This change introduces a suite of new category extensions in StripeCore to support internal SDK operations. These include safe array access and manipulation, dictionary deep-merging and JSON encoding, locale handling for visionOS compatibility, and request building helpers for URL parameters and form payloads. It also adds error message factories for common API failures, string sanitization (including emoji removal and live-key redaction), and image processing utilities for JPEG/HEIC compression and resizing.

StripeCore/StripeCore/Source/Categories · high confidence

Payment Sheet Example app receives new resources and localized strings

The Payment Sheet Example app now includes a new App Icon asset catalog supporting light, dark, and tinted appearances, along with a Launch Screen storyboard. Additionally, localized string files for Bulgarian, Catalan, Czech, Danish, and German have been added to support internationalization within the example application.

Example/PaymentSheet Example/PaymentSheet Example/Resources · high confidence

PaymentSheet Example app and test configuration added

The PaymentSheet Example app has been added to the repository, providing a runnable reference implementation for integrating PaymentSheet via both UIKit and SwiftUI. The commit also introduces XCTest plan files that configure the example's UI tests to run in the US region and locale, and shard the test suite across four workers to improve CI performance.

Example/PaymentSheet Example · high confidence

Stripe 3DS2 SDK source code released

The Stripe3DS2 iOS SDK source code is now available as open source. This release includes the public headers and implementation files for the 3D Secure 2 authentication library, exposing core components such as the \STDSThreeDS2Service\ initialization, \STDSAuthenticationRequestParameters\ for transaction setup, \STDSAuthenticationResponse\ handling, and the \STDSChallengeStatusReceiver\ protocol for managing the user challenge flow. It also provides UI customization classes (e.g., \STDSButtonCustomization\, \STDSNavigationBarCustomization\) allowing developers to style the embedded challenge views, along with the underlying JSON encoding/decoding infrastructure (\STDSJSONEncoder\, \STDSErrorMessage\) required for protocol communication.

Stripe3DS2/Stripe3DS2/include · high confidence

Stripe Connect SDK introduces comprehensive analytics and authenticated web view support

The Stripe Connect SDK now includes a robust internal analytics framework to track component lifecycle events, such as creation, viewing, and loading times, as well as specific user interactions like account session claims and unexpected navigation errors. Additionally, the SDK adds support for authenticated web views, enabling secure identity verification flows (like camera-based checks) to be presented within the app using ASWebAuthenticationSession, with detailed analytics logging for session openings, redirects, and cancellations.

StripeConnect/StripeConnect/Source/Internal · high confidence

Stripe Connect SDK introduces embedded component theming and new payment components

The StripeConnect SDK now supports full visual customization of embedded components via a new \EmbeddedComponentManager.Appearance\ API, allowing developers to define typography (fonts, sizes, weights, text transforms) and colors (primary, text, background, etc.) that automatically adapt to dark mode. This is paired with a \CustomFontSource\ initializer to embed and reference custom fonts from the app binary. Additionally, the \EmbeddedComponentManager\ now exposes factory methods to create \PaymentsViewController\ and \PayoutsViewController\, making these components publicly available for integration, while also maintaining support for existing components like Onboarding and Check Scanning.

StripeConnect/StripeConnect/Source · high confidence

Stripe Issuing iOS SDK is now a standalone module

The Stripe Issuing functionality has been extracted into its own independent \StripeIssuing\ framework, complete with its own Xcode project, build schemes, and documentation. This separation allows developers to integrate and update Issuing features without pulling in the entire Stripe iOS monolith. The module includes support for Apple Pay push provisioning (via \STPAPIClient\ extensions and ephemeral key management) and comes with localization resource stubs for over 30 languages, including Arabic and Welsh, to support internationalized user interfaces.

StripeIssuing · high confidence

StripeCardScan framework and core ML models added

The StripeCardScan framework is now available, providing the core infrastructure for card scanning functionality. This includes the \StripeCardScan.h\ public header and \Info.plist\ configuration. Additionally, two compiled Core ML models have been added to the resources: \SSDOcr.mlmodelc\, which handles object detection and OCR for card details, and \UxModel.mlmodelc\, a neural network likely used for user experience or validation tasks.

StripeCardScan/StripeCardScan, StripeCardScan/StripeCardScan/Resources/CompiledModels · high confidence

StripeConnect module initial release with localization support

The StripeConnect module is now available, providing the foundational framework and localization infrastructure for the product. This release includes the core module structure, a bundle locator for resource management, and localized error strings for connectivity issues (e.g., "Please check your connection or try again later") across 20+ languages including English, Thai, German, and Japanese.

StripeConnect/StripeConnect · high confidence

StripeCore helpers consolidated with new async, error, and utility utilities

The StripeCore/Helpers module has been consolidated into a new set of source files, introducing several capabilities for developers. Async operations are now supported via a new \withTimeout\ helper that runs operations with configurable timeouts, while the legacy \Future\ and \Promise\ classes are marked as deprecated in favor of Swift concurrency. Error handling is enhanced with \ServerErrorMapper\ to provide mobile-friendly messages for common API errors, and \STPError\ now exposes \stripeRequestIDKey\ and \httpStatusCodeKey\ in error userInfo for better debugging. Additional utilities include \BundleLocatorProtocol\ for robust resource loading across installation methods (SPM, CocoaPods, Carthage), \InstallMethod\ to detect the SDK installation type, \PaymentsSDKVariant\ to identify the specific SDK variant in use, and \URLEncoder\ for query string construction.

StripeCore/StripeCore/Source/Helpers · high confidence

StripeCore project scaffolding and privacy manifest

The StripeCore module has been initialized with its core project files, including the main Info.plist, a public header (StripeCore.h) exposing version numbers, and a test target Info.plist. Crucially, a PrivacyInfo.xcprivacy manifest has been added to declare data collection practices, specifically noting the collection of product interaction data for analytics and app functionality, and the access to UserDefaults APIs.

StripeCore/StripeCore · high confidence

StripeCryptoOnramp SDK initial localization and documentation

The StripeCryptoOnramp SDK now includes its initial set of localized user-facing strings and documentation. This change adds a placeholder documentation file and Localizable.strings files for over 20 languages (including English, German, French, Spanish, Japanese, and others), covering UI text for document uploads, wallet verification, source of funds inquiries, and error messages related to attestation and network support.

StripeCryptoOnramp/StripeCryptoOnramp · high confidence

StripePayments iOS SDK module scaffolding and localization

The StripePayments module has been initialized with its core project structure, including the Xcode project, schemes, and build configurations. The module now requires iOS 15.0 or later. Additionally, localizable strings for payment method names (such as Affirm, Afterpay, Alipay, and iDEAL \| Wero) and authentication error messages have been added for multiple languages, including Bulgarian, Catalan, Czech, Danish, German, Greek, English, Spanish, Estonian, Finnish, Filipino, French, Croatian, Hungarian, Indonesian, Italian, Japanese, Korean, Lithuanian, Latvian, Malay, Maltese, Norwegian, and Dutch.

StripePayments · high confidence

StripePaymentsUI module scaffolding and localization

The StripePaymentsUI module is introduced with its initial project structure, including the Xcode project, schemes, and a README specifying iOS 15.0 as the minimum deployment target. The module provides UI components for custom payment flows, specifically \STPPaymentCardTextField\, \STPCardFormView\, and \STPAUBECSDebitFormView\. To support international users, the module includes localized strings for card entry, validation errors, and billing details in multiple languages (including Bulgarian, Catalan, Czech, Danish, German, Greek, English variants, and Spanish variants), along with a JSON resource for Australian BSB bank codes.

StripePaymentsUI · high confidence

Support for additional KYC requirements in Crypto Onramp

The SDK now models the API bindings for collecting additional Know Your Customer (KYC) information required by liquidity partners. This includes structures to parse requirement details (such as accepted document subtypes, file limits, and instructions), handle questionnaires with free-text answers, and submit fulfillment payloads containing uploaded documents and questionnaire responses to the internal KYC fulfillment endpoint.

StripeCryptoOnramp/StripeCryptoOnramp/Source/Internal/API Bindings/Additional KYC · high confidence

Removals

Removal of legacy SenTestingKit test target

The legacy test target using SenTestingKit has been removed. This deletes the old test infrastructure files, including the main test header, implementation, and localized info-plist strings, which previously contained only placeholder test methods.

StripeTests · high confidence

Removal of legacy Stripe.xcodeproj project file

The legacy \Stripe.xcodeproj\ project file has been removed from the repository. This file defined the original static library target (\libStripe.a\) and its associated test bundle (\StripeTests.octest\), along with their build phases and framework dependencies. This change reflects the migration away from the old Xcode project structure to the current modular framework setup.

Stripe.xcodeproj · high confidence

Architecture

Stripe Financial Connections project structure updated to use file system synchronization

The StripeFinancialConnections Xcode project has been restructured to utilize Xcode's file system synchronization feature. This change replaces the previous manual file referencing with a synchronized root group for both the main framework and its test bundle, simplifying project maintenance and ensuring the IDE accurately reflects the directory structure on disk.

StripeFinancialConnections/StripeFinancialConnections.xcodeproj · high confidence

StripeApplePay framework project structure and dependencies defined

The StripeApplePay Xcode project is configured to build the StripeApplePay.framework, linking against the StripeCore.framework. The project also includes a test target (StripeApplePayTests) that links against StripeApplePay, StripeCoreTestUtils, OHHTTPStubs, and OHHTTPStubsSwift for network mocking during testing. Build configurations are sourced from a shared BuildConfigurations directory.

StripeApplePay/StripeApplePay.xcodeproj · high confidence

StripeConnect module project structure and dependencies

The StripeConnect.xcodeproj file defines the build configuration for the StripeConnect framework, establishing its dependency on StripeCore, StripeUICore, and StripeFinancialConnections frameworks. It also configures the associated test bundle (StripeConnectTests) with its own dependencies, including StripeCoreTestUtils and CustomDump, and sets up the necessary build configurations and file references for the module.

StripeConnect/StripeConnect.xcodeproj · high confidence

StripeCore project structure reorganized to use Xcode 15 file system synchronization

The StripeCore Xcode project has been updated to use Xcode 15's file system synchronization feature, replacing the previous manual file referencing with automatic root groups for the StripeCore, StripeCoreTests, and StripeCoreTestUtils targets. This change simplifies project maintenance by allowing Xcode to automatically track source files, while explicitly excluding Info.plist files and defining public headers (StripeCore.h, StripeCoreTestUtils.h) to ensure correct module visibility for consumers.

StripeCore/StripeCore.xcodeproj · high confidence

Behavioural changes

1817 commits (278 fixes) modifying StripePaymentSheet/StripePaymentSheet

A change to existing behaviour in StripePaymentSheet/StripePaymentSheet — 1817 commits (278 fixs), 393 files.

StripePaymentSheet/StripePaymentSheet · medium confidence · unverified

Add BLIK and AU BECS localization strings

StripeUICore now includes localized strings for BLIK payment codes and Australian BECS BSB numbers, along with updated translations for existing UI labels across multiple languages.

StripeUICore · high confidence

Add models for network-based card frame verification

The API models now support a new verification flow where scanned card frames are sent to the server. New structs \VerificationFramesData\ and \VerifyFrames\ define the request payload, which includes base64-encoded card image data and viewfinder margin coordinates, enabling the client to perform verification via a network request rather than a local completion loop.

StripeCardScan/StripeCardScan/Source/CardVerify/Api/Models · high confidence

Added default Xcode workspace settings

The Xcode workspace now includes default configuration files to standardize the development environment. Specifically, it adds an \IDEWorkspaceChecks.plist\ to suppress the 32-bit warning and a \WorkspaceSettings.xcsettings\ file to disable automatic context creation, ensuring consistent behavior for all developers opening the project.

Stripe.xcworkspace/xcshareddata · high confidence

Apple Pay integration now supports async delegate methods and coupon codes

Developers integrating Apple Pay can now use modern Swift async/await patterns for delegate callbacks, including handling shipping method and contact selections, payment method changes, and coupon code updates. The SDK also introduces a new delegate method to validate and update the payment amount when a user enters or modifies a coupon code within the Apple Pay sheet. Additionally, the context now allows Apple Pay to be presented even if the customer has no saved cards, enabling them to add a new card directly within the Apple Pay interface.

StripeApplePay/StripeApplePay/Source/ApplePayContext · high confidence

CI integration for automated dead code detection

Added Ruby scripts to the CI pipeline to automatically detect unused code. The \process\_periphery\_output.rb\ script parses Periphery static analysis output into a standardized JSON format, while \compare\_unused\_code.rb\ compares this output against a master baseline to identify new dead code introduced in feature branches, flagging builds if more than 300 new instances are found.

_ci\_scripts/dead\code · high confidence

Centralized localization system with main-bundle fallback support

StripeCore now provides a unified localization infrastructure that allows the host application to override SDK strings. The new \STPLocalizationUtils\ and \STPLocalizedString\ helpers check if the main app supports the user's preferred language; if it does, the SDK pulls strings from the main bundle, enabling developers to provide custom translations without forking the SDK. If the main app lacks the translation, it falls back to the SDK's internal bundle. This change also introduces a \String+Localized\ extension with specific UI strings for card scanning and OTP flows.

StripeCore/StripeCore/Source/Localization · high confidence

Example and Stripe3DS2 projects now require iOS 15

The build configurations for the PaymentSheet example app and the Stripe3DS2 library (including their demo and test targets) have been updated to set the minimum deployment target to iOS 15. This change means that these example applications and the Stripe3DS2 framework will no longer run on devices or simulators using iOS 13 or 14.

Example/PaymentSheet Example/BuildConfigurations, Stripe3DS2/BuildConfigurations · high confidence

Example app adds EU compliance display names and test-mode configuration

The CryptoOnramp example app now includes helper extensions to improve the user experience for European users and simplify testing. It displays human-readable names for various EU tax and identification numbers (such as German Steuer-ID, French NIR, and Polish PESEL) and clearly labels applicable regulations like CRS/CARF and MiCA. Additionally, the app is configured to support live-mode testing by allowing the publishable key to be switched between test and live environments, and includes utility methods to navigate the view controller hierarchy for better UI integration.

Example/CryptoOnramp Example/CryptoOnramp Example/Extensions · high confidence

Financial Connections API client migrated to Swift concurrency

The Financial Connections API client has been rewritten to use Swift's native async/await concurrency model, replacing the previous Future/Promise-based implementation. This change introduces a new \FinancialConnectionsAsyncAPIClient\ that serves as the core networking layer, with wrapper extensions to maintain backward compatibility for existing callers. The migration also includes a new \APIVersion\ struct to manage the \financial\_connections\_client\_api\_beta\ header, a dedicated \FinancialConnectionsAPIClientLogger\ for tracking attestation events, and a centralized \FinancialConnectionsAPIEndpoint\ enum defining all API paths and their key usage rules.

StripeFinancialConnections/StripeFinancialConnections/Source/API Bindings · high confidence

Financial Connections Playground app receives comprehensive configuration and UI overhaul

The Financial Connections Example app's playground has been refactored to support a wider range of testing scenarios. A new \PlaygroundConfiguration\ system allows users to toggle between Standalone and Payment Element integration types, switch experiences (Financial Connections, Instant Bank Payments, Link Card Brand), and select SDK types (including FC Lite). The UI now exposes controls for merchant selection, test mode, pre-collected consent modes, and custom API keys, providing a more flexible environment for validating different integration paths.

Example/FinancialConnections Example/FinancialConnections Example/Playground · high confidence

Financial Connections UI redesign and theming overhaul

The Financial Connections SDK has been updated with a comprehensive visual redesign, introducing a new \FinancialConnectionsAppearance\ system that drives consistent styling across all components. This change replaces the previous UI implementation with new native views including \AccountPickerRowView\ for bank selection, \DataAccessNoticeViewController\ for consent flows, and \CloseConfirmationViewController\ for exit handling. The update incorporates custom typography via \AttributedLabel\ and \AttributedTextView\ to support markdown links and bold text, applies new button configurations with haptic feedback, and ensures proper support for dark mode and right-to-left (RTL) layouts.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/Shared · high confidence

Financial Connections example app adds internal helper utilities for testing

The Financial Connections example application now includes a set of internal helper utilities to support its playground functionality. These additions include a \BannerHelper\ for displaying transient UI notifications, a \UserDefault\ property wrapper and \PlaygroundUserDefaults\ class for managing test configuration flags (such as enabling native mode or the FC Lite secure webview), and UIKit extensions (\UIAlertController\ and \UIViewController\) to simplify presenting alerts and identifying the top-most view controller in complex window scenes.

Example/FinancialConnections Example/FinancialConnections Example/Playground/helpers · high confidence

Financial Connections example app build configuration and UI test setup

The Financial Connections example app now includes generated Xcode build configuration files (xcconfig) for Debug, Release, and Shared targets, establishing standard build settings such as automatic code signing, asset catalog configurations, and runtime library paths. Additionally, a dedicated UI test target configuration has been added, explicitly setting the minimum deployment target to iOS 15.0 and linking the tests to the main example target, supporting the introduction of native UI tests for the Financial Connections feature.

Example/FinancialConnections Example/BuildConfigurations · high confidence

Financial Connections example app now includes StripePaymentSheet

The Financial Connections example playground has been updated to link against and embed the StripePaymentSheet framework, in addition to the existing StripePayments, StripePaymentsUI, StripeApplePay, and Stripe3DS2 dependencies. This allows the example app to demonstrate payment sheet integration alongside financial connections flows.

Example/FinancialConnections Example/FinancialConnections Example.xcodeproj · high confidence

The \PaneLayoutView\ component in Financial Connections now supports keeping the footer view pinned above the on-screen keyboard. When the \keepFooterAboveKeyboard\ flag is enabled, the layout automatically adjusts the footer's bottom constraint in response to keyboard show/hide notifications, ensuring that interactive elements in the footer (such as action buttons) remain accessible and visible while the user is typing. This change improves the user experience for forms or inputs that require footer interaction.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/Shared/PaneLayoutView · high confidence

Generated build configuration files for example and library targets

The project now includes generated \.xcconfig\ files for the example apps (CardImageVerification, IdentityVerification, Non-Card Payment Examples, UI Examples) and the core Stripe library targets (Stripe, Stripe Tests, StripeCardScan). These files, created by BuildSettingExtractor, define essential build settings such as code signing styles, target device families, and module maps, replacing manual configuration to support the new Tuist-based project generation workflow.

(repo-wide) · high confidence

Identity Verification example app updated with new UI and verification options

The Identity Verification example app has been updated to support reusing verification sessions and testing additional verification types. The interface now includes segmented controls to switch between native SDK and web redirect modes, as well as options to start a new session or reuse an existing one. Users can now test Document, ID Number, Address, and Phone verification types, with specific configuration options for phone verification such as fallback to document and OTP check requirements. The app also allows toggling allowed document types (Driving License, Passport, ID Card) and includes new branding assets and localized strings.

Example/IdentityVerification Example/IdentityVerification Example/Resources · high confidence

Improved Apple Pay billing details extraction and simulator support

The Apple Pay integration now more accurately captures billing information by filling missing email and phone fields from the shipping contact when the billing contact lacks them, addressing cases where Apple Pay places this data in the shipping panel. Additionally, new helper extensions provide standardized address parameter mapping for contacts and utilities to detect simulated Apple Pay transactions and generate test transaction identifiers.

StripeApplePay/StripeApplePay/Source/Extensions · high confidence

IntegrationTester app migrated to SwiftUI

The IntegrationTester application has been rebuilt using SwiftUI, replacing the previous implementation. This update introduces a new main entry point (IntegrationTesterApp) that configures the Stripe publishable key and handles URL callbacks, alongside a new MainMenu view that lists available integration methods. The app now features dedicated SwiftUI views for testing various payment flows, including Card, Card Setup Intents, Apple Pay, AUBECS Debit, SEPA Debit, and other payment methods requiring contact or shipping information. Supporting models (BackendModel, MyPIModel, MySIModel, MyApplePayBackendModel) manage the interaction with the demo backend and Stripe SDK, while helper views provide consistent status feedback and Apple Pay button integration.

Testers/IntegrationTester/IntegrationTester · high confidence

Introduce ResetFlow for linking additional accounts

The Financial Connections native UI now includes a dedicated ResetFlow screen, replacing the previous LinkAnotherAccount/LinkMoreAccount flow. This new view handles scenarios where a user wants to link another account, such as pressing 'Link another account' in the Consent Pane or selecting 'Select another bank' from an error screen. It features a loading spinner, logs pane-loaded events, and provides specific error analytics for the linking process.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/ResetFlow · high confidence

Introduce StripeJSONEncoder and StripeJSONDecoder for robust JSON handling

StripeCore now includes custom \StripeJSONEncoder\ and \StripeJSONDecoder\ implementations to replace previous JSON serialization logic. These new coders provide improved handling of unknown API fields, allowing responses to retain unrecognized data in \allResponseFields\ and requests to include \additionalParameters\ without failing. The update also introduces \ParsedEnum\ to safely parse enum values from the API, preserving raw strings for unrecognized values instead of throwing errors, and supports flexible key casing (snake\_case vs. existing case) during encoding and decoding.

StripeCore/StripeCore/Source/Coder · high confidence

Introduce fraud detection telemetry data storage and error logging

The Telemetry module now includes a new \FraudDetectionData\ class to manage fraud detection identifiers (muid, guid, sid) with automatic expiration of the session ID after 30 minutes, persisted via \UserDefaults\. The \STPTelemetryClient\ has been updated to log a \fraudDetectionApiFailure\ analytic event when sending telemetry data to m.stripe.com fails, ensuring that API errors are captured for monitoring.

StripeCore/StripeCore/Source/Telemetry · high confidence

Introduce network-based card verification flow

The CardVerify module now implements a new verification workflow that replaces the previous local completion loop with a network-based approach. This change introduces dedicated view controllers (VerifyCardViewController, VerifyCardAddViewController) and a state machine (CardVerifyStateMachine) to manage the scanning process, which now collects and compresses frames for fraud analysis before sending them to the backend. The system also adds support for strict mode frame counting and configurable image acceptance criteria to improve verification accuracy.

StripeCardScan/StripeCardScan/Source/CardVerify · high confidence

Introduce new StripeConnect example app with configurable demo accounts and inline notification banners

The StripeConnectExample app has been replaced with a new implementation that allows users to select arbitrary demo merchant accounts via a settings view and configure server endpoints. It now includes dedicated UI for testing the inline notification banner component, which renders required actions within the host app's content flow rather than as a full-screen overlay. The app also supports switching between multiple visual themes (such as Default, Dark Mode, and custom presets like Link or Ocean Breeze) to demonstrate the SDK's appearance customization capabilities.

Example/StripeConnectExample/StripeConnectExample · high confidence

Introduces FinancialConnectionsSDKImplementation to unify sheet presentation and result handling

The Financial Connections SDK now uses a new \FinancialConnectionsSDKImplementation\ class to present the \FinancialConnectionsSheet\. This change centralizes the presentation logic, allowing the SDK to accept additional configuration parameters such as \existingConsumer\, \preCollectedConsent\, and \linkBrand\. It also standardizes the result handling to explicitly distinguish between different connection outcomes, including \instantDebits\, \linkedAccount\, and \paymentDetails\, ensuring users receive the correct linked entity type upon completion.

StripeFinancialConnections/StripeFinancialConnections/Source/FinancialConnectionsSDK · high confidence

Introduces Swift type aliases and StripeCore dependency for Apple Pay integration

The StripeApplePay module now includes new source files defining public type aliases (STPVoidBlock and STPIntentClientSecretCompletionBlock) to simplify callback signatures for developers, and explicitly imports the StripeCore framework to ensure its symbols are available to consumers of the Apple Pay library.

StripeApplePay/StripeApplePay/Source · high confidence

The Link Account Picker pane now uses a new native UIKit implementation (LinkAccountPickerViewController and associated views) to display and select networked bank accounts. This change updates the user interface to show account rows with institution icons, account names, and balances, and adds a dedicated row for adding new bank accounts. The picker handles loading states with a shimmering view, manages account selection logic via a new data source, and updates the primary action button title based on the selected account's specific call-to-action.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/LinkAccountPicker · high confidence

Introduces dedicated API extensions for PaymentIntent, SetupIntent, PaymentMethod, and Token handling in Apple Pay

This change adds new Swift API extension files (\PaymentIntent+API.swift\, \SetupIntent+API.swift\, \PaymentMethod+API.swift\, \Token+API.swift\) within the \StripeApplePay\ module. These files centralize the logic for retrieving and confirming Payment and Setup Intents, creating Payment Methods from Apple Pay tokens, and generating Stripe Tokens from \PKPayment\ objects. The implementation includes specific telemetry logging for confirmation attempts and token creation, as well as the injection of telemetry fields into API parameters. It also exposes the \Token.create\ method under the \@\_spi(StripeApplePayTokenization)\ SPI for limited public use, allowing developers to convert Apple Pay payment information into Stripe tokens directly.

StripeApplePay/StripeApplePay/Source/PaymentsCore/API · high confidence

Modernized API model bindings for Apple Pay payments

The StripeApplePay SDK now uses a new set of internal Swift structs to represent API data, replacing the previous implementation. This change introduces dedicated model types for PaymentIntent, SetupIntent, PaymentMethod, Token, and associated details (Address, BillingDetails, ShippingDetails, CardBrand), all located in the PaymentsCore API Models directory. For users, this ensures more robust handling of Apple Pay tokenization and confirmation flows, including support for scoped client secrets, consistent client attribution metadata, and accurate parsing of card funding types and brands.

StripeApplePay/StripeApplePay/Source/PaymentsCore/API/Models · high confidence

Native Account Picker UI and data handling overhaul

The native Account Picker has been rebuilt with a new data source layer that manages account polling and selection, introducing support for both single and multi-select modes. The interface now displays account balances and masked numbers, allows users to select multiple accounts, and includes a footer that disables the 'Connect' button until at least one account is chosen. Error handling is improved with dedicated views for account load failures and ineligible accounts, providing specific guidance and retry options. Additionally, a loading state with shimmering placeholders is shown while accounts are being retrieved from the bank.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/AccountPicker · high confidence

Native Attach Linked Payment Account pane with specific error handling

The Attach Linked Payment Account flow now uses a native iOS view controller that displays a loading spinner while polling for the account attachment result. If the account number retrieval fails, users see a dedicated error view instructing them to select another bank or enter details manually (if enabled). Other errors present a generic failure view with a single retry option. The flow also tracks analytics for pane load, successful polling, and expected/unexpected errors.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/AttachLinkedPaymentAccount · high confidence

The Financial Connections consent pane has been rebuilt with a new native UI structure, introducing dedicated views for the body (ConsentBodyView), footer (ConsentFooterView), and logo (ConsentLogoView) to support server-driven content and merchant branding. The footer now features a primary 'Agree' button with loading states and links to terms, while the body displays dynamic bullet points with icons and clickable links. The logo view supports multiple merchant logos with animated ellipsis indicators and handles dark mode color updates via trait collection changes. A new ConsentDataSource manages the session manifest, consent data, and analytics, coordinating the flow from consent acquisition to the next pane.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/Consent · high confidence

Native Financial Connections success pane UI and logic

The Financial Connections flow now displays a native success screen after linking accounts. This pane shows a title and subtitle (including a notice if saving to Link with Stripe failed), an icon, and a "Done" button. It supports custom captions, hides the "Link Another Account" button when configured, and logs analytics for the pane load and button tap.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/Success · high confidence

Native terminal error screen with manual entry option

Financial Connections now displays a native error view when a terminal error occurs during account connection. This screen shows a warning icon and a localized message, and conditionally provides a 'Enter bank details manually' button if manual entry is permitted; otherwise, it only offers a 'Close' action.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/TerminalError · high confidence

New Financial Connections analytics client and sheet event logging

The Financial Connections SDK now uses a dedicated \FinancialConnectionsAnalyticsClient\ to log events with a consistent \linked\_accounts.\ prefix, ensuring pane identifiers are always sent as strings and duration values as integers. It also introduces structured analytic structs for the Financial Connections Sheet, capturing presentation, closure, flow determination (including killswitch status), and synchronization API call outcomes.

StripeFinancialConnections/StripeFinancialConnections/Source/Analytics · high confidence

New error handling UI for bank institution downtime

The Financial Connections flow now displays a dedicated error screen when a selected bank is unavailable due to maintenance or other issues. This screen shows the bank's name and icon, provides a specific message about when service is expected to return (if known), and offers users the option to select a different bank. For non-terminal errors, it also provides a secondary option to enter bank details manually, allowing users to proceed with manual input if the automatic connection fails.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/Error · high confidence

Payment Sheet Example app project structure updated

The Xcode project file for the Payment Sheet Example app has been regenerated, introducing a new build configuration that embeds several Stripe frameworks (including StripePayments, StripePaymentSheet, StripeUICore, and StripeFinancialConnections) and adds support for test plans and localization screenshot generators.

Example/PaymentSheet Example/PaymentSheet Example.xcodeproj · medium confidence

Redesigned Institution Picker with search, loading states, and manual entry options

The Institution Picker view has been rebuilt to support a new search experience and improved visual feedback. Users can now search for banks using a dedicated search bar with debounced results, and the interface displays a shimmering loading state while institutions are fetched. The picker also includes a footer that allows users to manually enter bank details if their institution is not found or if search is disabled, and provides a 'Search for more banks' option when the initial featured list is exhausted.

StripeFinancialConnections/StripeFinancialConnections/Source/Native/InstitutionPicker · high confidence

Rich, structured error reporting for Crypto Onramp

The Crypto Onramp SDK now provides detailed, structured error information for developers. Instead of generic failure messages, errors now include specific codes (e.g., \app\_attestation\_unavailable\, \crypto\_onramp\_wallet\_not\_found\), localized user-facing messages, and rich developer diagnostics. These diagnostics expose backend API details (reason, request ID, error type), SDK versions, and suggested next steps to help resolve issues like invalid wallet signatures or unsupported networks. This change also preserves specific PaymentIntent error details during checkout failures for better debugging.

StripeCryptoOnramp/StripeCryptoOnramp/Source/Components/Errors · high confidence

Stripe Card Scan UI localized into 30+ languages

The Stripe Card Scan experience now displays interface text in the user's preferred language. This update adds localized strings for key card-scanning actions and messages—including prompts to enable camera access, toggle the torch, enter card details manually, and notifications when a scanned card does not match—across a wide range of locales such as Bulgarian, Catalan, Czech, Danish, German, Greek, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian, and many others.

StripeCardScan/StripeCardScan/Resources/Localizations · high confidence

Stripe Identity API v7 support and expanded verification fields

The SDK now supports API version 7 of the VerificationPages API, enabling new verification capabilities such as selfie capture, phone number collection, and OTP verification. This update introduces new UI screens and data models for collecting individual details (name, date of birth, address, ID number), handling phone OTP flows, and processing selfie images with ML-based face detection. It also adds support for soft-blocking and 'continue anyway' actions, allows manual document uploads alongside auto-capture, and includes new analytics for tracking image scanning performance and verification status.

StripeIdentity/StripeIdentity · high confidence

Stripe Identity iOS SDK v25.17.0 release

This release updates the Stripe Identity iOS SDK to version 25.17.0. The update includes a new README file detailing SDK features and integration steps, a new DocC documentation placeholder, and a comprehensive set of localized strings for the identity verification UI in multiple languages (including Bulgarian, Catalan, Czech, Danish, and German).

StripeIdentity · high confidence

Stripe iOS SDK project structure migrated to Xcode 15+ format with framework embedding

The Stripe iOS SDK project file has been regenerated to use Xcode project format version 70, enabling modern project features such as file-system synchronization for test and host targets. The build configuration now explicitly embeds core frameworks (Stripe, StripeCore, StripePayments, StripePaymentsUI, StripePaymentSheet, StripeApplePay, Stripe3DS2, and StripeUICore) into the application bundle, ensuring they are correctly linked and signed at runtime. Additionally, the project structure now includes dedicated targets for StripeIssuing and test utilities, reflecting the modularization of the SDK.

Stripe/Stripe.xcodeproj · high confidence

Stripe iOS SDK v25 introduces concurrency safety and unified module structure

This update marks a significant structural shift for the Stripe iOS SDK. The main \Stripe\ framework now acts as a unified umbrella that re-exports dependent SDKs (StripeApplePay, StripeCore, StripeIssuing, StripePayments, and StripePaymentsUI), allowing developers to import all components with a single \import Stripe\ declaration. To support modern concurrency, public delegate protocols, such as \STPApplePayContextDelegate\, have been annotated with \@MainActor\ and \@preconcurrency\ to ensure thread safety and compatibility with Swift's concurrency model. Additionally, the SDK now includes a Privacy Manifest detailing collected data types (Product Interaction, Payment Info) and accessed APIs (UserDefaults), and adds analytics parameters for Apple Pay support status and OCR type.

Stripe/StripeiOS · high confidence

Stripe iOS SDK v26.12.1 API Bindings

This release updates the StripeCore API bindings to version 26.12.1. The \STPAPIClient\ now exposes a \betas\ property, allowing libraries to inject custom beta headers into API requests. File uploads via \uploadImage\ now return \ImageUploadMetrics\ (including upload time and file size) through the new \uploadImageAndGetMetrics\ method. \StripeAPIError\ now includes \httpStatusCode\ and \requestID\ fields for better error debugging. Additionally, \STPClientAttributionMetadata\ is introduced to attach client-side integration details (such as session IDs and integration source) to API requests.

StripeCore/StripeCore/Source/API Bindings · high confidence

Stripe3DS2 framework project regenerated with Xcode 14+ project format

The Stripe3DS2 Xcode project has been regenerated, updating the project file format to objectVersion 70 (Xcode 14+) and adopting file-system synchronization for source management. This change ensures the project structure is maintained automatically and aligns with modern Xcode project conventions, while preserving the existing build targets for the Stripe3DS2 framework, its demo UI, and associated tests.

Stripe3DS2/Stripe3DS2.xcodeproj · high confidence

StripeCameraCore module now depends on StripeCore

The StripeCameraCore framework has been updated to include a dependency on StripeCore.framework. This change ensures that StripeCameraCore can access shared utilities and services provided by the StripeCore module, which is now explicitly linked in the build configuration.

StripeCameraCore/StripeCameraCore.xcodeproj · high confidence

StripeCardScan project structure and build configuration updates

The StripeCardScan Xcode project has been updated to version 23.18.2, incorporating structural changes such as migrating project files from groups to folders and adding support for Welsh and Arabic localizations while removing Norwegian Nynorsk. The build configuration now includes test dependencies like OHHTTPStubs and iOSSnapshotTestCase, and the project scheme is configured to run tests against the StripeCardScan framework with reference images located in the Tests directory.

StripeCardScan/StripeCardScan.xcodeproj · high confidence

StripeCore Xcode scheme configuration added

The StripeCore Xcode project now includes a committed scheme file (StripeCore.xcscheme) that defines build, test, launch, profile, analyze, and archive actions. This ensures consistent development environment settings for building the StripeCore framework and running the StripeCoreTests unit tests within Xcode.

StripeCore/StripeCore.xcodeproj/xcshareddata · high confidence

StripeFinancialConnections module introduces privacy manifest and standard framework structure

The StripeFinancialConnections module now includes a PrivacyInfo.xcprivacy file declaring the collection of product interaction and payment information for app functionality, alongside the use of NSUserDefaults APIs. This is accompanied by the addition of a standard Info.plist and a public header file (StripeFinancialConnections.h) that exposes the module's version number and string, establishing the foundational structure for the renamed financial connections component.

StripeFinancialConnections/StripeFinancialConnections · high confidence

UI Examples app now embeds Stripe modular frameworks

The UI Examples sample app has been updated to link and embed the modular Stripe framework structure, including StripeCore, StripePayments, StripePaymentsUI, StripeUICore, Stripe3DS2, and StripeApplePay. This change ensures the sample application correctly bundles these dependencies for local testing and development.

Example/UI Examples/UI Examples.xcodeproj · high confidence

Updated CardImageVerification example app to input card details and view verification results

The CardImageVerification example app now allows users to input a card's IIN and last four digits before starting the verification flow. After the card image is scanned and the verification intent is created, the app displays the final verification results from the server in an alert, providing a complete end-to-end demonstration of the Card Image Verification process.

Example/CardImageVerification Example/CardImageVerification Example/View Controllers · high confidence

The Jazzy documentation theme has been updated to support a full-width layout and includes a new client-side search feature. This change introduces a new syntax-highlighting stylesheet (highlight.css.scss), a comprehensive theme stylesheet (jazzy.css.scss) defining the visual design, and JavaScript assets (jazzy.js, jazzy.search.js) that enable interactive documentation navigation and search functionality using Lunr.js. The theme also bundles jQuery v3.6.0 to support these client-side interactions.

.jazzy · high confidence

Workspace restructured to include new SDK modules and example apps

The Stripe.xcworkspace has been updated to reference a broader set of frameworks and example applications. New modules added to the workspace include StripeCameraCore, StripeCardScan, StripeConnect, StripeCore, StripeCryptoOnramp, StripeFinancialConnections, StripeFinancialConnectionsLite, StripeIdentity, StripeIssuing, and StripeUICore. Additionally, the workspace now includes example projects for AppClip, CardImageVerification, FinancialConnections, IdentityVerification, Non-Card Payments, PaymentSheet, StripeConnect, CryptoOnramp, and UI Examples, alongside an IntegrationTester project.

Stripe.xcworkspace · high confidence

Test coverage

Add CocoaPods installation tests for Objective-C and Swift; Add UI test coverage for Checkout Elements, CustomerSheet, and FC Lite; Add localization helpers and end-to-end test data source for card verification; Added Financial Connections UI test suite for the Example app; Added StripeCameraCoreTestUtils framework with test mocks; Added UI test infrastructure for Stripe Connect onboarding; Added and updated unit tests for Stripe iOS SDK components; Added end-to-end UI tests for the Card Image Verification example app; Added end-to-end UI tests for the Crypto Onramp example app; Added iOS 26 snapshot test plans and removed legacy header files; Added iOS snapshot testing infrastructure for UI tests; Added localization screenshot generation tool for PaymentSheet; Added snapshot tests for 3DS2 challenge UI and right-to-left layout; Added test configuration for StripeConnect; Added test coverage for Crypto Onramp SDK; Added test coverage for Financial Connections SDK components; Added test coverage for PaymentIntent deserialization with nil address line1; Added test coverage for StripeConnect internal components; Added test coverage for StripeCore helpers; Added test suite for 3DS2 version 2.2.0 compliance; Added testing utilities for analytics and UI layout; Added tests for Apple Pay billing details extraction and telemetry injection; Added tests for Stripe Attestation logic; Added tests for StripeCore API bindings and core utilities; Added tests for StripeJSONEncoder and StripeJSONDecoder; Added unit tests for CGRect coordinate transformations; Added unit tests for Connect SDK appearance, custom fonts, and web view communication; Added unit tests for HostedAuthUrlBuilder, LinkBrand, and URL payment method extraction; Added unit tests for Stripe Connect component view controllers; Added unit tests for StripeCardScan verification and analytics flows; Added unit tests for StripeCore analytics serialization and event translation; Added unit tests for StripeCore utility extensions; New mock utilities for analytics, attestation, and test data; New test utilities in StripeCoreTestUtils.

Dependencies

Stripe iOS SDK 26.12.1 release with iOS 15 minimum and new modules

The Stripe iOS SDK has been updated to version 26.12.1, raising the minimum deployment target to iOS 15. This release introduces several new modular components: StripeConnect for embedded dashboard functionality, StripeCryptoOnramp for crypto onramp transactions, and StripeFinancialConnectionsLite for lightweight financial account connections. The SDK also includes updated podspecs and Swift Package Manager configurations for existing modules like StripeIdentity, StripeIssuing, and StripeCardScan, ensuring they align with the new modular structure and iOS 15 requirements.

(dependencies) · high confidence

Housekeeping

Added Xcode scheme configurations for example and library projects; Added Xcode scheme for IdentityVerification Example app; Added empty workspace configuration for CryptoOnramp Example; Initial repository scaffolding and configuration; Regenerated Xcode project workspace files.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 39 → 45 (+6.0)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 85 → 85 (-0.5)
  • Architecture 96 → 88 (-8.3)
  • Maturity 60 → 60 (+0.1)
  • Readiness 53 → 47 (-5.6)
  • Security 27 → 61 (+33.3)
  • Event Sourcing 100 → 100 (+0.0)
  • Accessibility 28 → 29 (+1.2)

Resolved (67)

  • Change coupling: HostViewController.swift ↔ FinancialConnectionsWebFlowViewController.swift (StripeFinancialConnections/StripeFinancialConnections/Source/Common/HostViewController.swift)
  • Change coupling: HostViewController.swift ↔ NativeFlowController.swift (StripeFinancialConnections/StripeFinancialConnections/Source/Common/HostViewController.swift)
  • Change coupling: PaymentPagesAPIResponse+Session.swift ↔ Checkout+Session+Internal.swift (StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/Checkout/API Models/PaymentPagesAPIResponse+Session.swift)
  • Change-coupling hub: STPIntentAction.swift → STPPaymentMethod.swift, STPPaymentMethodEnums.swift, STPPaymentMethodParams.swift (StripePayments/StripePayments/Source/API Bindings/Models/Shared/STPIntentAction.swift)
  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (11 lines × 4) (StripePayments/StripePayments/Source/API Bindings/Models/PaymentMethods/Types/STPPaymentMethodKakaoPay.swift)
  • Duplicated block (12 lines × 10) (StripeCardScan/StripeCardScan/Source/CardScan/CreditCardOcr/CreditCardOcrPrediction.swift)
  • Duplicated block (12 lines × 2) (StripeCardScan/StripeCardScan/Source/CardScan/CreditCardOcr/CreditCardOcrPrediction.swift)
  • Duplicated block (12 lines × 2) (StripePayments/StripePayments/Source/Helpers/STPBankAccountCollector.swift)
  • Duplicated block (12 lines × 2) (StripePayments/StripePayments/Source/Helpers/STPBankAccountCollector.swift)
  • Duplicated block (12–13 lines × 2) (StripeFinancialConnectionsLite/StripeFinancialConnectionsLite/Source/FCLiteImplementation.swift)
  • Duplicated block (13 lines × 4) (StripePayments/StripePayments/Source/API Bindings/Models/SetupIntents/STPSetupIntent.swift)
  • Duplicated block (13 lines × 5) (StripePayments/StripePayments/Source/API Bindings/Models/PaymentMethods/Types/STPPaymentMethodBancontact.swift)
  • Duplicated block (14 lines × 3) (StripePayments/StripePayments/Source/API Bindings/Models/PaymentMethods/Types/STPPaymentMethodPayPal.swift)
  • Duplicated block (15 lines × 2) (Example/FinancialConnections Example/FinancialConnections Example/Playground/PlaygroundViewModel.swift)
  • Duplicated block (15 lines × 2) (Example/PaymentSheet Example/PaymentSheet Example/Checkout Playground/CheckoutCartView.swift)
  • Duplicated block (16 lines × 2) (Example/FinancialConnections Example/FinancialConnections Example/Playground/PlaygroundViewModel.swift)
  • Duplicated block (16 lines × 2) (StripePayments/StripePayments/Source/API Bindings/Models/Shared/LinkSettings.swift)
  • …and 47 more

New (218)

  • BillingDetails.init (cognitive 23) (StripeApplePay/StripeApplePay/Source/Extensions/BillingDetails+ApplePay.swift)
  • Change-coupling hub: HostViewController.swift → FinancialConnectionsSheet.swift, NativeFlowController.swift, FinancialConnectionsWebFlowViewController.swift (StripeFinancialConnections/StripeFinancialConnections/Source/Common/HostViewController.swift)
  • ClassTooLong: CryptoOnrampCoordinator (StripeCryptoOnramp/StripeCryptoOnramp/Source/Components/CryptoOnrampCoordinator.swift)
  • ConfirmButton.update (cognitive 31) (StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/Views/ConfirmButton.swift)
  • ConfirmButton.update (cyclomatic 36) (StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/Views/ConfirmButton.swift)
  • Coverage not measured — Swift suite
  • Documentation: no project overview (stripe3ds2-support/doc/html/index.html)
  • Duplicated block (10 lines × 2) (Example/CryptoOnramp Example/CryptoOnramp Example/AttachWalletAddressView.swift)
  • Duplicated block (10 lines × 2) (Example/CryptoOnramp Example/CryptoOnramp Example/ComplianceIdentifiersEntryView.swift)
  • Duplicated block (10 lines × 2) (Example/PaymentSheet Example/PaymentSheet Example/ExampleLinkControllerPreviewView.swift)
  • Duplicated block (10 lines × 2) (Example/PaymentSheet Example/PaymentSheet Example/ExampleSwiftUIViews.swift)
  • Duplicated block (10 lines × 2) (Example/PaymentSheet Example/PaymentSheet Example/PaymentSheetTestPlaygroundSettings.swift)
  • Duplicated block (10 lines × 2) (Example/PaymentSheet Example/PaymentSheet Example/PaymentSheetTestPlaygroundSettings.swift)
  • Duplicated block (10 lines × 2) (StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/Embedded/EmbeddedFormViewController.swift)
  • Duplicated block (10 lines × 2) (StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/New Payment Method Screen/WalletHeaderView.swift)
  • Duplicated block (10 lines × 2) (StripePayments/StripePayments/Source/API Bindings/Models/Shared/STPIntentAction.swift)
  • Duplicated block (10 lines × 3) (Testers/IntegrationTester/IntegrationTester/Source/Views/PaymentMethodWithContactInfoView.swift)
  • Duplicated block (10–11 lines × 2) (StripePaymentSheet/StripePaymentSheet/Source/Internal/Link/Components/Toast/LinkToast.swift)
  • Duplicated block (10–11 lines × 2) (StripePayments/StripePaymentsTestUtils/STPTestingAPIClient+Swift.swift)
  • Duplicated block (11 lines × 2) (Example/PaymentSheet Example/PaymentSheet Example/Checkout Playground/CheckoutCartViewController.swift)
  • …and 198 more

Changes since last survey

  • 64 commits — 53 feature/other, 11 fixes

By area

  • StripePaymentSheet/StripePaymentSheet — 12 commits
  • StripeCryptoOnramp/StripeCryptoOnramp — 10 commits
  • (root) — 6 commits
  • Example/PaymentSheet Example — 6 commits
  • StripePayments/StripePaymentsTestUtils — 6 commits
  • Example/FinancialConnections Example — 5 commits
  • StripeIdentity/StripeIdentity — 4 commits
  • StripeFinancialConnections/StripeFinancialConnections — 3 commits
  • Tests/ReferenceImages_64 — 3 commits
  • StripeCryptoOnramp/StripeCryptoOnrampTests — 2 commits
  • StripePaymentSheet/StripePaymentSheetTests — 2 commits
  • Example/CardImageVerification Example — 1 commit
  • Example/CryptoOnramp Example — 1 commit
  • Stripe/StripeiOSTests — 1 commit
  • StripeCore/StripeCore — 1 commit
  • StripeIdentity/StripeIdentityTests — 1 commit

Notable commits

  • fix: Fix Currency Selector Element after session updates (#7233)
  • fix: Fix Financial Connections onEvent error mapping and emission diagnostics (#7192)
  • fix: Fix Identity routing tests (#7209)
  • fix: Fix LBP conversion and Apple Pay currency rounding (#7264)
  • fix: Fix card funding warnings after scanning (#7159)
  • fix: Fix customer session cache expiry (#7237)
  • fix: Fixed a potential crash when using certain card brands in PaymentSheet (#7263)
  • fix: PaymentSheet: Fixes Failing UI Test (#7257)
  • fix: [Card Scan Fixes] Bundle finish() and delegate calls (#7265)
  • fix: [Card Scan Fixes] Separate card scanner setup from startup (#7245)
  • fix: [FC] Fix Stability Tests Keyboard Dismissal (#7269)
  • change: Add CSE height update delegate (#7102)
  • change: Add Card Element analytics (#7267)
  • change: Add Checkout default email, updateEmail (#6762)
  • change: Add GoPay support to PaymentSheet (#7166)
  • change: Add Pix support to PaymentSheet (#7238)
  • change: Add Xcode 27 files (#7222)
  • change: Add border around embedded payment sheet bounds in example app (#7276)
  • change: Add email and phone to crypto onramp KycInfo and map them from Apple Pay (#7182)
  • change: Add program name for cards that have card art (#7194)
  • …and 44 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

stripe/stripe-ios was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f18e29eae406d29c25c384e8153a3b2d447be0c2 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.