Home Forums Event Espresso Premium Deposit and balance owing

Deposit and balance owing

Posted: December 6, 2018 at 8:49 pm

Integral Zen, Inc

December 6, 2018 at 8:49 pm

We are offering a retreat and we want to have an early bird full payment option, an early bird deposit option, an early bird balance owing option, a regular full payment option, a regular deposit option and a regular balance owing option. we would like all these payable online, because we have an international clientele. I checked your support section and looked at Lorenzo’s workaround: I don’t want to create two or three events for one retreat as I think that would be confusing for people. I think Lorenzo’s second option might work, but his explanation is not totally clear. Can you suggest a way I can do this? It is very important to our group to have this functionality. Thanks!


  • Support Staff

December 7, 2018 at 8:41 am

Hi Roberta,

Just to note, EE doesn’t officially support deposit payments currently and the above workaround Lorenzo created was a method to allow for those in certain use cases, however, both of those methods require the user registers onto the event twice (once for deposit, another for the remainder) which can cause problems if you only have a single datetime in a single event.

After the above workarounds were created the Attendee Mover Add-on was released which allows you to ‘move’ registrations onto different tickets (be that in the same event or another) which may work better for you, although it does require you manually move the registration from the ‘deposit’ ticket onto the ‘full payment’ ticket (the payment from the deposit will apply to the new total).

So before going into this, may I ask if your events have high numbers of registrations were moving single registrations each time (there is no automated or batch moving) would become a problem for you?

Integral Zen, Inc

December 7, 2018 at 1:02 pm

Hi Tony, Thank you for your response.
The Attendee Mover Add-on seems like it will make this work for us. We probably wouldn’t have more than 20 registrants making a deposit so manually moving them is not a problem. We can move them as they pay the balance owing.


  • Support Staff

December 10, 2018 at 7:27 am

Ok, so the way I would set this up is using 4 tickets:

Early Bird Deposit
Early Bird Full Price
Regular Deposit
Regular Full Price

Your early bird tickets set the sell from dates from now (or a date in the past) and the sell until the date you want to switch over to ‘regular;. Then your regular ‘sell from’ dates match that date. Like this –

My early bird tickets end on Feb 1st at 1am and thats when my regular ticket then goes on sale.

That will look something like this on the front end –

You can hide those ‘upcoming’ tickets with a little CSS:

.tkt-slctr-tbl .ticket-pending {
    display: none;

Add that to Appearance -> Customize -> Additional CSS and you’ll then just see the early bird tickets.

So now, when a user registers onto the deposit ticket and pays they’ll show as sold here –

You’ll need to move them onto the full price ticket using the attendee mover add-on. To do that view the registrations for the event (Event Espresso -> Events -> {hover over the event} -> Registrations).

Find the registration for the deposit –
(Note you can see the ticket name and the amount paid in that list)

Click on the icon.

Select the same event they are currently on within step 1 (type the event name and the Event ID will also show so you can confirm it’s the correct event if you have multiple with the same name) –

On step 2 select the correct ticket (in this case early bird full) –
(The ticket with the tick is there current ticket)

On step 3 you get to confirm your changes –

Note the trigger notifications setting, if theat is set to yes, when you click next the user receives an email that their original registration has been cancelled and another stating their new registration is pending payment, with a link to pay the remaining balance.

Is that what you are looking for?

The support post ‘Deposit and balance owing’ is closed to new replies.

Have a question about this support post? Create a new support post in our support forums and include a link to this existing support post so we can help you.

Support forum for Event Espresso 3 and Event Espresso 4.
Documentation for EE3 and EE4
Documentation for Event Espresso 3 Documentation for Event Espresso 4

Status: closed

Updated by  Tony 1 year, 10 months ago ago

Topic Tags


This topic is: not resolved
Do NOT follow this link or you will be banned from the site!
[gravityform id=80 title=false description=false ajax=false]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_80' ><form method='post' enctype='multipart/form-data' id='gform_80' action='/topic/deposit-and-balance-owing/'> <div class='gform_body'><ul id='gform_fields_80' class='gform_fields top_label form_sublabel_below description_below'><li id='field_80_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_1' >First name<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_80_1' type='text' value='' class='medium' aria-required="true" aria-invalid="false" /></div></li><li id='field_80_2' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_2' >Email address<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_80_2' type='email' value='' class='medium' aria-required="true" aria-invalid="false" /> </div></li><li id='field_80_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' >GDPR Agreement<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_80_3'><li class='gchoice_80_3_1'> <input name='input_3.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_80_3_1' /> <label for='choice_80_3_1' id='label_80_3_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id='field_80_4' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_4' >Comments</label><div class='ginput_container'><input name='input_4' id='input_80_4' type='text' value='' autocomplete='off'/></div><div class='gfield_description' id='gfield_description_80_4'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_80' class='gform_button button' value='Download Now' onclick='if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} jQuery("#gform_80").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_80' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='80' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_80' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_80' id='gform_target_page_number_80' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_80' id='gform_source_page_number_80' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 80) {} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [80, 1]) } ); </script>