WooCommerce deposits for venue and event bookings

WooCommerce deposits for venues: plugin or custom Stripe flow? How to collect the balance, handle refunds and track bookings in HubSpot and GA4.

Mohit Goyal12 min read
WooCommerce deposits for venue and event bookings

WooCommerce can take deposits for venue and event bookings in two ways: a deposits plugin, which costs between $43 and $219 a year for a single site, or a custom Stripe flow. Plugins split checkout into a deposit now and a balance order later. The official WooCommerce Deposits extension doesn't store cards or charge the remainder automatically, though, so someone on your team ends up chasing the balance. If you want the balance taken on a set date and refunds that follow your cancellation policy, I'd usually go custom, especially for weddings and private hire.

Below I compare the plugins with a custom build, then cover the bits that tend to go wrong for venues: collecting the balance, refunds, handing enquiries to HubSpot and tracking in GA4.

How do WooCommerce deposits work for venue bookings?

The customer pays a fixed amount or a percentage at WooCommerce checkout instead of the full price, then pays the rest later as a second payment. WooCommerce records the full booking, marks it as partly paid, and creates the balance payment either straight away or nearer the due date.

For venues and events, I see the same rules come up on almost every brief:

  • Per-person deposits. A fixed amount multiplied by the number of guests. The official extension can multiply a fixed deposit by the number of people when used with WooCommerce Bookings.
  • A balance due date tied to the event, not to the order date. "Balance due 30 days before" is normal for private hire.
  • Full payment for late bookings. If someone books a week out, there's no point taking a deposit.
  • Mixed baskets. A ticket paid in full plus a dinner package on deposit.

Check each of these against any plugin before you buy. Most handle per-person deposits. The other three are where plugins start to differ, and where custom work usually begins.

Which WooCommerce deposit plugins are there and what do they cost?

The plugins venue owners usually end up comparing are Acowebs, Plugin Republic, PH Deposits, Flexi Deposits, YITH and the official WooCommerce Deposits extension. They run from about $43 to $219 a year. Prices below are for one site, per year, at the time of writing.

PluginPrice (1 site)Worth knowing
Deposits & Partial Payments (Acowebs)Free version, premium $43/yearCheapest way to test the idea
Deposits and Part Payments (Plugin Republic)$69/yearSecond-cheapest premium option on this list
PH Deposits (PluginHive)$99/yearBalance orders created automatically or manually, with a payment link in reminder emails; daily, weekly or monthly payment plans
Flexi Deposits (Tyche Softwares)$119 for a 1-year planFixed, percentage or order-total deposits, plus payment plans
YITH Deposits / Down Payments$129.99/yearDifferent deposit rules per product
WooCommerce Deposits (official)$219/yearBalance is a scheduled order the customer pays, with no automatic charge; works with WooCommerce Bookings; refunds are manual

A couple of notes on that table. The $43 Acowebs price comes from a third-party roundup, not from Acowebs' own site. The $69, $99 and $129.99 prices come from a comparison published by PluginHive, and PluginHive sells one of these plugins, so confirm each price on the vendor's own page. For the plugins where I haven't listed how the balance is collected, ask the vendor whether it sends a payment link or charges a saved card with your gateway. I'd also read the official extension's recent reviews before paying the highest price on the list.

WooCommerce deposit plugins: price per year, single site
  • Acowebs Pro43$
  • Plugin Republic69$
  • PH Deposits99$
  • Flexi Deposits119$
  • YITH130.0$
  • WooCommerce Deposits219$

The licence is the cheap bit. If your events are bookable products, you may need a bookings plugin on top. And every plugin you add is another thing to update, test and keep working with your theme and checkout.

Do WooCommerce deposit plugins charge the balance automatically?

Usually not. Most deposit plugins, the official extension included, email the customer a balance order to pay. Charging a saved card automatically needs a plugin and a payment gateway that both support it, or custom work. Sort this out first, because it decides how much admin lands on your team. A balance can be collected in one of three ways:

  1. A payment link. The plugin creates a balance order and emails the customer, who pays it like any other order. That's how the official extension works: each future payment is a scheduled order the customer pays when it is due.
  2. A saved card charged on the due date. The card is saved with Stripe when the deposit is paid, and the balance is charged without the customer being there. The plugin and your gateway both have to support this.
  3. Offline. Bank transfer or card payment at the venue, recorded by staff.

Payment links are fine for a ticketed event with a small balance. For a wedding or private hire with a balance in the thousands, your team will spend real time chasing unpaid links, and you'll need a rule for what happens if the customer never pays.

A card hold is not a deposit

