Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
OverviewAccept a paymentUpgrade your integration
Online payments
OverviewFind your use case
Use Payment Links
Use a prebuilt checkout page
Build a custom integration with Elements
    Overview
    Quickstart guides
    Stripe Elements
    Compare Checkout Sessions and PaymentIntents
    Design an advanced integration
    Customize look and feel
    Manage payment methods
    Collect additional information
    Build a subscriptions integration
    Dynamic updates
    Add discounts
    Collect taxes on your payments
    Redeem credits
    Let customers pay in their local currency
    Save and retrieve customer payment methods
    Send receipts and paid invoices
    Manually approve payments on your server
    Authorize and capture a payment separately
    Elements with Checkout Sessions API beta changelog
Build an in-app integration
Use Managed Payments
Recurring payments
In-person payments
Terminal
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment operations
Analytics
Balances and settlement time
Compliance and security
Currencies
Declines
Disputes
Fraud prevention
Radar fraud protection
Payouts
ReceiptsRefunds and cancellations
Advanced integrations
Custom payment flows
Flexible acquiring
Off-Session Payments
Multiprocessor orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Machine payments
Financial Connections
Climate
Verify identities
United States
English (United States)
HomePaymentsBuild a custom integration with Elements

Compare the Checkout Sessions and Payment Intents APIs

Learn about the differences between the Checkout Sessions and Payment Intents APIs and when to use them with Stripe Elements.

Stripe offers two core payment APIs that you can use with Elements. The Checkout Sessions API is the recommended API for most developers. The Payment Intents API is a lower-level API that you can use to build your own checkout or payments, but it requires significantly more code and ongoing maintenance. We recommend the Payment Element with Checkout Sessions for most integrations because it covers similar payment flows as Payment Intents.

Note

This guide is specific to using APIs with Elements. To explore other use cases, see Design a payments integration.

Choose the right API

We recommend the Checkout Sessions API for most integrations. Checkout Sessions allows you to build both a basic payment collection integration or complex checkout flows. If you use PaymentIntents, you must manually build equivalent features in your code, including discount logic, tax calculation, and currency conversion. Some features, such as Adaptive Pricing, require significant effort to replicate with PaymentIntents. Choose PaymentIntents only if you want to own every part of your checkout, and rebuild these capabilities yourself.

Checkout SessionsPayment Intents
Recommended forAny businesses that wants to accept payments with less code and less maintenance. Checkout Sessions covers similar use cases as Payment Intents (basic payment collection using price_data or full checkout with line items, tax, discounts, shipping, subscriptions, and Adaptive Pricing.Businesses that want to own their checkout state and build their own discount, tax, subscription, and currency conversion logic. This requires significantly more code and ongoing maintenance.
IntegrationUse code to add a checkout page and integrate additional products. For example, enable Stripe Tax by setting automatic_tax.enabled = true, compared to the Payment Intents API which requires you to manually call the Tax API and link calculations. Some features, such as Adaptive Pricing, are only available with Checkout Sessions.The Payment Intents API is a lower-level API that allows you to build everything yourself, including tax calculation, discounts, subscriptions, and currency conversion. When you use this API, you calculate the final amount and manage the entire checkout lifecycle in your own code.
User interface
  • Elements
  • Stripe-hosted
  • Embedded form
Elements
ComplexityScales with your business from simple payment collection to complex checkout flows. It covers similar use cases as Payment Intents.Requires building and maintaining checkout features included with Checkout Sessions. Be deliberate about choosing this path.

Feature comparison

FeatureCheckout Sessions APIPayment Intents API
DesignUse for complete checkout flows, including one-time payments or complex flows with line items, taxes, shipping, and subscriptions.A lower level API for building your own payment flow from scratch. You must implement all checkout logic yourself.
Tax calculationBuilt-in tax calculation with Stripe Tax.Requires a separate integration with the Tax API.
SubscriptionsBuilt-in subscription creation.Requires a separate integration with Subscriptions.
Coupons and discountsBuilt-in coupon and discount handling.Requires calculating discounts manually.
Shipping costsBuilt-in shipping cost calculation.Requires calculating shipping costs manually.
UI flexibilityHosted checkout page, embedded forms, and custom UI.Custom UI only.
Address collectionBuilt-in customer, billing, and shipping address collection.Requires handling addresses manually.
Order trackingBuilt-in order summary and receipt functionality.Requires implementing custom order tracking.
Amount updatesDynamic inventory and line item updates.Requires manually updating the amount.
Session expirationAutomatic expiration after 24 hours.No automatic expiration.
Webhook eventsWebhook events for the complete checkout lifecycle.Payment status events only.

See also

  • Build a checkout page with the Checkout Sessions API (recommended)
  • Checkout Sessions API reference
  • Payment Intents API reference
  • Migrate from Payment Intents to Checkout Sessions
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc
On this page