Skip to content
How‑To Guides

How to Use Stripe: Payments Setup Guide

How to use Stripe from no-code Payment Links to full API integration — this complete guide covers products, Checkout, webhooks, Billing, Radar, Connect, and Stripe CLI testing.

How to Use Stripe: Payments Setup Guide

Stripe replaced merchant accounts, payment gateways, and weeks of bank paperwork with one API and one dashboard. The downside of having so much capability: Stripe’s documentation covers everything, which makes finding just the starting point surprisingly hard for new users. This fits into the wider topic we cover in our Complete Guide to Software and Apps.

The minimum path to actually accepting payments: create the account, verify your business details, enable the products you’ll use (Payments + maybe Billing), and integrate with your platform. For most use cases, Stripe Checkout (their hosted payment page) gets you live in under an hour without writing API code. Stripe Elements requires more setup but gives you a checkout flow that lives inside your own site.

If you’re integrating with WordPress, Shopify, or another existing platform, skip the manual integration entirely — the official Stripe plugin/app does it in three clicks. The full guide below covers each path: hosted Checkout for the fastest setup, Elements for embedded experiences, and platform integrations for existing stores.

Dashboard overview and account setup

After creating an account at stripe.com and verifying email, the Dashboard is the central hub for everything — transactions, payouts, customers, products, payment links, reports, and settings.

Complete account activation before accepting any live payments: Settings → Business settings → Bank account → Add bank account. Stripe holds funds until account activation is complete — many businesses miss this and wonder why payouts aren’t arriving.

The test mode vs live mode toggle (top right of any Dashboard screen) is the most important concept for avoiding accidentally charging real customers while testing. Test mode provides test card numbers that simulate payment processing without real money movement:

  • 4242 4242 4242 4242 — successful charge (any future expiry, any CVC)
  • 4000 0000 0000 0002 — card declined
  • 4000 0025 0000 3155 — 3DS authentication required

All Dashboard features work identically in test mode — payment links, subscriptions, webhooks, API responses all behave as they would in production. Always build and test in test mode first, verify the complete payment flow including confirmations and webhook handling, then switch to live mode.

API keys: Settings → Developers → API keys. Two key pairs: test keys (test mode) and live keys (production). Each pair has a Publishable Key (safe in front-end code — identifies the account but cannot perform sensitive operations) and a Secret Key (must never be exposed in front-end code — has full API access). Store Secret Keys in environment variables or a secrets manager, never in code repositories.

Products, prices, and payment links — no-code payments

Use caseHow to implementCode required?
Sell a fixed-price product onceCreate Product → one-time Price → generate Payment LinkNo
Monthly subscriptionCreate Product → recurring Price → generate Payment Link or Billing PortalNo (or minimal)
Custom checkout in your websiteCreate Checkout Session via API → redirect to hosted Stripe CheckoutYes (server-side API call)
Embedded payment formStripe Elements (JavaScript) → custom payment form in the pageYes (frontend JS + backend API)
Accept bank transfersEnable ACH Debit or SEPA Direct Debit in payment method settingsMinimal

Creating a Payment Link — the no-code path — takes five minutes and requires no developer. Dashboard → Payment Links → “+ New” → select a product (or create one inline) → customise the payment page (logo, brand colour, customer information fields) → create link → share the URL. The Payment Link handles all payment processing, tax collection (if configured), and sends receipt emails automatically.

Setting up payments step by step

  1. Create a product and price. Dashboard → Products → “+ Add product” → enter name, description, images → set pricing: one-time or recurring → set amount and currency. A SaaS product might have three products (Starter, Pro, Business) each with monthly and annual price variants.
  2. Enable the right payment methods. Dashboard → Settings → Payment methods → toggle on each relevant method. Cards are enabled by default. Add Apple Pay and Google Pay (no additional cost — appear automatically in eligible browsers). Add buy-now-pay-later (Klarna, Afterpay, Affirm) for higher-value consumer goods. Enabling more payment methods reduces checkout abandonment — customers who prefer their digital wallet abandon at higher rates when it’s unavailable.
  3. Configure Stripe Checkout. Server-side code creates a Checkout Session (specifying the price, success URL, and cancel URL) → redirect the customer to the hosted Stripe Checkout page → Stripe handles the payment form, 3DS authentication, and address collection → on completion, redirects to the success URL. The hosted Checkout page handles PCI compliance automatically — the business’s server never touches card data.
  4. Set up webhooks. Dashboard → Developers → Webhooks → “+ Add endpoint” → enter the server URL → select events to listen for (payment_intent.succeeded, checkout.session.completed, invoice.payment_failed, customer.subscription.deleted). Webhooks are the reliable delivery mechanism for payment events — the redirect to the success URL is not reliable for order fulfilment because customers can close the window. The webhook is the trigger that should fulfil the order, provision the subscription, or unlock the content. Webhook endpoints should respond with a 2xx status within 30 seconds; Stripe retries failed deliveries over 72 hours.
  5. Test the complete flow. Test mode → create a test payment → complete with test card → verify the webhook fires → check customer record is created in Dashboard → verify receipt email is sent. Also test the declined card scenario and the 3DS authentication scenario to ensure the checkout handles errors gracefully.
  6. Enable Stripe Billing for subscriptions. Dashboard → Billing → Subscriptions. Billing manages recurring payments including invoice generation, dunning (automated retry on failed payments), subscription pausing, and plan changes. The Customer Portal allows customers to update their payment method, view invoice history, and cancel without contacting support. Enable: Dashboard → Settings → Billing → Customer Portal → configure which features customers can self-serve.

