How to Pass Payment Transaction Fees to the Customer

This article was originally posted on June 13, 2016.

(Disclaimer: Any links with an * is an affiliate link. Although prices are the same, Mr. Technique, Inc. earns a commission on any purchases made using the link. Read more in our privacy policy)

Gravity Forms - Passing Paypal/Stripe Transaction Fees Back to the Customer

Both Stripe and Paypal process payments for a 2.9% + $.30 fee, and they take their fee off the top. That’s only $3.20 off of a $100 transaction, but what if you process payments of $7500 or more? Paypal or Stripe fees would then be over $200. I don’t mind the fees, but some of our clients do. Once before, a client asked me to make their online payment form pass their Paypal fee back to the customer to pay. Gravity Forms* is one of my preferred WordPress form plugins, and this particular client’s website uses Gravity Forms with the Paypal Add-On to process their online payments. The techniques that I’m going to show you would work with the Gravity Forms Stripe Add-On as well. We’re assuming that you have the Stripe or Paypal Gravity Form Add-On activated and configured to process payments. Showing you how to set up these payment processors with Gravity Forms is a topic for another blog post. You should know how to add pricing fields as well. Let’s get started. Add another product field and select Calculation as the field type as seen in the screenshot below:

Gravity Forms WordPress Form Plugin Calculation Field Type Selected

It’s not checked in the above screenshot, but check the Disable quantity field. Once you select Calculation, you’ll see a formula field pop up. Select your previous product field as your merge tag. For this website, Payment Amount is the name of the previous product field.

Gravity Forms WordPress Plugin Merge Tag Selected

The merge tag will show up in the Formula text area.

Gravity Forms Formula Merge Tag in Text Area

Here’s where the magic happens. You can’t use {Payment Amount:5} * .029 + .3 to account for the transaction fees because all of the transaction fees still won’t be passed to the customer. If someone makes a $100 payment on your website, and you have the formula set to the above, the customer will be charged $103.20 ($100 + $2.90 + $.30). Stripe or Paypal will take their fees off of $103.20 (not $100). 2.9% multiplied by $103.20 plus $.30 is $3.29. Subtract $3.29 from $103.20, and you are left with $99.91 which is still less than $100 (the original amount). In this form’s case, to account for the transaction fees, this formula needs to be used:

({Payment Amount:5} + .3) / (1 – .029)

The 5 right next to Payment Amount is the form ID, so that number will be different for you. Now if someone makes a payment for $100 on your website, the customer will be charged $103.30. 2.9% multiplied by $103.30 plus $.30 is $3.30. Subtract $3.30 from $103.30, and you’re left with $100.

Make Adding the Transaction Fees Optional

In the comments section, someone asked me if this was possible. She had found the answer in Joe Winter’s Gravity Forms blog post before I had a chance to answer, but I’m posting an answer of my own anyway. To make the transaction fee optional, you would add a checkbox field preferably before the Amount field.

Gravity Forms Checkbox Settings

Next, you’ll go to the Advanced tab of the Payment Amount field with the merge tag. Check Enable Conditional Logic. Select the transaction fee question with the checkbox that you had just created. This question only has one answer, so you can’t select another answer. Performing this step, will have the payment amount field with the transaction fees show only if the visitors checks the checkbox. Your settings should look like the screenshot below:

Gravity Forms Conditional Setting to Display Payment Field with Transaction Fee

Update your form and go to Gravity Forms’ Settings -> Paypal (or Stripe). You’ll need to add another feed so the correct payment amount can be sent to Paypal or Stripe. One feed would be used only if the visitor checked the box to cover the transaction fees. The other feed wouldn’t have any conditional logic, so it’s used if the visitor doesn’t check the box to cover the transaction fees.

Gravity Forms Paypal Feeds

See it in Action

Here’s a dummy form that I created which adds the amount needed to cover the Paypal or Stripe processing fees.