Stripe normally lets you hold funds on a card for up to seven days before you capture them. Extended authorisations allow longer holds, but only on some eligible accounts and card types. For events booked weeks or months ahead, take a real deposit and save the card instead.

That seven-day limit is in Stripe's own help pages, and some card brands have shorter hold windows. Stripe does offer extended authorisations on some eligible accounts and card types, but even those don't cover a wedding booked months out.

When is a custom Stripe deposit flow better than a plugin?

When the balance has to come in without staff chasing it, and your rules don't fit a plugin's settings screen. In practice it looks like this:

Rendering diagram…

Stripe supports this out of the box. You can save a payment method and charge it later, including from a Checkout session. The custom part is the logic around it:

  • when the balance is due
  • how much the deposit is for each event type
  • what happens when a charge fails
  • keeping WooCommerce, Stripe and your CRM in sync through webhooks (automatic messages Stripe sends to your site when a payment changes)

Some charges made while the customer isn't present will get declined, or the bank will ask the customer to confirm the payment. So the fallback step in that diagram isn't a nice-to-have. You need it.

This is the same kind of work as the custom plugins I write for clients. For Whitfield Service Station I built a custom WooCommerce delivery radius plugin and automatic receipt printing, because nothing off the shelf matched how the business actually ran. Deposits are a similar call. If a plugin fights your process, a small plugin built around your rules tends to cost less over time than living with workarounds.

You might not need WooCommerce at all. If you sell a handful of event packages rather than a catalogue, a WordPress booking page with Stripe and a form can take a deposit with no store behind it. I walk through that setup in how to take paid event bookings on WordPress with Stripe.

NeedDeposit pluginCustom Stripe flow in WooCommerceStripe booking page, no store
Upfront costLicence from $43 to $219 a year, plus setupDeveloper time to build and testDeveloper time, usually less
Balance collectionMostly payment linksSaved card charged on the due date, with a payment link as backupPayment link or saved card
Custom rules (per event, late bookings)Limited to the plugin's settingsWhatever you specifyWhatever you specify
RefundsManual, from the orderCan follow your policy, with staff approvalManual or rule-based
Best forTicketed events, small balancesWeddings, private hire, large balancesA few packages, sales that start with an enquiry

What does a venue site need before adding deposits?

For Ravens Ait, a venue on an island in the Thames, I built the site on WordPress and Bricks Builder with 20+ event pages, Stripe bookings and HubSpot forms. It wasn't a deposits project. I mention it because it already has what a deposit flow sits on top of: event pages that each sell something specific, Stripe taking the money, and HubSpot catching enquiries from people who aren't ready to pay yet. Adding deposits to a site like that is mostly a question of where the balance and refund logic should live. You don't need a rebuild.

How do refunds and cancellations work with deposits?

When you refund a deposit through Stripe, the customer gets their money back but Stripe keeps its original processing fee. So every refunded deposit costs you that fee. On a standard UK Stripe account, card fees are 1.5% + 20p for standard UK cards and 2.5% + 20p for EU cards, and Stripe doesn't return the processing fees from the original payment on a refund. For US accounts, Paycove worked out that Stripe keeps $36.55 when you refund a $1,250 card payment.

1.5% + 20p

Stripe fee, standard UK cards

2.5% + 20p

Stripe fee, EU cards

7 days

Standard Stripe card hold

Get these settled before launch:

  • Write the policy into checkout. Is the deposit refundable, and until when? Show the policy next to the pay button and save the customer's agreement with the order. Get a solicitor to check the wording. I build the payment flow, not the legal terms.
  • Decide who presses refund. With the official WooCommerce Deposits extension, refunds are handled manually from the order. A custom flow can work out what's owed under your policy, with a person still approving it.
  • Refund the right payment. The deposit and the balance are separate Stripe charges. A partial refund on the wrong one is an easy mistake and a messy one to undo.
  • Cancel the balance too. If a booking is cancelled before the balance date, the scheduled charge or balance order has to be cancelled as well. Test cancellations as carefully as you test normal bookings.

How should deposit enquiries hand off to HubSpot?

