Skip to content

Let Customers Pay a Deposit or the Full Price per Event in Gravity Forms

Let people pick several events and pay either the full price or a deposit for each one, with no formulas, no code and no extra add-ons. Includes the finished form in the Vault.

Chris Eggleston 4 min read

A reader running youth basketball tournaments asked this one: teams pick as many tournament dates as they like at $165 each, and they should be able to pay the full amount now or a $50 deposit per tournament and the rest later. It’s a common request for any multi-event registration: camps, classes, race series, workshops.

Most people reach for a calculation. Count the dates, multiply by $165 or $50, done. In Gravity Forms that falls apart quickly, because a checkbox field in a formula gives you its choice text, not how many boxes are ticked.

There’s a cleaner way that needs no formulas, no code and no extra add-ons, works with Stripe, Square and PayPal, and can’t be tricked into charging the wrong amount.

How It Works

The form has two copies of the tournament list: one priced at $165 per tournament and one at $50. Conditional logic shows only the list that matches the visitor’s payment choice.

That’s enough, because Gravity Forms leaves conditionally hidden product fields out of the total. It does this on the server when the form is submitted, not just on the page, so the payment add-on only ever charges for the list that was showing. Prices are checked on the server too: a submitted price that doesn’t match the form is rejected.

Want the finished form? Download it free at the end of this post. Or build it yourself:

Build It Step by Step

1. Add the Payment Choice

Add a Radio Buttons field, label it How would you like to pay? and make it required. Give it two choices:

  • Full price: $165 per tournament
  • Deposit: $50 per tournament now, the rest later

Turn on show values and set the values to Full and Deposit. Short values make the conditional logic in the next steps easier to read, and you can reword the labels later without breaking anything.

2. Add the Full-Price Product and List

  1. Add a Product field. Set Field Type to Hidden, name it Tournament entries and set the price to $0.00. It’s only there to hold the options.
  2. Add an Option field. Set Field Type to Checkboxes, label it Tournaments, choose Tournament entries as its product, and make it required.
  3. Add one choice per tournament (for example March 7: Phoenix) and give each a price of $165.00.
  4. On both fields, turn on Conditional Logic: Show this field if How would you like to pay? is Full.

3. Duplicate Them for the Deposit

  1. Duplicate the product and rename the copy Tournament deposits. Change its conditional logic to Deposit.
  2. Duplicate the Tournaments option field. Point the copy at Tournament deposits, change every price to $50.00, and change its conditional logic to Deposit.
  3. Update the copy’s description so deposit payers know what’s coming: $50 deposit per tournament now. The remaining $115 per tournament is due later.

Keep both lists labeled Tournaments. Visitors only ever see one, so to them it’s a single list whose prices change with their payment choice.

The form editor showing the payment choice, both hidden products, and the two Tournaments lists priced at $165 and $50
In the editor you see both lists. Visitors only ever see one.

4. Add the Total

Add a Total field and label it Due today. It updates as visitors tick tournaments or switch between full price and deposit.

The live form with Deposit selected, two tournaments ticked at $50 each and Due today showing $100.00
Deposit selected with two tournaments ticked: $100.00 due today.

5. Tell Deposit Payers What’s Left

In Settings → Confirmations, use the conditional shortcode so only deposit payers see the balance note:

Thanks, {Name (First):1.3}! {Team name:3} is registered.

You paid {Due today:9} today.

[gravityforms action="conditional" merge_tag="{How would you like to pay?:4:value}" condition="is" value="Deposit"]You chose the deposit, so the remaining $115 per tournament is due later. We will email you an invoice before your first tournament.[/gravityforms]

Your field IDs may differ; use the merge tag picker to insert your own. Add the same line to the user notification so it’s in their inbox too.

6. Connect Your Payment Add-On

Create a Stripe, Square or PayPal feed as usual and set the payment amount to Form Total. Nothing else is needed: the hidden list never reaches the total, so the feed charges $165 or $50 per tournament depending on the choice.

Test These Before You Go Live

These are the cases I ran on the Vault form:

SubmissionDue today
Full price, 2 tournaments$330
Deposit, 2 tournaments$100
Deposit, 4 tournaments$200
Ticked full-price dates, then switched to Deposit and picked 1$50 (the hidden ticks are ignored)
No tournaments tickedBlocked: the list is required
A tampered $1 priceRejected by Gravity Forms

Collecting the Balance

The deposit entry already records which tournaments each team picked, so collecting the rest is straightforward. The simplest option is a balance form: duplicate this form, remove the payment choice and the deposit list, and change the remaining list’s prices to $115.00. Email deposit payers a link to it before the first tournament.

To find who still owes, filter the registration form’s entries where How would you like to pay? is Deposit.

Keeping It Tidy

  • Change both lists together. When you add, rename or remove a tournament, do it in both Tournaments fields so the choices match.
  • Different prices per event work too. Give each choice its own price in each list, such as $165 and $50 for one tournament and $200 and $75 for another.
  • Selections don’t carry over. If someone ticks dates and then switches payment choice, they’ll need to tick them again in the other list. Putting the payment choice first, as above, avoids that.

Download the Form Template

It’s free. Get the registration form from this tutorial, ready to import.

This field is for validation purposes and should be left unchanged.
Name*(Required)

If you still need help, use the chat or leave a comment below and we’ll get back to you.

Comments

Ask a question or leave a comment

Your email is never shown. For help with a specific form, share what you expected and what happened instead.