# 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)

Stripe and PayPal they take their fees off the top when processing payments. In the US, these are fees for Stripe and PayPal in the US:

**Stripe Processing Fee:**2.9% + $.30 per transaction**PayPal Processing Fee:**3.49% + $.49 per transaction

That’s only $3.20 (using Stripe) or $3.98 (using PayPal) off of a $100 transaction, but what if you process payments of $7500 or more? The processing 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 used 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:

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.

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

Here’s where the magic happens. If Stripe is the payment processor, 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) if Stripe is processing the payment. Stripe 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.

**PayPal’s fees are now different from Stripe’s fees.** If you’re in the US, this is the formula that needs to be used:

**({Payment Amount:5} + .49) / (1 – .0349)**

### 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.

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:

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.

### See it in Action

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

Here’s a dummy form that I created (with product quantity fields) which adds the amount needed to cover the Stripe processing fees.

And here is the formula that I used:

**({Running Shoes (Price):18.2}{Running Shoes (Quantity):18.3}+{Shirt (Price):19.2}{Shirt (Quantity):19.3}+ .3) / (1 – .029)**

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

Is there a way to make adding the fee optional?

Found answer: https://joe.ventures/blog/2015/pass-along-credit-card-service-fees-in-gravity-forms/

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.

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

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.

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?

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.

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

Please ignore my previous comment

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

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?

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.

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…

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.

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

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.

[…] 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 […]

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!

Cam,

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.

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?

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

Totalfield to add up the prices of items selected for purchase. Then, you could add the transaction fee to the total.Great tutorial Tom, bookmarking this post for sure 🙂

Glad you found it helpful, Lori!

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.

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.

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.

Thanks!

This doesn’t seem to work with the latest version of Gravity Forms (ver 2.5.15). Is there an updated version of this calculation please?

Even when I click on “validate formula” for the calculation field it says “There appears to be a problem with the formula.” It just returns a zero amount on the front end.

Anthony, we actually have a newer version of Gravity Forms newer than yours (2.15.16). The sample form in my blog post still works. Here’s a screenshot of a successful calculation validation of the dummy form on my blog post.

Hi. Does it work when you have fields with quantities. My form is here:

https://windingstairfarm.com/the-farm/tour/

I thought I’d be able to take the merged field for the first product and apply the formula. Put that all in brackets. Then a PLUS sign. Then take the merge field for the second field and apply the formula. I’ve looked at my formulas to see if I have any syntax errors, and I’m not seeing what I could be doing wrong, unless it just won’t work with this kind of form.

Thanks in Advance!

Amanda, it does work with quantities. I created a dummy form and tested. I had this for the merge fields for 2 products with quantity fields:

({Running Shoes (Price):18.2}*{Running Shoes (Quantity):18.3}+{Shirt (Price):19.2}*{Shirt (Quantity):19.3}+ .3) / (1 – .029)

I’ll update this blog post shortly with a 2nd dummy form and explanation.

When I use this formula, the amount listed on the entries for that record and what Stipe says the service fees do not match. As you can imagine – accounting is throwing a fit. Maybe there is a simpler way to do this? This is what my goal is. We are receiving donations. We are NOT asking the donatee to cover the cost of the transaction fees however, accounting wants the cost of the transaction listed on the record. Our first donation was for 200.00. The service fee with your formula shows 6.28 as the fee on the entry. The record on Stripe is 6.10 for a discrepancy of 18 cents. What on earth am I doing wrong? HA!

Kiley, I’m not sure what’s wrong. $200 + $6.28 = $206.28. Since you’re using Stripe, that should be the correct amount since 206.28 * .029 + .30 = $6.28.

Thank you for this!

For PayPal I needed to subtract the amount as well…

({Amount:1} + .49) / (1 – .0349) – {Amount:1}

For a $10 donation I was expecting $10.84, but the result is $10.87Even the formula was adding the $0.49 fee and then calculating the percentage it should be $10.856101 – any ideas?