If you run a service business, you know how the story goes. A client books the job, you block out the calendar, maybe turn down other work, and then the final invoice sits unpaid for weeks. A deposit collected at booking changes that story completely.
The good news: you don’t need WooCommerce or a full ecommerce setup to take that deposit. With a Stripe account and the free WP Full Pay plugin, your WordPress site can collect a deposit when a client commits and the balance when the work is done. Freelancers, contractors, consultants, event venues: if you bill for services, this setup fits.
This guide walks through the whole workflow: connecting Stripe, building the deposit form, and three realistic ways to collect the balance later (including what the plugin won’t do for you). Quick disclosure: WP Full Pay is maintained by the same team behind Themeisle, so consider this an insider’s tour, quirks included.
Let’s get into it. 👇
⚖️ DISCLAIMER: WP Full Pay is a member of the Themeisle family of products. Everything below still works exactly as described, and the drawbacks get the same airtime as the highlights.
How the deposit workflow works (the honest version)
The model is simple. You create a one-time payment form set to a fixed amount: your deposit. The client pays it at booking through Stripe, and card details go straight to Stripe (PCI Level 1 certified), never touching your WordPress server. Every feature used in this guide works on the plugin’s free tier.
The balance is a separate step, and here’s the part most tutorials skip: there’s no built-in setting that charges a remaining balance automatically on a date you pick, and the plugin won’t chase a late payer for you. That part stays with you. There are three clean ways to handle it, covered in step 4, so “manual” doesn’t have to mean “messy.”
Step 1: Install WP Full Pay and connect Stripe
First, you’ll need a Stripe account. Signing up is free; Stripe makes its money from a standard processing fee on each transaction. If you want a deeper walkthrough of the Stripe side of things, there’s a dedicated guide to integrating Stripe with WordPress on the blog.
Then, in your WordPress dashboard:
- Go to Plugins → Add New and search for “WP Full Pay”.
- Install and activate it. You’ll spot a new Full Pay menu in the sidebar.
- Open Full Pay → Settings → Stripe account and run the connect flow. Do it for both Test and Live modes, since each connects separately.
Test mode is your friend here. It lets you run fake transactions with Stripe’s test cards, so you can break things safely before real money is involved. 👍
Step 2: Build the deposit form
From the Full Pay menu, create a new form and pick the one-time payment form type. This is the workhorse for deposits: the client pays a single amount, once, and there’s no cart or multi-page checkout in the way.
The key decision is the amount setting. You have three options (all available on the free tier):
- Preset amount: the client sees and pays exactly what you set. Say you quote $2,000 for a project and want $500 down: preset the form to $500, done. This is the cleanest option for deposits.
- Amount from a list: the client picks from options you define, handy if you sell packages with different deposit levels.
- Custom amount: the client types in the number. Skip this one for the deposit; it shines later, for the balance.

While you’re in the form builder, a few extras worth the two minutes they take:
- Give the form a clear display name like “Deposit: Kitchen remodel, Smith job” so transactions are easy to recognize in your dashboard months later.
- Add a custom field (you get up to 10 per form) for a project reference or invoice number.
- Turn on email notifications. The plugin emails the client a receipt and pings you on payment, and placeholder tokens let you drop form data into those emails.
- Optionally set a redirect to a thank-you page that restates your timeline and terms.

💡 PRO TIP: One form per service or project type, not one form per client. A “Website redesign deposit” form works for every future client; you can always spin up a new one when pricing changes.
Step 3: Publish the form on a page
Embedding is the easy part. Each form gets a shortcode you can paste into any page or post, and there’s also a dedicated Gutenberg block (“Form by WP Full Pay”) if you prefer clicking over copying. Most service businesses put the deposit form on a booking or “Work with me” page, right next to the terms.
You also get a say in how checkout looks: the form can sit embedded directly on the page, open in a popup modal when a button is clicked, or hand off to Stripe’s hosted Checkout page. Embedded is the smoothest for a single deposit.