If you found this blog post useful or if you have any questions, please comment below.


  1. Caitlyn on January 23, 2017 at 9:46 am

    Is there a way to make adding the fee optional?

  2. Caitlyn on January 23, 2017 at 10:02 am

  3. Jarrod Skeggs on March 2, 2017 at 9:43 am

    A quick tip on this… I recommend using a Single Line Text Field for the “Invoice Amount” or “Payment Amount” instead of a product field. The reason is that Gravity Forms will calculate the total of all product fields and pass that on to Stripe or Paypal. So if a customer enters $50.00 in the Payment Amount field and then the amount with processing fees shows $51.80, then the customer will be charged $101.80. Using the Single Line Text field type will still enable customer to enter amount of payment and also allows the “Calculation” field to do it’s job. Thusly, customer is only charged the amount in the “Amount (with processing fees)” field.

  4. Tom Nguyen on March 6, 2017 at 12:49 pm

    Thanks for addressing that, Caitlyn. I’ll update this blog post to show how to make the fees optional.

  5. Tom Nguyen on March 6, 2017 at 1:02 pm

    Jarrod, thanks for commenting. On this form, the customer is only charged the $51.80 in Paypal if they if they enter $50.00 in the Amount product field. I had set up Paypal (on test mode) with this dummy form, so visitors can see.

  6. Lew Harrison on May 4, 2017 at 3:56 pm

    I also tried this in a test mode and I have the problem of when I submit offering to pay the transaction fee, it doubles when it goes into paypal. I also tried Jarrod’s suggestion and it only seemed to add in only the paypal cost, not the donation plus paypal cost. Any suggestions?

  7. Tom Nguyen on May 13, 2017 at 3:08 am

    Thanks for commenting, Lew. I would need to see your form to figure out the problem. Next week, I’ll offer the sample form as a download, so you can see the settings on your own site.

  8. Er on July 13, 2017 at 7:18 pm

    Great tutorial.

    I have a question, my client use Stripe + Gravity, figuring out calculation isn’t hard, but if Stripe been given amount+ fee wouldn’t it take it’s precentage from total?

    so $30 cost sent to stripe will cost $30 + 2.6% If I add 2.6% in the form
    making it $30.52 and pass it on to Stripe wouldn’t Stripe charge $30.52 + 2.6% or am I missing something

    Thanks in a dvance

  9. Er on July 13, 2017 at 8:33 pm

    Please ignore my previous comment

  10. Tom Nguyen on July 17, 2017 at 2:03 pm

    No problem, Er. Were you able to get it figured out?

  11. Mel on July 23, 2017 at 4:24 am

    Hi, thanks for the tutorial, it has been very helpful!

    I have a problem in that I wish to display the total field, however, it displays the calculation total regardless of whether the user has opted to pay the transaction fee. Is there a way around this?

  12. Tom Nguyen on July 25, 2017 at 4:59 pm

    Mel, thanks for reading my blog post, and I’m glad that it has helped. I’m not sure if I’m understanding you. You don’t want to display the calculation total if the user chooses not to cover the transaction fee? On my sample form above, a field showing the total amount doesn’t show if the user doesn’t check the cover fees box.

  13. Mel on July 29, 2017 at 2:43 am

    Hi, thanks for getting back to me. It seems to have fixed itself. I’m not sure why. There may have been some conflict elsewhere…

  14. Mark Hannon on September 2, 2017 at 5:53 pm

    For anyone who finds the formula above isn’t validating, replace the minus sign “-” with a standard hyphen. The example above uses an em dash and the validator didn’t recognize it as an operator.

  15. Tom Nguyen on September 4, 2017 at 8:57 am

    Thanks for chiming in, Mark. I looked at my source code and it actually is a standard hyphen.

  16. Mark Hannon on September 4, 2017 at 9:50 am

    Interesting, for some reason the minus sign converted to an em dash when I pasted the formula in. It may not happen to everyone but if someone else can’t get the formula to validate, it’s an easy fix and this might save them some frustration.

  17. […] to build the registration process in Gravity Forms and use Stripe for the payment processing. With a little trick we learned from Mr. Technique, we added an optional checkbox that allows attendees to “cover” the credit card […]

  18. Cam Cecchini on November 30, 2018 at 3:53 pm

    Thanks for the tutorial! Quick question, would this work using the Gravity Forms extension for WooCommerce? I’m selling blanket kits for my NPO and would like to implement this for the transaction fees associated with purchases (donations). Thanks in advance!

  19. Tom Nguyen on December 3, 2018 at 2:22 pm


    I’ve never used the Gravity Forms extension for WooCommerce. I contacted Gravity Forms support about it, and they told they are not familiar enough with the extension to give an answer. They recommended that you contact WooCommerce about it.

  20. Josh Harwell on January 21, 2019 at 3:48 pm

    Thanks for this insightful tutorial! Is there a way to make the form display the formula for different products totaled together.

    So If I’m ordering 2 adult meals at $5 a piece, plus 2 kid’s meals at $4 a piece it will take the total calculation of that and then add the payment processing to the whole total and not just the individual items?

  21. Tom Nguyen on January 29, 2019 at 8:31 pm

    I’m not sure if I understand you, Josh. The fee is added to the total amount. If there were multiple items selected for purchase, I believe you could use the Total field to add up the prices of items selected for purchase. Then, you could add the transaction fee to the total.

  22. Lori Newman on January 30, 2019 at 10:35 am

    Great tutorial Tom, bookmarking this post for sure 🙂

  23. Tom Nguyen on January 30, 2019 at 8:20 pm

    Glad you found it helpful, Lori!

  24. PTA on February 5, 2019 at 12:17 am

    Great article – my question is that the “Total” pricing field cannot be used in calculations. I basically want the customer to select multiple items that should all be summed up to a “Total” but then if they select that they want to pay with Credit Card, I’d like to add the PayPal fee. If you try to use the Total field in the calculation it ends up creating a circular reference because the Total field automatically sums up all the Product Fields on a page (and in your example the Amount w/fee) is a Product Field. Just wondering if there are any other options.

  25. Tom on April 28, 2019 at 3:14 pm

    I have the same question (or similar) to PTA above.
    I want to add the 2.9% fee to the paypal option, but not for my “Bill me” and “Pay by check” options.
    This for a B2B transaction, so we are only passing on the fee to another business.

  26. Laritza on May 22, 2019 at 5:48 am

    How can I use the Total field? Payment Amount does not work for me, it only calculates half of the fee. Gravity forms says Payment Amount:# field does not exist.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.