How to Create a Booking App With Deposits That Cut No-Shows

Alexander Rocket11 min readOct 17, 2026

A booking app that cuts no-shows asks for money when the client books: a deposit charged right away, or a card saved with the client’s consent so you can charge a fee if they don’t turn up. With Stripe, you build this from three parts: a payment at booking, a saved card for later fees, and payouts to the provider through Stripe Connect.

A first version with us costs $5,000 to $15,000 and takes 2 to 4 weeks. Traza, an Australian marketplace for tattoo artists, got its artist booking app from us on a budget under $20,000, built on its existing web product, and it went live on both app stores in early 2026 (Traza case study).

Step 1: pick your no-show rule before you write code

The money rule shapes the screens, the database and the payment code. Decide it first. Here are the four common options and how each maps to Stripe.

RuleHow it worksGood forWatch out for
Deposit charged at bookingCharge part of the price now with a normal paymentLong or custom sessions booked weeks aheadYou need a clear refund policy for cancellations
Hold, then captureAuthorize the card now and capture later (manual capture)Bookings within the next few daysOnline card holds usually expire after 7 days
Saved card and no-show feeSave the card now, charge it later only if they don’t showLow-price services where you’d rather not ask for money up frontThe charge can fail, and you need the client’s explicit consent
Full prepaymentCharge the full price at bookingClasses, events, fixed-price sessionsRefunds for every change of plans
No-show rules and how to build them with Stripe

Charging a deposit

This is the simplest option, and the money is collected up front. The client pays part of the price when they book, and the booking only becomes “scheduled” once the payment succeeds. When the session happens, the client pays the rest in person or in the app.

Holding money without charging it

Stripe can put a hold on a card and capture the money later. You create the payment with manual capture, and the amount is reserved on the client’s card. You can capture all of it, capture less (Stripe releases the rest), or cancel the hold (Stripe, place a hold on a payment method).

The limit is time. Stripe says an online card authorization is usually valid for 7 days, and for some Visa payments it’s shorter. If you don’t capture before it expires, the money is released and the payment is cancelled. So holds suit bookings in the next few days, not a session six weeks out. Stripe also warns that some card statements don’t show the difference between a hold and a charge, which can confuse clients. Say “hold” clearly on the booking screen.

Saving a card for a no-show fee

For bookings far ahead, you can save the client’s card without charging it, using Stripe’s Setup Intents, and charge it later if they miss the appointment. Two rules from Stripe’s docs matter here (Stripe, save a payment method):

  • You must explain in your terms how you’ll use the saved card and collect explicit consent, for example with a checkbox.
  • When you charge later with the client out of the app, a bank may still ask for authentication. If it does, the payment fails with an “authentication required” code, and you have to bring the client back to confirm it.

That second point is why a saved card is weaker than a deposit. A deposit is already paid. A no-show fee is a charge you might not collect.

Step 2: you don’t need Apple’s in-app purchase for bookings

This rule matters for your margins. Apple’s guideline 3.1.3(e) says that if your app sells physical goods or services used outside the app, you must use payment methods other than in-app purchase, such as Apple Pay or card entry (Apple App Review Guidelines). Google Play has the same rule for physical services (Google Play Payments policy).

A haircut, a tattoo session or a yoga class is a service used outside the app. So deposits go through Stripe (or another card processor), and Apple and Google don’t take a commission on them.

The exception is anything that unlocks features inside the app. If you sell providers a paid plan that adds features to the app itself, Apple’s in-app purchase rules (guideline 3.1.1) apply to that plan.

Step 3: pay the provider with Stripe Connect

If your app is a marketplace, with many providers and one platform, the money has to reach the right person. Stripe Connect handles this. With a destination charge, the client pays on your platform, Stripe moves the money to the provider’s connected account, and you keep a platform fee you set per payment (Stripe, destination charges).

Know who pays for what. With destination charges, your platform’s balance covers Stripe’s fees, refunds and chargebacks. Stripe says this charge type suits marketplaces like Airbnb and Lyft. Build your refund rules with that in mind: when a client cancels in time and gets the deposit back, the refund is debited from your platform balance, so plan how you recover the provider’s share.

If you run a single studio or one business, you don’t need Connect. A normal Stripe account is enough.

Step 4: map booking states to money

The booking flow and the money flow have to agree. Traza’s artist app is a good model. Bookings move through requests, scheduled, on hold, completed and cancelled, with filters. Each booking shows only the actions that fit its stage, and the artist can create and edit sessions, take deposits, and mark a session complete, no-show or cancelled (Traza case study).

Here’s how those states can connect to payments in your own app:

StateWhat happenedMoney
RequestClient asked for a slotNothing charged yet, or a hold placed
ScheduledProvider acceptedDeposit charged, or the card saved with consent
On holdWaiting on the client or the providerNothing moves
CompletedSession doneBalance charged; the provider’s share paid out
No-showClient didn’t comeDeposit kept, or the no-show fee charged
CancelledSomeone cancelledRefund or keep, based on your cancellation window
Booking states and what happens to the money

Write your cancellation window into the booking screen, in plain words, before the client pays. For example, “Cancel 48 hours before and you get your deposit back.” Store which version of the policy each client accepted.

