Create a Stripe booking QR code generator for appointments people can book in one scan
This Stripe booking QR code generator lets customers scan a QR code, pick a date and time, and book an appointment from their phone. It is a dynamic QR code, so you can update your booking settings, price and page later without reprinting the QR code. You make it in a free QRplify account: the panel above opens one, with no card needed.
What this Stripe booking QR code does
When someone scans, they open your booking page: the next 31 days, starting today, and the time slots for the day they pick. They choose a slot, enter their name and email (mobile is optional), and tap the button. If you set a price, Stripe’s payment page opens next for that amount, and the customer pays on Stripe, into your own Stripe account.
- Calendar-style booking: a date strip plus time slots grouped by time of day.
- Time slot length: choose 30 Minutes, 01 Hour, or 02 Hours.
- Opening hours: without them, slots run from 9:00 to 22:00 every day, in Morning, Afternoon and Evening groups. Turn on Restrict Booking To Opening Hours to set your hours for each day; a day with no hours shows as Closed.
- Optional payment: set a price to take payment, or leave it empty to disable payment.
- Your bookings: each booking is emailed to you and listed under Appointments when you edit the code.
- Dynamic management: keep one printed QR code and update details later.
Get your Stripe keys from Stripe
To take payment, the booking page needs 2 keys from your Stripe account: a publishable key and a secret key. You need them only for paid bookings. Stripe keeps them on the API keys page of its Dashboard.
- Sign in to Stripe and open the API keys page.
- Start in a sandbox, where Stripe lets you test. Its keys start with
pk_test_andsk_test_, and Stripe says sandbox payments don’t move money. - Copy the publishable key. Stripe shows it by default, because it is safe to expose.
- Copy the secret key, or make a restricted key (the rules below say why). In a sandbox you can always see your keys. In live mode, Stripe lets you reveal a key it made for you with Reveal live key, but a key you create yourself shows only once, so save it then.
- Paste both into a test booking code in QRplify, make a booking and pay with one of Stripe’s test cards.
- When that works, switch the API keys page from sandbox mode to live mode, copy the live keys (
pk_live_andsk_live_), and put them in the code you print.
Stripe’s own payment link QR code, or this one?
Stripe makes a QR code too, for a payment link (the FAQ below has the steps). Use Stripe’s code if a payment is all you need. Use this one when people should pick a day and a time first:
| Stripe’s payment link QR code | This booking QR code | |
|---|---|---|
| What a scan opens | A Stripe-hosted payment page | Your booking page: a day, a time slot, then name and email |
| Payment | A set price, or an amount the customer chooses | Optional: a set price, paid on Stripe’s page |
| Where you make it | Payment Links in your Stripe Dashboard | A free QRplify account, with your Stripe keys |
| The code | A PNG to copy or download, which Stripe says doesn’t expire | A dynamic code: change the slots, price or page after printing, and count scans |
Stripe’s rules that matter for a booking page
These come from Stripe’s own documentation (US English).
- Test in a sandbox, not with a real card. Stripe says its services agreement prohibits testing in live mode with real payment details. Use sandbox keys and Stripe’s test cards.
- Keep sandbox and live apart. Each mode has its own keys, and Stripe says objects in one mode aren’t accessible to the other. So put in 2 keys from the same mode, and test with a separate code: the booking page saves the product and price it makes in your Stripe account and reuses them, so a code moved to keys from another mode or account can stop opening Stripe’s payment page.
- A secret key opens your whole account. Stripe says only publishable keys are safe to expose. A secret key has unrestricted permissions on all Stripe APIs, and Stripe calls sharing one with a third party “dangerous”, since it gives full control. Stripe recommends a restricted key instead: it starts with
rk_, can do only what you allow, and works in place of a secret key on a server. The booking page uses its key to create a product, a price and a Checkout Session, so a restricted key needs Write access to those. Try it in a sandbox first. - Rotate a key that leaks. Stripe says to rotate an exposed key straight away, even if you aren’t sure anyone saw it. Rotating makes a replacement key: put it in your booking code before the old one expires, since an expired key can no longer make API calls.
Stripe’s own pages: API keys, restricted API keys, testing and sharing a payment link.
Best use cases for booking by QR
- Salons and barbers: book services from mirrors, reception desks, and aftercare cards.
- Clinics and wellness: reduce front-desk calls by letting patients book from posters and receipts.
- Gyms and studios: book classes, intro sessions, or personal training from flyers and wall signage.
- Consultants and agencies: book discovery calls from business cards and proposals.
- Events and pop-ups: book time slots for demos, fittings, or limited sessions.
- Rentals: book equipment, rooms, or short appointments where time slots matter.
If you do not need a time-slot picker and only want requests or a waitlist, a form can be a better fit. Use Lead Generation Form for that flow.
How to create it using the generator above
- Open a free account: select Create a free account in the panel above (no card needed), then create a Booking code in your account.
- Time Slot Length: choose one option: 30 Minutes, 01 Hour, or 02 Hours.
- Price: enter a price if you want to take payment. Leave it empty to disable payment.
- Restrict Booking To Opening Hours: choose Enabled to set your Opening Hours for each day, or Disabled for slots from 9:00 to 22:00 every day.
- Stripe Publisher Key: paste your Stripe publishable key (it starts with
pk_). - Stripe Secret Key: paste your Stripe secret key, or a restricted key as Stripe recommends.
- Currency: choose the currency for payment (default is USD).
- Generate the QR code: scan-test and complete a full booking on your phone.
- Customize design: style the booking page and the QR code, then scan-test again.
- Download: export as PNG or SVG.
Tip: keep your Stripe Secret Key private. Do not paste it into public documents or share it with anyone who should not have access. Stripe also says not to send keys by email, chat or other unencrypted channels.
Customize the booking landing page after creation
After you create the booking QR code, you can style the page so it looks trustworthy and matches your brand.
- Banner Image: upload a banner image (recommended size 700×400).
- Favicon Enabled: toggle Enabled or Disabled.
- Meta Attributes: toggle Enabled or Disabled.
- QR Code Language: set the language (shown as English).
- Logo: upload your logo.
- Page Title: set the headline shown on the booking page.
- Text: add a short description so visitors know what they are booking and how long it takes.
- Button text: set the booking button’s label. It reads “Book now” until you change it (example: “Confirm booking”).
- Button Background Color and Button Text Color: set button colors for readability.
Advanced settings are available if you need them: Desktop Customization and Share Overlay.
If you want a simple “message to book” path instead of a time-slot flow, use WhatsApp so customers can start a chat in one scan.
Setup tips to prevent bad scans and booking errors
- Pick the right time slot length: use 30 Minutes for quick services, 01 Hour for standard appointments, and 02 Hours for long sessions.
- Set your opening hours: without them, people can book any day from 9:00 to 22:00.
- Decide if you need payment: leave Price empty for free bookings, or set a price when you want payment through Stripe.
- Test your Stripe keys: make a separate test code with your sandbox keys, complete a booking and pay with a Stripe test card, then put your live keys in the code you print.
- Check each new booking: the page does not hide a slot once it is booked, so 2 people can pick the same time.
- Keep page text short: visitors should see dates and time slots without scrolling too far.
- Use a clear action label: set the button text to match your flow, like “Book now” or “Confirm”.
- Scan-test on 2 devices: test on an iPhone and an Android before you print.
- Use SVG for print: it stays sharp at any size.
- Do not change the short link after printing: changing it can break printed QR codes unless replaced.
- Use allowed scans limits only for limited campaigns: if the limit is reached, the QR code can stop working.
Dynamic QR codes can be tracked. Typical analytics include daily scans, hour of day, operating systems, device brands, browsers, language, countries, and cities. Date range filters include last 15 days, last 30 days, last 90 days, and a custom range, with exports as CSV and PNG (dynamic-only).
If your goal is a one-time fixed-date event instead of bookings across days, use Event so people can add it to their calendar.
Examples and templates
Use this table to choose slot length, payment setup, and placement based on how people book in real life.
| Scenario | Time Slot Length | Price | Suggested Page Title and Text | Best placement |
|---|---|---|---|---|
| Salon quick services | 30 Minutes |
Optional |
Book your appointment |
Reception counter |
| Consultation calls | 01 Hour |
Leave empty for free |
Book a call |
Business card |
| Paid session booking | 01 Hour |
Set a price |
Book and pay |
Poster |
| Long appointment blocks | 02 Hours |
Set a price |
Reserve your time |
Booking desk |
| Waitlist alternative | Use a form instead |
Not needed |
Join the waitlist |
Website banner |
If you need phone-first bookings, add a second QR next to your booking QR that starts a call. Use Call for that option.
FAQs
Can you create a QR code on Stripe?
Yes, for a payment link. In the Stripe Dashboard, open Payment Links, choose a link or create one, then click QR code to copy or download a PNG. Stripe says that code doesn’t expire, and if you deactivate the link, the code opens an expiration page. It opens a payment page; for people to book a time before they pay, use a booking code from a free QRplify account.
How can I create a payment link to receive money?
In Stripe, open the Payment Links page in the Dashboard and click +New. Select a product, or click +Add a new product, fill in its details and click Add product. Then click Create link. For tips or donations, Stripe also offers links where customers choose what to pay. Stripe says you can share a link as many times as you like, in emails, texts and social posts.
How do I pay with a booking QR code?
Point your phone camera at the code and open the link. On the booking page, pick a day and a time, enter your name and email, and tap the button. If the booking has a price, you pay on Stripe’s payment page, which opens after you book.
How does a Stripe booking QR code generator work?
In a free QRplify account, you choose a time slot length, optionally set a price and opening hours, connect Stripe keys, choose currency, then generate a QR code that opens a booking page with time slots.
What time slot lengths are available?
You can choose 30 Minutes, 01 Hour, or 02 Hours.
What happens if I leave the price empty?
Leaving the price empty disables payment. Customers can book without paying through Stripe, and you do not need Stripe keys.
Can I change my Stripe booking QR code generator settings after printing?
Yes. This is a dynamic QR code, so you can update settings later without changing the printed QR code. Keep its Stripe keys from the same Stripe account and mode, though: the code reuses the product and price it made in that account.
Which currencies are supported?
You can select a currency for payments: the Currency field offers 12, with USD as the default. The price is charged in the currency you pick.
Can I track scans and exports?
Yes, for dynamic QR codes. You can track scans and export analytics as CSV and PNG.
Can I add a share button on the booking page?
Yes. There is a Share Overlay toggle that can be enabled or disabled.
Should I download PNG or SVG?
SVG for print, since it stays sharp at any size, and PNG for screens.
Troubleshooting
- Payment is not working: recheck Stripe Publisher Key, Stripe Secret Key, currency selection, and whether a price is set. If a paid booking confirms but Stripe’s payment page never opens, check that both keys come from the same Stripe account and mode, and that the secret key has not expired. If you changed the keys on a code that already took a paid booking, make a new code with the new keys.
- Payment should be disabled but still appears: confirm the Price field is empty and save changes, then scan-test again.
- Bookings feel too short or too long: change Time Slot Length and scan-test the new slot layout.
- People do not understand what they are booking: update Page Title and Text to include what the appointment is for and how long it takes.
- QR scans inconsistently: increase contrast, reduce logo size, keep clear space around the QR, and export SVG for print (or a higher-resolution PNG).
- Printed codes stopped working: check if an allowed scans limit was reached and avoid changing the short link after printing.
If you want to collect donations instead of bookings, use Stripe Donation to run a donation flow connected to Stripe.
Use the generator above to publish your Stripe booking QR code generator
Open a free account from the panel above, select your slot length and opening hours, decide if you want payment, connect Stripe, then scan-test a full booking on an iPhone and an Android. For print, export SVG so the QR stays sharp on posters and counter signs.





