Start each booking as a HubSpot enquiry and deal, and have every Stripe or WooCommerce payment update that same deal. Plenty of venue bookings don't begin at checkout. A couple planning a wedding, or a company planning a party, sends an enquiry, talks to your events team, and only then pays a deposit to hold the date. So the deposit flow should start from HubSpot, not run off to the side of it:

  1. 1

    Enquiry form

    A HubSpot form on the event page creates the contact and a deal, with the event type and date.

  2. 2

    Quote and hold

    Your team confirms the date is free and sends a deposit link for that booking.

  3. 3

    Deposit paid

    Stripe or WooCommerce notifies HubSpot through an integration or webhook you set up (it doesn't happen by default), which moves the deal to a 'deposit paid' stage and records the amount.

  4. 4

    Balance and event

    The balance payment, or a failed charge, updates the same deal, so your sales team sees the full history.

Use the customer's email address to link records at every step, so HubSpot matches each payment to the right contact. For the form side of this, I cover the setup in how to add HubSpot forms to WordPress so no lead is lost.

How should you track deposits and balances in GA4?

Send one GA4 purchase event when the deposit is paid, with the order ID as the transaction ID, and record the balance from your server or in your CRM. Before you set up any tracking, decide what counts as revenue. If GA4 records the deposit as the purchase, your reports will undersell what the bookings are worth. If it records the full price, GA4 revenue won't match Stripe.

Here's what I'd do:

  • Fire one purchase event when the deposit is paid, using the order ID as the transaction ID. Then a customer reloading the thank-you page doesn't get counted twice.
  • Use the deposit as the event value. If you want to report on full booking value, add it as a custom parameter.
  • Don't send a browser event for the balance. It's usually charged when the customer isn't on the site anyway, so send it from your server with the GA4 Measurement Protocol or leave it to your CRM and Stripe reports.
  • Track the enquiry form as its own conversion. For most venues, the enquiry is the real lead.

If you're starting the tracking from scratch, my guide on setting up GA4 and Google Tag Manager for landing pages covers the groundwork.

What should you ask a developer before building deposits?

Before you agree a deposit build, find out how the balance gets collected, how refunds work, and how payments reach HubSpot and GA4. These five questions cover it:

  • Will the balance be charged automatically or sent as a link? What happens if the charge fails?
  • Where are the deposit rules set, and can my team change them without a developer?
  • How are refunds calculated, and who approves them?
  • How do payments reach HubSpot, and how will you stop GA4 counting bookings twice?
  • How will you test cancellations, failed cards and late bookings before launch?

Good answers will tell you fairly quickly whether a plugin setup is enough or you need a small custom build.

If you run a venue or events business and want the balance collected without chasing anyone, have a look at my booking and event landing pages with Stripe service. If you sell through a store, see WooCommerce stores and online ordering. Then book a 20-minute call and bring your deposit and cancellation policy with you. I'll tell you straight whether a plugin will do or you need a custom flow.

Frequently asked

Can WooCommerce take a deposit and charge the balance later?+

Yes. WooCommerce can take a deposit with a deposits plugin or a custom Stripe flow. Most plugins create a balance order the customer pays from an emailed link. Charging a saved card automatically needs a plugin and gateway that both support it, or custom work.

How much does a WooCommerce deposits plugin cost per year?+

Single-site licences for WooCommerce deposit plugins run from about $43 a year for the premium Acowebs plugin to $219 a year for the official WooCommerce Deposits extension. Prices change, so check each vendor's page.

Can I use a Stripe card hold instead of a deposit for an event booking?+

Only if the event is a few days away. Standard Stripe card holds last up to seven days, and extended authorisations only apply to some eligible accounts and card types, so for events booked further ahead a venue needs to take a deposit and save the card for the balance.

Does Stripe refund its fees if I refund a customer's deposit?+

No. Stripe keeps the processing fees from the original payment when you refund it, so a venue's cancellation policy should allow for that cost.

How do I stop GA4 counting a deposit booking twice?+

Send one GA4 purchase event when the deposit is paid, using the WooCommerce order ID as the transaction ID. Record the later balance payment on the server or in your CRM, not as a second browser event.

Do I need WooCommerce to take deposits for events?+

Not always. A venue selling a few event packages rather than a full catalogue can take deposits with a WordPress booking page using Stripe and a HubSpot form, without a WooCommerce store behind it.

Mohit Goyal

Written by Mohit Goyal

Senior Web Developer in Gurugram, India. 100+ fast, SEO-friendly sites shipped in 4+ years with Next.js, React and WordPress, including the procol.ai rebuild. Send me your next project.

Keep reading

Eventbrite fees vs your own Stripe booking page (UK)

Eventbrite fees cost UK organisers 6.95% + 59p per ticket. Stripe costs 1.5% + 20p. See when your own booking page pays for itself.

11 min read

WooCommerce Apple Pay not showing? How to fix it

WooCommerce Apple Pay not showing? Fix Stripe domain registration, express checkout settings, device rules, caching and CSP blocks.

10 min read

Let's build

Have a site that needs to be fast, rank and convert?

Open to Work. Usually replies within a day.