Step 5: build the first version, one side at a time

A booking app has two sides: the client who books and the provider who runs the calendar. You don’t have to launch both at once.

Traza started with the artist side. Artists were already taking real bookings on Traza’s website, but tattoo artists spend the day on their feet, between clients. They needed to answer requests, plan sessions, take deposits and reply to messages from their phone. The artist app covers bookings by stage, chat inside each booking, client notes, push notifications for new requests and messages, Instagram or email login, and a profile preview. A second phase for the client side was scoped and started afterwards, reusing the artist-side logic.

Scope will try to grow. On Traza, the custom calendar grew bigger than planned, so we cut it to a first version and moved push notifications and booking creation forward, because artists needed those more. Expect to make trades like that every week.

A first version usually has:

  • For clients: pick a provider and a service, see open slots, pay the deposit, get a confirmation and reminders, message the provider.
  • For providers: incoming requests, a calendar, sessions and deposits, client notes, push notifications.
  • For you: an admin panel for providers, bookings, refunds and disputes.

React Native or Flutter for a booking app?

Both build an iPhone and an Android app from one codebase, and we’ve shipped booking and marketplace apps in both. Traza’s app is React Native. LEV, a dog owners’ map and marketplace, is Flutter. For a booking app, two things tip the choice:

  • Payments SDK. Stripe ships an official React Native SDK. For Flutter, Stripe lists the flutter_stripe package as a community SDK, which Stripe doesn’t support or review (Stripe SDKs, Stripe community SDKs). It’s a dependency to weigh.
  • Your team. React Native uses JavaScript or TypeScript and React. If your web team writes React, they can read and help maintain the app. React Native’s own docs recommend starting new apps with the Expo framework (React Native docs). Flutter uses Dart and draws its own interface, which gives you the same look on every phone.

We go deeper on this choice in adding a mobile app to a web marketplace.

What a booking app costs

VersionWhat’s in itTimeCost
First version (MVP)One side or both, one type of service, deposits, chat, admin panel2-4 weeks$5,000-15,000
Traza artist appArtist side on an existing API and designs: 9 epics, about 22 user stories, 2 React Native developersFixed launch date, metUnder $20,000
After launchNew features in weekly sprintsOngoingAbout $3,000-4,500 a week
What a booking app costs with us

Running costs come on top: Stripe’s fee on every payment (Stripe pricing), $99 a year for Apple’s developer program and a one-time $25 for Google Play, text-message reminders if you send them, and servers.

Traza stayed on budget even when plans changed. Mid-project, the client added two more epics, and they still fit inside the agreed budget. And when one developer dropped out, we covered the cost and moved the work to the other developer, so the budget and the launch date stayed the same.

Launch checklist

  1. Write the cancellation and no-show policy, and show it before payment.
  2. Test every booking state with Stripe’s test cards, including failed and “authentication required” payments.
  3. Set up Stripe webhooks, so a payment that succeeds or fails updates the booking even if the app is closed.
  4. Send reminders before each session.
  5. Send the app to App Store review early. Apple reviews 90% of submissions within 48 hours (Apple App Review), but a rejection adds rounds. We sent Traza’s app to review early instead of polishing it until the last day, and it was approved on both stores.

If you’re building a booking marketplace with many providers, our marketplace app development page shows how we work and what it costs. Our guide on what a marketplace app costs covers the two-sided version in more detail.

FAQ

How much does it cost to create a booking app?

A first version with bookings, deposits, chat and an admin panel costs $5,000 to $15,000 with us and takes 2 to 4 weeks. Traza’s artist app, built on an existing API and designs, came in under $20,000. After launch, new features cost about $3,000 to $4,500 a week.

How do booking apps take deposits?

They charge part of the price when the client books, usually through a card processor like Stripe. The booking is confirmed only after the payment succeeds. The rest is paid at the session, and a cancellation policy decides when the deposit is refunded.

Can Stripe hold a deposit and charge it later?

Yes. Create the payment with manual capture, and Stripe reserves the amount on the card. You can capture all of it, part of it or none. Online card holds are usually valid for 7 days, so holds suit bookings in the next few days.

Do I have to use Apple’s in-app purchase for booking payments?

No. Apple’s guideline 3.1.3(e) says services used outside the app, like a haircut or a tattoo session, must be paid with other methods, such as Apple Pay or card entry. Google Play has the same rule. In-app purchase applies only to features unlocked inside the app.

How do you charge a no-show fee?

Save the client’s card at booking with their explicit consent, then charge it if they don’t show. The bank may ask for authentication, in which case the client has to confirm the payment. A deposit paid at booking is more reliable, because the money is already collected.

Should a booking app be built with React Native or Flutter?

Both work. React Native fits teams that already write React and has an official Stripe SDK. Flutter draws its own interface and uses a community Stripe package. Traza’s booking app is React Native; our Flutter apps include LEV and Kosmo.

See what your booking app would cost

Describe your booking app in a few sentences. Our AI estimate turns it into a scope, a budget range and a timeline in about four minutes.

Estimate my booking app

The best of our blog, bi-weekly

Carefully curated content for resourceful Devs, CTOs, and PMs. No spam.

Talk to us!

Send us a message and we'll get in touch with you as soon as we can.