Before you share the link with a real client, run a test payment in test mode, confirm the receipt email lands, then flip the form to live. 🚀
Step 4: Collect the balance when it’s due 💰
Here’s the honest scope again, because it matters: WP Full Pay has no auto-bill for a variable balance on a future date. Subscriptions renew on their own, but a one-off remaining balance is something you trigger. You have three solid ways to do that, all free-tier friendly:
Option A: a balance form with a custom amount. Create a second one-time form, this time with the amount set to custom, and label it “Pay your remaining balance.” When the milestone hits, email the client the link; they type in the balance from your final invoice and pay. It’s basically the invoice-settling pattern the plugin was built for, and it takes ten minutes to set up, once.
Option B: save the card for later. After collecting the deposit, use a separate Save Card form to create a Stripe customer and attach the client’s payment method. When the balance is due, you can create the charge or invoice in Stripe, although Stripe may ask the client to authenticate it. Powerful, but only use it with explicit, written consent in your terms, otherwise you’re in for an awkward chargeback conversation.
Option C: fixed scope? Split it with installments. If the project price and schedule are known up front, a subscription form can run an installment-type plan (say, 50% today and 50% in 30 days) that charges automatically on schedule. This is the closest thing to full automation, and the same plugin handles it. There’s a full walkthrough in the guide to accepting recurring payments in WordPress.
One more niche trick for venues and equipment rentals: one-time forms support authorize and capture, which places a temporary hold for the amount at booking and lets you capture it later. The hold typically expires after seven days, so use a Save Card form instead when you need a payment method on file for longer. Useful when you need a commitment on file more than you need cash today.
⚡ PRO TIP: Whichever option you pick, send the balance link or run the charge the same day the milestone lands. The best automation is a calendar reminder you actually obey.
How much should your deposit be?
There’s no law of nature here, only rules of thumb. Treat these as starting points, not gospel:
- Freelancers and contractors: 20% to 50% of the project price is the common range, with smaller jobs often justifying a bigger slice.
- Creative work with heavy upfront effort (design, writing, strategy): closer to 50%, since the sunk work starts immediately.
- Venues and rentals: often a fixed booking fee rather than a percentage, which keeps math simple for everyone.
The only rule that really matters: the deposit should cover your sunk costs if the client vanishes. Time blocked out, materials ordered, subcontractors booked. If the number stings a little when you say it out loud, it’s probably about right. 😅
And whatever you pick, state your terms in one sentence right next to the form: whether the deposit is refundable, when the balance is due, and what happens if the project cancels. Rules vary by location and industry, so get proper advice for your situation, but a clear sentence on the page prevents most disputes before they start.
The fee math: free vs paid
WP Full Pay’s pricing is unusual: every feature, including everything in this guide, is available on the free tier. The difference is a 5% application fee per transaction on unlicensed use, on top of Stripe’s own processing fees, which always apply. A paid license removes the 5% and adds priority one-to-one email support. Licenses start at $79.50 per year for a single site on the WP Full Pay pricing page, and there’s a refund policy if the license doesn’t work out.
The break-even math is friendly. The 5% fee on $1,600 of processed payments comes to about $80, roughly the cost of a license. So if deposits become a regular thing (and that’s the goal), the license pays for itself fast. Testing the waters with one or two clients? Stay free and upgrade when the volume says so. For a broader feature rundown, the WP Full Pay review goes deeper.
Wrapping up
Deposits don’t require a store, a cart, or an invoicing suite. The whole setup fits in an afternoon:
- Connect Stripe to WP Full Pay, in test mode first.
- Build a one-time form with a preset amount for the deposit.
- Embed it on your booking page next to your terms.
- Collect the balance with a custom-amount form, a saved card, or installments, whichever matches how you work.
Your future self, the one not chasing invoices at month end, says thanks. 🙌
How do you handle deposits in your business, and which balance-collection option fits your workflow? Let us know in the comments section below!
FREE GUIDE
4 Essential Steps to Speed Up Your WordPress Website
Follow the simple steps in our 4-part mini series and reduce your loading times by 50-80%. 🚀


