Radar fraud prevention

Stripe Radar is the machine learning fraud prevention system included with every Stripe account at no additional cost. Radar analyses every payment attempt against Stripe’s global network of fraud signals — card velocity, device fingerprinting, IP reputation, billing address match, and hundreds of other signals — and assigns each charge a risk score.

The default rules block payments with the highest risk scores and flag medium-risk for review. Custom Radar rules adjust detection to the specific business’s risk tolerance: block cards from specific countries, require CVC verification for all transactions, flag orders above a specific dollar threshold for manual review. Dashboard → Radar → Rules → create custom rules using Stripe’s rule syntax.

Reporting and payouts

Dashboard → Reports provides the data needed for accounting and tax compliance:

  • Balance Transactions report: every credit and debit to the Stripe balance — charges, refunds, disputes, fees, and payouts — in a format suitable for accounting reconciliation
  • Payout Reconciliation report: matches each payout to the bank account with the individual transactions it comprises — essential for reconciling Stripe deposits in accounting software

Accounting software integrations (QuickBooks, Xero, FreshBooks) can import Stripe data automatically through native integrations or through services like Synder — eliminating manual transaction entry. For VAT or sales tax compliance, Stripe Tax (0.5% per transaction add-on) automatically calculates and collects the correct tax amount for each customer’s jurisdiction globally.

Payouts transfer the Stripe balance to the bank account — automatically on a daily, weekly, or monthly schedule (Settings → Payouts) or manually on demand. Standard US timing: T+2 (funds arrive two business days after the payment is processed). Instant Payouts (1.5% fee, min $0.50) transfer within 30 minutes. New accounts start on a 7-day payout schedule during the initial review period, then move to the standard 2-day schedule after the account is established.

Advanced features — Connect, Issuing, and the Stripe CLI

Stripe Connect is how to build marketplace or platform business models where payments flow from customers through the platform to third-party sellers or service providers. Three Connect account types: Standard (providers manage their own Stripe account), Express (simplified onboarding, Stripe handles identity verification — fastest go-to-market), and Custom (platform controls the full experience). The platform receives a configurable fee from each transaction automatically.

Stripe Issuing allows creating physical or virtual debit cards programmatically — for employee expense management, customer rewards cards, or contractor disbursements. Cards are created through the API with configurable spending limits, merchant category restrictions, and per-transaction approval controls. Spending data flows back to the Dashboard in real time.

Stripe CLI (install from stripe.com/docs/stripe-cli) is the development tool that makes local webhook testing practical. Run stripe listen --forward-to localhost:3000/webhook to forward all Stripe events to the local server in real time — the most efficient way to develop and test webhook handling without deploying to a live server for every test. The Dashboard also provides “Send test webhook” (Developers → Webhooks) to fire any event type to the endpoint without triggering a real payment.

Our guide on using QuickBooks covers the accounting software that processes Stripe’s exported transaction data. For Stripe’s official API documentation covering webhook implementation, payment intent lifecycle, and SDK usage across all languages, Stripe’s developer documentation is among the best-written technical documentation in the industry and is the definitive reference for any integration work.

Common Stripe implementation mistakes

  • Relying on redirect for order fulfilment. Using the success URL redirect as the trigger to fulfil an order, send a confirmation email, or provision access is unreliable. The customer can close the tab after payment but before the redirect completes. Always fulfil via webhook on payment_intent.succeeded or checkout.session.completed.
  • Not verifying webhook signatures. Any server can send a POST request to a webhook endpoint — without signature verification, malicious actors can fake successful payment events. Verify every webhook: compare the Stripe-Signature header against the webhook signing secret using the Stripe library’s constructEvent() method. Reject any request that fails verification.
  • Not handling idempotency. Stripe can deliver the same webhook event more than once. The webhook handler should be idempotent — processing the same event twice should produce the same result as processing it once. Check whether an order has already been fulfilled before fulfilling it again.
  • Storing card numbers locally. Never store card numbers, CVCs, or magnetic stripe data on your own servers — this creates PCI compliance obligations that are expensive and complex. Use Stripe Elements, Stripe Checkout, or the Stripe.js library, which tokenise card data client-side and send only a token to your server. Your server exchanges the token for a charge through the Stripe API — card data never touches your infrastructure.
  • Not enabling automatic tax collection before launch. Adding tax collection after transactions have occurred creates reconciliation complexity. Configure Stripe Tax (or at minimum, set the appropriate tax rates on products) before the first live transaction rather than retrofitting it later.
  • Going live without testing failed payments. Most development and testing focuses on the happy path (successful payment). Test the declined card, the 3DS required card, and the card that requires authentication — ensure the checkout handles errors gracefully with clear user messaging and a retry path.

