---
title: "Building a mental model for Stripe payments"
description: "An online bookshop checkout must coordinate card networks, issuing banks, fraud checks, regulatory requirements, currencies, and varied payment methods while completing in roughly 2–3 seconds. Stripe abstracts these concerns through a unified API, with the PaymentIntent representing the payment lifecycle from amount and currency collection through tokenization, authorization, capture, and settlement. The Payment Element and client-side tokenization keep sensitive card details away from the shop’s servers, while Stripe may perform risk checks and additional 3D Secure authentication. Because payments can change state minutes, hours, or days later through refunds and disputes, webhook events should be treated as the source of truth for synchronizing order and downstream systems without polling."
---

# Building a mental model for Stripe payments

[Stripe](https://yomu.fyi/company/stripe) · Allison Farris · Feb 19, 2026

**Type:** Tutorial

## Summary

An online bookshop checkout must coordinate card networks, issuing banks, fraud checks, regulatory requirements, currencies, and varied payment methods while completing in roughly 2–3 seconds. Stripe abstracts these concerns through a unified API, with the PaymentIntent representing the payment lifecycle from amount and currency collection through tokenization, authorization, capture, and settlement. The Payment Element and client-side tokenization keep sensitive card details away from the shop’s servers, while Stripe may perform risk checks and additional 3D Secure authentication. Because payments can change state minutes, hours, or days later through refunds and disputes, webhook events should be treated as the source of truth for synchronizing order and downstream systems without polling.

## Context

An online bookshop needs a checkout flow that handles payment-network coordination, bank authorization, fraud assessment, PCI-DSS and SCA compliance, privacy requirements, currency differences across 135+ currencies, multiple payment methods, and payment states beyond success or failure. The flow must complete in roughly 2–3 seconds to reduce cart abandonment, while later payment changes can occur asynchronously.

## Approach / What changed

Use Stripe’s PaymentIntent as a payment state machine. Create it with the amount and currency, render the Payment Element with its client\_secret, confirm the payment through Stripe’s client SDK, and rely on Stripe for tokenization, authorization, fraud checks, authentication, capture, and settlement coordination. Add webhook listeners for payment success, required actions, failed charges, and disputes, treating those events as the source of truth for application and downstream state.

## Takeaways

- The PaymentIntent tracks a payment from creation through payment-method collection, authorization, capture, and later lifecycle changes; a Charge represents an individual attempt to charge the card.
- Stripe’s Payment Element and client-side tokenization allow sensitive card details to be handled by Stripe rather than the shop’s servers, reducing the shop’s direct PCI data-handling burden.
- Webhook events support asynchronous state changes such as successful payments, additional authentication, failed charges, and disputes, allowing order systems to react without polling.

**Tags:** [Architecture](https://yomu.fyi/topic/architecture), [Authentication](https://yomu.fyi/topic/authentication), [Reliability](https://yomu.fyi/topic/reliability)

- Source: [Stripe](https://stripe.dev/blog/building-a-mental-model-for-stripe-payments)
- Source URL: https://stripe.dev/blog/building-a-mental-model-for-stripe-payments
- Ingested by Yomu: 2026-08-28T09:00:24.121Z

[Read original post](https://stripe.dev/blog/building-a-mental-model-for-stripe-payments)
