Payments
Taking money without ever touching a card number.
You never touch a card number. You describe the order, send the customer to the provider's page, and wait to be told it worked — by the provider's server, not the browser.
The browser can close mid-payment. The webhook is the only confirmation that can't be faked or missed, because it comes server-to-server after the charge succeeds.
Visual walkthrough
Follow the money, not the button
Your app
Provider
Your server
browser redirect
webhook
01Your server prices the order
02Customer lands on the provider's page
03Card charged by the provider
04Provider tells your server, server to server
05You mark it paid and grant access
You never touch a card number. You describe the order and wait to be told it worked.
Words you will hear
- Checkout session
- A one-off payment page the provider generates for this exact order, then destroys.
- Webhook
- The provider's server calling your server to confirm the payment succeeded — after the money moves.
Interactive demo
Checkout, end to end
Press Buy. Watch the thin grey redirect and the heavy green webhook — they are not the same promise.
What makes this work
The pieces underneath
Try it
20 minBuild a single-product checkout in test mode. Complete a purchase, then immediately close the browser tab — and confirm the order still shows as paid in your app.
- Compute prices on the server, never trust an amount sent from the page.
- Test the webhook path, not just the happy redirect.
Free account
Save your progress and earn your certificate
Keep reading as long as you like — everything here stays open. Add your email and we will track your completion, sync it across devices, and issue your Vibe Coding micro-credential when you finish.
Just enter your email. We will send you a link — no password needed.