How to Post Stripe Fees from WooCommerce to Xero
What is Stripe?
Stripe is one of the newer generation of payment merchants that have challenged the traditional players (like Worldpay and Sagepay now Opayo) with apps that are very easy to integrate and use but with quite high fees. Others in this space are Square, Ayden and Revolut. They sit between you who they call “the merchant” and the large card processors Visa, Mastercard etc. to process the payments and transfer the funds into your bank account. They also deal with refunds, chargebacks and disputes. Stripe has grown rapidly to become the leader due to its dedicated WooCommerce payment gateway plugin, ease-of-use and great customer support unlike the traditional processors that provide none of these. For many small online businesses Stripe is now the default option for taking payments and for this reason we have added bespoke fee handling feature on top of the standard gateway, but in time will roll it out into other gateways.
How Does Xeroom Post an Order That is Paid Using Stripe?
The regular payment flow is as follows. The first step to use Stripe in WooCommerce is to install the Stripe plugin and configure it with your Stripe account – this is very easy and there are plenty of detailed guides on how to do it.
Moving to Xeroom, each payment gateway that exists in WooCommerce has its own account mapping to its respective bank account in Xero. This ensures segregation of payments for ease of reconciliation and also enables the bank account to be used as a clearing account too so that no payments are missed. The additional tick box allows for some gateways to operate automatically such as instant ones like card payments or PayPal and for others to not, such as bank transfer where the payment might not occur until some time later but the invoice is needed in Xero to trigger the payment as in the case of B2B payments on account.
When a customer places an order at checkout he/she will have a choice of payment methods and if they select Stripe then the order gets created, payment is made and then the order is sent by Xeroom to Xero where it creates a new invoice. The Orders dashboard is updated with the Xero status and notes are made against the order itself regarding the posting of both the order, Stripe fee, payment and payment reference (Notes 1-4) .
The order then automatically appears in Xero adding STRIPE to the reference along with the last 8 digits of the payment reference (used by Xero to auto match and reconcile the bank account later):
The payment has been posted to the Stripe bank account.
What Stripe Fees Need Posting?
Now to the handling of the Stripe fees themselves. There are two fees to consider when using Stripe. The first is a surcharge that you can add to your customer’s order, i.e. a revenue to you to cover the cost of the Stripe fee and the second is the fee that Stripe charges you for the transaction i.e. a cost to you. These show up on an order as Fee 1 and Fee 2 below.
Stripe Fee 1 – Customer Surcharge
This is a revenue surcharge that you can add on to you order for customers who pay with Stripe to cover the costs to you made by Stripe. I suggest only using this if you can provide the customer with a no-surcharge alternative eg bank transfer so that they don’t feel forced to use it but instead see it as an option. In the UK it is also not allowed to charge more than the cost of using a card. This fee is set by you and you can use the Woocommerce Booster plugin which has a module to set this – Gateways Fees and Discounts Module Options – and these are my settings. This fee will show up in Xero as an extra line on the invoice. PayPal and other surcharges that you wish to make are handled in exactly the same way.
This is how the fee appears on the customer sales invoice in Xero:
Stripe Fee 2 – Merchant Account Cost
There are the transaction fees that you get charged by Stripe for their provision of the merchant account. On the customer checkout Stripe feeds the actual fee back to WooCommerce and it is displayed at the foot of the order as shown in the example above. Stripe used to charge a straight 2.9% + 30c but this now varies by country and card type. For regular credit cards via a payment merchant account there is a full schedule of fees. This fee needs to be picked up from WooCommerce and posted into a defined Xero expense account. The following describes exactly how we can do that.
Posting Stripe Fees Detail to Xero
We have had a lot of requests for this feature which will help even if you have the automated Stripe feed into Xero. Xeroom will take the fee that is shown in WooCommerce for each order and post it into a Stripe Fees Overhead Account that you can create in Xero. This occurs during the posting of the order which is either on checkout, manually or on a schedule. It adds about 1 second to the processing time on checkout.
If you use the Stripe automatic feed into Xero then this will help the reconciliations by matching up the transactions based on the date, name and reference. If you don’t then this provides additional detail on the fees charged by Stripe on each transaction taken from the WooCommerce order. It will allow you to use the Stripe Bank account as a clearing account to check that you have the correct pay-outs for all your orders and that the total fees are correct.
Define a Stripe Fees Expense Account in Xero
When a fee is posted into Xero it creates a purchase bill for it (in the name of Stripe supplier that you create as a contact) on each transaction and posts the amount into the Stripe Fees account.
Define a Stripe Bank Account in Xero
This account is created and used in Xero as a mirror of all the transactions in your actual Stripe account. It is created as with any other bank account in Xero but ensure that you add an account code for it as they are not added by default eg 110. This account is used as a clearing account to ensure your receive payment for all the orders you have sold and to account for the fees payments made. All your orders paid for in Xero will appear here. With this new feature the associated fees will now appear too (which Stripe charge for each order). If you have a bank feed you can set up rules to automatically match everything making the bank reconciliation very quick and easy.
As part of the fee posting process Xeroom automatically applies the payment to it which is credited to the Stripe Bank Account (since these fees are paid to Stripe) all using the same reference.
The only thing not handled will be any fees paid on refunds (which Stripe kindly doesn’t refund) which you can simply post to this account. You can also automate the matching of the pay-outs too which will show going to your main bank account or Wise bank account. If you don’t have a Stripe bank feed then any pay-out to your actual bank from Stripe can be posted as a credit to this Stripe Bank Account so that it either clears or matches your balance in Stripe.
The Stripe bank account will now show all of the sales transactions (1) as well as the fees associated with each one (2) .
How to Configure the Posting of Stripe Fees in Xeroom
- Define the Stripe Fees Account – Create an account of type overhead in Xero and tick the enable payments box. NB if the account type is expense then it will not work it must be type overhead in Xero.
- Select the Account in Xeroom
In Xeroom, select this newly created account from the drop-down list and tick the checkbox to enable the Stripe Fee send. If you don’t see the new account then the list will need refreshing. To do this just click the Xero Authorise blue button in Xeroom General Settings at the top and click the Continue with Existing Organisation and the account will then show. Select it and click Submit to save it.
- Create a supplier in Xero called Stripe
Do this by adding a contact named Stripe Fee. This will be used to create the fee bills against.
How to Reconcile the Stripe transactions in Xero
If you have:
No automated Stripe feed – The Stripe Bank Account transactions tab looks like below. If you don’t use an automated feed there is nothing to reconcile but you need to check that the pay-outs you get to your actual bank account from Stripe are posted to this account so will show too and you can check for any missing payments or miscellaneous fees that might have been added. You can also see what transactions make up the consolidated payments without having to go to your Stripe account.
Automated Stripe feed – If you do have the automated feed then the reconciliation process is to match up what is in Stripe with that is in Xero. There are 4 types of transactions to match up. 1) The sale proceeds 2) The fees charged by Stripe on the transaction 3)The pay-out which is consolidated for a number of transactions per the pay-out schedule set in Stripe and in some cases 4) Any surcharge you apply to the customer to cover the Stripe fee .
Xero can match most of these transactions up automatically and by setting a few simple rules can match up the rest. For more info on how to do this please see Mark Cunningham’s very good explainer videos on how to set up rules to reconcile Stripe transactions in Xero https://www.youtube.com/watch?v=7zjJo6AIFgo.
Also see these Xero articles https://central.xero.com/s/article/Reconcile-Stripe-payments, https://central.xero.com/s/article/Stripe-surcharging-UK