How Event Espresso Handles Ticket Fees, Refunds and Policies

two people at a table talking

Before choosing an event registration solution for your business, you need to dig deeper to see how it handles ticket fees, refunds, and policies. Here’s why:

  • You have to be clear from the get-go with attendees about refunds and your refund policy if your business offers refunds.
  • The policies of some event registration systems or services can define (and affect) your refund policies.
  • The payment gateways you decide to offer will also have their own policies. For example, some payment gateway providers might not refund their transaction fees.

With this in mind, in this article, we’ll explain how Event Espresso handles ticket fees, refunds, and policies, and share some actionable tips and guidelines along the way.

Ticket Fees

If you organize paid events i.e. events you sell tickets for, then you need to evaluate your event registration solution or service’s ticket fee structure. The ticket fee structure can affect your ticket sales in terms of how much profit your business generates.

Ask yourself:

Does the event registration solution or service charge a per-ticket cost? Or do they have a tiered ticket fee structure? 

Once you’ve determined the ticket fee structure, you should also use it as a formula to understand how much you’ll be charged for a certain number of ticket sales. Here are a few real-world examples:

Let’s say you’re selling a $25 General Admission ticket and, on average, you make 200 sales.

  • On Eventbrite’s Essentials plan (2% + $0.79 for each paid ticket you sell), you would earn $4,616 excluding payment processing. Keep in mind that Eventbrite fees are higher on the  Professional plan (3.5% + $1.59) which means you would only earn $4,380.
  • With Event Espresso, you would only have to pay the payment processing fees for the payment gateway you choose to use. In other words, you would earn $5,000 from ticket sales.
  • Using Event Smart, you’re able to sell paid tickets for a flat $10 fee per month. So, you would essentially be earning $4,990 from ticket sales excluding payment processing.

For more details, check out our article on How to Set the Right Ticket Price and Maximize Revenue for Your Event.


As an event organizer, you need to be particularly careful with your event registration tool’s policies regarding refunds.

This is because the tool or plugin’s refund policy strongly influences your refund policy. For example, if the event registration solution you use doesn’t offer refunds, you can’t offer refunds to your attendees.

Similarly, whenever the event registration solution or service makes modifications to their refund policy, you may have to change your refund policy, as well. If you fail to do so then you’ll have no choice but to absorb the fees which could be financially damaging to your company.

When it comes to offering refunds, you’ll need to consider whether to offer attendees partial refunds or full refunds. Generally speaking, the payment gateway you decide to use will charge you some sort of a transaction fee. So, for most event businesses, it’s a good idea to offer attendees a partial refund (such as 75%) of the ticket’s sale value.

PayPal, for example, states on their website that it doesn’t charge a fee to issue refunds, however, the fees you originally paid as the seller are not returned to you. In addition to this, the default refund period is 180 days from the transaction date.

And, according to Stripe, there are no fees to refund a charge, but the fees from the original charge aren’t returned.

It’s also important to clearly lay out the conditions for a refund. For example, attendees only qualify for a refund up to three days before the day of the event. And, finally, you should clarify in your refund policy how refunds will be made.

Once you’ve decided all of this, consider creating a refund policy to publish on your event site and linking to it from your registration confirmation emails. It’s also a good idea to make it as easy as possible for attendees to request a refund. For instance, you can add a Request a refund button to your event page.  To learn more about processing refunds in Event Espresso view this resource: How to apply a refund in Event Espresso.


Event registration solutions and services typically have policies of their own that can potentially affect your event business.

For example, the payout policy – which determines when you’ll get paid for the tickets you sold – may affect when staff and vendors get paid. And, if you organize events regularly, it might affect when you’re able to start planning your next event.

Note: event registrations services tend to change their policies from time to time so it’s important to stay up-to-date.

With Eventbrite, for example, payouts begin processing 4-5 days after the event ends. What this means is that you won’t receive any money for the tickets sold until after the event. On the flip side, with Event Espresso and Event Smart, you receive funds in your account as soon as an attendee purchases a ticket. In other words, Event Espresso doesn’t hold on to your funds.

When using an event registration service, it’s also important to keep community guidelines in mind. Using hosted solutions (like Eventbrite) means you’ll likely have to follow the platform’s rules and regulations. Since you don’t actually own your account, the service providers can suspend your account if you don’t follow the rules.

However, with event registration and ticketing plugin, like Event Espresso, you have full control over your site’s content and you’re not bound by any rules or regulations. You own all of the content you publish to your event website.


As an event organizer, it’s important to thoroughly evaluate the ticket fees, refunds, and policies your event registration solution or service may hold you to. This way, you’ll be in a better position to make your own policies while making sure your event business remains profitable.

Ready to start selling tickets for your event? Get Event Espresso today!

Related Articles

Share a Reply or Comment

Your email address will not be published.

Need help with Event Espresso? Create a support post in our support forums

Event Espresso
[gravityform id=116 title=false description=false]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_116' ><form method='post' enctype='multipart/form-data' id='gform_116' action='/2020/04/how-event-espresso-handles-ticket-fees-refunds-and-policies/' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_116' class='gform_fields top_label form_sublabel_below description_below'><li id="field_116_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_below gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >What is your first name?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_116_5'> <span id='input_116_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_116_5_3' value='' aria-required='true' placeholder='First name' /> <label for='input_116_5_3' class='hidden_sub_label screen-reader-text'>First name</label> </span> </div></li><li id="field_116_1" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_1' >What is your email address so we can follow up with you?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_116_1' type='text' value='' class='medium' placeholder='' aria-required="true" aria-invalid="false" /> </div></li><li id="field_116_2" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_2' >Tell us about your concerns below<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_2' id='input_116_2' class='textarea medium' placeholder='What kind of events are you planning?' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id="field_116_6" class="gfield field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >GDPR Agreement</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_116_6'><li class='gchoice gchoice_116_6_1'> <input class='gfield-choice-input' name='input_6.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_116_6_1' /> <label for='choice_116_6_1' id='label_116_6_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_116_3" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_3' id='input_116_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></li><li id="field_116_4" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_4' id='input_116_4' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></li><li id="field_116_7" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_7' >Comments</label><div class='ginput_container'><input name='input_7' id='input_116_7' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_116_7'>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_116' class='gform_button button' value='Send my message' onclick='if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} jQuery("#gform_116").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_116' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='116' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_116' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_116' id='gform_target_page_number_116' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_116' id='gform_source_page_number_116' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="74"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>