Stripe’s transparency, documentation quality, and ecosystem depth explain why it has become the default payment infrastructure for startups and scale-ups. The no-code tools (Payment Links, the Customer Portal, the hosted Checkout) mean a non-technical founder can start accepting payments immediately, while the API depth means the same infrastructure scales to millions of transactions with full programmatic control. Getting the fundamentals right — test before live, webhooks for fulfilment, signature verification — produces a payment system that’s reliable rather than one that requires constant monitoring and manual intervention to catch failed fulfilments.

Stripe testing — the dev environment that prevents disasters

Stripe’s test mode is the single most important feature for anyone integrating it for the first time. Test mode lets you run the entire payment flow with simulated cards, refunds, subscription cycles, webhook events — without any real money moving and without any risk to your live account.

Toggle test mode in the top-right of the Stripe dashboard. Test API keys (starting with sk_test_ and pk_test_) are separate from live keys — never mix them. Test cards live at stripe.com/docs/testing — the most useful:

  • 4242 4242 4242 4242 — succeeds, no authentication required
  • 4000 0025 0000 3155 — requires 3D Secure authentication (test the SCA flow)
  • 4000 0000 0000 9995 — fails with insufficient funds
  • 4000 0000 0000 0341 — succeeds initially, then fails on first recurring charge (test subscription failure flow)

Never go live without testing failure paths. Most integration bugs happen on the unhappy path — declined cards, expired cards, webhook delays — and these are only catchable in test mode before launch.

How much does Stripe cost to use?

Stripe’s standard pricing is 2.9% + 30¢ per successful card charge in the US. There’s no monthly fee, no setup fee, and no charge for failed payments. International cards add 1.5%; cards requiring currency conversion add 1%. For high volume (typically over $80k/month), Stripe offers custom pricing. There are no hidden fees — the published rate is what you actually pay.

Stripe vs PayPal — which is better for accepting payments?

Different tools for different needs. Stripe is better for embedded checkout on your own site, subscription billing, and developer-friendly integration. PayPal is better for international buyers who already have PayPal accounts and for marketplaces where buyer protection is valued. Most serious online businesses offer both — Stripe as the primary processor for cards, PayPal as a secondary option for buyers who prefer it.

How long does Stripe take to deposit money into my bank account?

First payout takes 7-14 business days while Stripe verifies the account. After that, US accounts get 2-day rolling payouts by default — Monday’s sales arrive Wednesday. You can adjust to daily or weekly. Some industries (high-risk, certain professional services) have longer rolling reserves. The schedule is shown in your dashboard under Settings → Bank accounts and scheduling.

Do I need to be a registered business to use Stripe?

No — Stripe accepts sole traders/individuals in the US, UK, EU, and most countries. You provide your personal name, address, and SSN/SIN (or equivalent). For business accounts, you provide the registered business details. There’s no minimum revenue requirement and no requirement to be incorporated.

Can Stripe handle subscriptions and recurring billing?

Yes — Stripe Billing handles subscriptions natively. Create products and prices in the Billing dashboard, then attach them to customers. Stripe handles charging the saved payment method on schedule, retrying failed payments, sending dunning emails for cards that need updating, and calculating prorations for plan changes. For SaaS or subscription businesses, Stripe Billing replaces what you’d otherwise build with significant custom code. Our guide on How to Use Monday.com covers an adjacent issue.

Is Stripe safe to integrate with my website?

Yes, when used correctly. Stripe Elements and Checkout never expose card data to your server — the card information goes directly from the customer’s browser to Stripe and your code only handles tokens. This means your site doesn’t need PCI-DSS compliance (Stripe handles that). The risk is in webhook handling and API key security: keep your secret key in environment variables, never in client-side code or git repositories. See also How to Use HubSpot for a related case.

Nikolas Lamprou

Nikolas Lamprou (MSc; GCFR, SC-200, Security+) has been working with computers professionally since 2009 — starting with web development and e-commerce, and moving into cybersecurity over the years. Based in Greece, he brings over 15 years of real-world IT experience to SolveTechToday, where he writes about Windows fixes, software reviews, security tools, and AI applications. His goal is straightforward: cut through the noise and give readers clear, honest guidance on the tech decisions that matter.

Stay Ahead

Fix your next problem before it starts

Get the week's best Windows fixes, software picks, and security guides delivered straight to your inbox. No noise, just solutions.

Press ESC to close · Try "Windows 11" or "Chrome"