How to Accept Booking Deposits with Contact Form 7 and Stripe
A complete step-by-step guide to setting up automatic deposit collection on your WordPress booking form — no coding needed.
If you use Contact Form 7 for bookings on your WordPress site, you can add automatic Stripe deposit collection without rebuilding your form or writing a single line of code. The NoShow Deposit Payments plugin sits between CF7 and Stripe — when a customer submits your booking form, they’re taken straight to a Stripe payment page to pay the deposit.
This guide walks you through the full setup from start to finish.
What You Need Before You Start
Step-by-Step Setup
Install NoShow Deposit Payments
Go to WordPress Admin → Plugins → Add New. Search for NoShow Deposit Payments, click Install Now, then Activate.
After activation, you’ll see a new NoShow Payments menu in your WordPress sidebar.
Get Your Stripe Secret Key
Log in to your Stripe Dashboard and go to Developers → API Keys.
Copy your Secret Key. It looks like this:
- Test mode: sk_test_51ABC…
- Live mode: sk_live_51ABC…
Enter the Secret Key in Plugin Settings
In WordPress, go to NoShow Payments → Settings. Scroll to the Stripe Keys section and paste your secret key into the Stripe Secret Key field. Save settings.
Set Up the Stripe Webhook
The plugin needs a webhook so Stripe can send it a confirmation when a payment is completed. On the settings page, you’ll see a Webhook URL — copy it.
In Stripe: Developers → Webhooks → Add Endpoint. Paste your URL, select the event checkout.session.completed, and save.
Stripe will show you a Signing Secret — copy it and paste it into the Webhook Secret field back in the plugin settings.
Choose Your CF7 Booking Form
In the Settings page, find the Select CF7 Form dropdown and pick the form you use for bookings. This tells the plugin which form should trigger the deposit payment on submission.
Map Your Form Fields
The plugin needs to know which fields in your form hold the meeting date/time, service name, and customer name. In the Form Field Mapping section, enter the field names exactly as they appear in your CF7 form tags.
| Setting | Description | Example |
|---|---|---|
| Meeting DateTime Field | Single field with date and time combined | meeting_datetime |
| Meeting Date Field | Date field (if separate from time) | meeting_date |
| Meeting Time Field | Time field (if separate from date) | meeting_time |
| Service Field | The dropdown/select where customer picks a service | service_price |
| Customer Name Field | The customer’s name field | your-name |
Set Your Deposit Percentage & Currency
In the Deposit Settings section:
- Deposit Percentage — what % of the total price to charge upfront (e.g. 20 for 20%)
- Refund Window — how many hours before the meeting the customer can still cancel for a refund (e.g. 24)
- Currency — select your currency (GBP, USD, EUR, etc.)
Add Your Service Prices
If your services have different prices, enter them in the Service Pricing section — one per line in the format Service Name | Price:
Hair Cut | 35 Hair Cut + Blow Dry | 55 Colour & Cut | 90 Full Treatment | 130
The plugin matches the service the customer selected in the form and calculates the correct deposit automatically.
Save Settings and Test
Click Save Settings. Now open your booking form on the front end and submit a test booking. You should be redirected to a Stripe Checkout page.
Use Stripe’s test card number to complete a test payment:
Card number: 4242 4242 4242 4242 Expiry: Any future date (e.g. 12/26) CVC: Any 3 digits
After payment, check your NoShow Payments → Payments dashboard — you should see the test booking recorded there.
What Happens After a Customer Books
Once live, here’s the complete experience from your customer’s point of view:
CF7 form
shows deposit
email arrives
your dashboard
The deposit is credited directly to your Stripe account. You collect the remaining balance yourself on the day and mark it as collected in the dashboard.
Common Setup Questions
My webhook isn’t receiving events — what do I check?
Make sure your site is live and accessible (not under maintenance or behind a login). Also confirm the webhook URL in Stripe exactly matches the one shown in your plugin settings. Check the Stripe Dashboard → Developers → Webhooks → your endpoint → Recent Deliveries tab for error details.
The deposit amount shows as £0 — why?
This usually means the service field name in settings doesn’t match the actual field name in your CF7 form, or the service price isn’t entered in the pricing table. Double-check both match exactly (they’re case-sensitive).
Do I need to change my CF7 form?
No — the plugin works with your existing form. The only thing you might want to add is the service/price dropdown if you don’t have one already, so the plugin can calculate the correct deposit per service.
Install the Plugin and Start Collecting Deposits Today
Free to download. Works with your existing Contact Form 7 form and Stripe account. Setup takes about 15 minutes.
Download Free Plugin →