Dealing with Google Analytics Refund – Reverse Transaction
Last Updated: September 5, 2023
In this article, I will show you how to deal with Google Analytics Refund. You will learn to issue partial and full refunds.
If your business issues a lot of refunds on a daily/weekly/monthly basis (quite common in the case of large online stores) then you need to adjust your sales data accordingly in Google Analytics so that you can reflect the refunded sales amount in your ecommerce reports.
Failing to do so, will create data discrepancies between your GA sales data and shopping cart sales data. As a result, your shopping cart may report a sale of $10k in the last one month while your GA may report a sale of $18k in the last one month.
Almost all popular shopping carts (like Shopify) automatically adjust the sales data to reflect refunds (remove refunded sales amount from total sales). But this is not the case with Google Analytics.
Once a customer has placed an order on the website, GA record that transaction. If later, the customer demand a refund and the refund is issued, the refunded sales amount does not automatically reflect back in GA ecommerce reports. You need to manually or programmatically upload refund data into GA, in order to adjust your sales data.
Difference between refunding a transaction and reversing a transaction
Technically speaking and in the context of Google Analytics, both refund and reverse are the same things. Whether you are refunding a transaction or reversing a transaction, you are removing the sales associated with that transaction.
We use the word ‘reverse’ to remove sales amount associated with all those e-commerce transactions which are: unfulfilled orders and/or test orders.
We use the word ‘refund’ to remove the sales amount associated with all those e-commerce transactions which are requests for a refund from our real customers.
You can refund/reverse ecommerce transactions:
- by making changes to your ecommerce tracking code. I explained this method in great detail in the article: How to reverse ecommerce transaction in Google Analytics
- by using the ‘refund data import’ feature in Google Analytics
- by using Google Analytics Management API
- by using measurement protocol
- by using a third-party tool
In this article, I am going to explain, how to refund/reverse ecommerce transactions via the ‘refund data import’ feature in Google Analytics.
Difference between partial and full refund in Google Analytics
Through ‘refund data import’ feature, you can issue full refund or partial refund in Google Analytics.
What you actually refund/remove is the sales associated with a transaction.
A transaction is a purchase order placed on your website. People can buy one or more products in a single transaction. So a transaction may contain one or more products.
In case of a full refund, you reverse/remove the full sales amount associated with a transaction in your GA ecommerce reports. In other words, in case of a full refund, you reverse/remove the sales amount associated with all of the products which were purchased in a single transaction.
In case of partial refund, you reverse/remove only certain sales amount associated with a transaction in your GA ecommerce reports. In other words, in case of a partial refund, you reverse/remove sales associated only with certain products (which were part of the transaction), in your GA ecommerce reports.
Criteria for using ‘refund data import’ feature in Google Analytics
The following conditions must be met before you can use the ‘refund data import’ feature in Google Analytics:
#1 You are using Universal Analytics tracking code (analytics.js) and not the classic Google Analytics tracking code (ga.js) on your website.
Related Article: Difference between Google Analytics and Universal Analytics
#2 The transactions that you want to refund must have been set in the enhanced ecommerce format. In other words, you have already set up enhanced ecommerce tracking on your website.
You can not refund the transactions via the ‘refund data import’ feature, which were set in the standard ecommerce format.
Following is an example of an ecommerce transaction, which is set in the enhanced ecommerce format:
ga('ec:setAction', 'purchase',{
// actionFieldObject stores action data
'id': '[Server Variable]', // Transaction id - Type: string
'affiliation': '[Server Variable]', // Store name - Type: string
'revenue': '[Server Variable]', // Total Revenue - Type: numeric
'tax': '[Server Variable]', // Tax - Type: numeric
'shipping': '[Server Variable]', // Shipping - Type: numeric
'coupon': '[Server Variable]' // Order/Transaction coupon - Type: string
});
Following is an example of an ecommerce transaction, which is set in standard ecommerce format:
ga(‘ecommerce:addTransaction’, {
‘id’: ‘1234’, // Transaction ID. Required.
‘affiliation’: ‘skinny jeans’, // store name.
‘revenue’: ‘28.8’, // total revenue.
‘shipping’: ‘10.00’, // Shipping.
‘tax’: ‘1.89’ // Tax.
});
If you wish to refund transactions which were set in the standard ecommerce format then do it by making changes to your ecommerce tracking code as explained in this article: How to reverse ecommerce transaction in Google Analytics
#3 The transaction ID that you use for the refund purpose must be the original ID and not the one modified by a GA view filter.
#4 The upload file that you use to import refund data into GA, should not contain data for both full and partial refunds. You should not upload full and partial refunds via the same upload file. Use separate upload files for full and partial refunds.
#5 You can only refund those transactions which were originally reported in the last 6 months.
Issuing a full refund in Google Analytics
Follow the steps below for issuing a full refund in GA:
Step-1: Navigate to the ‘Admin’ section of your GA view.
Step-2: Click on the ‘Data Import’ link under the Property section:
Step-3: Click on the ‘+ New Data Set’ button and then select ‘Refund data’ as the data set type:
Note: Data set is a container that holds the data you want to upload to GA.
Step-4: Name your data set:
Step-5: In the next step, define your data set schema (schema is the format in which you want to upload the data to GA):
In order to issue a full refund, we need only the ‘Transaction ID’. That’s why I did not select any other column from the ‘Any number of these columns may be provided’ drop-down menu.
Step-6: Click on the ‘Get schema’ button:
Note: If you wish to upload refund data via GA management API then follow the steps below:
#1 click on the ‘Get Custom Data Source ID (for API users)’ button
#2 make a note of the ‘Custom Data Source ID’
#3 follow the instructions on this page: https://developers.google.com/analytics/devguides/config/mgmt/v3/data-import
Step-7: Download the schema template (which is a CSV file) by clicking on the ‘Download Schema Template’ button and then click on the ‘Done’ button twice to create your new data set:
Step-8: Open the schema template file you downloaded from GA into Excel and then add and format your refund data according to the schema defined in the template:
In order to issue a full refund, upload only transaction IDs via the schema template file.
Each transaction is identified through a unique ID known as the transaction ID.
Here ‘ga:transactionId’ is the API name.
When we access Google Analytics via API, we use the API name of a dimension / metric / segment instead of the web view name (also known as UI name).
The API name of ‘transaction id’ is: ‘ga:transactionId’
Here we are accessing GA API via the ‘refund data import’ feature.
Step-9: Once you have finished adding the transaction data, save the schema template file as a CSV file. Your file is now ready to be uploaded to Google Analytics.
Step-10: Again navigate to the ‘Admin’ section of your GA view, Click on the ‘Data Import’ link under Property section and then click on the ‘Manage uploads’ link:
Step-11: Click on the ‘upload file’ button to upload the refund data to GA:
Step-12: Wait for the status to read ‘completed’:
The green right sign denotes that the refund data upload was successful.
Once you have uploaded the refund data, you can see it in the ‘Product Performance’ and ‘Sales Performance’ report under the columns: ‘Product Refund amount’ and ‘Refund Amount:
You can also create a custom report in GA, just for analysing refund data.
Issuing partial refund in Google Analytics
Follow the steps below for issuing a partial refund in GA:
Step-1: Navigate to the ‘Admin’ section of your GA view.
Step-2: Click on the ‘Data Import’ link under Property section.
Step-3: Click on ‘+ New Data Set’ button and then select ‘Refund data’ as data set type.
Step-4: Name your data set:
Step-5: In the next step, define your data set schema, like the one below:
In order to issue a partial refund, select: ‘Product SKU’ and ‘Quantity Refunded’ from the ‘Any number of these columns may be provided’ drop down menu.
‘Product SKU’ is the product code which is used to uniquely identify a product.
‘Quantity refunded’ is the total number of units refunded for a product.
Note: The refunded revenue is calculated automatically by Google, based on the product price and quantity refunded.
Step-6: Click on the ‘Get Schema’ button.
Step-7: Download the schema template by clicking on the ‘Download Schema Template’ button and then click on the ‘Done’ button twice to create your new data set:
Step-8: Open the schema template you downloaded from GA into Excel and then add and format your refund data according to the schema defined in the template:
To issue a partial refund, add transaction id, product SKU and quantity refunded, to each row of the downloaded schema template file.
ga:transactionId is the API name for ‘Transaction ID’
ga:productSku is the API name for ‘Product SKU’
ga:quantityRefunded is the API name for ‘Quantity Refunded’
Note: If you are using ‘product SKU‘ in the downloaded schema template file then it is mandatory to use ‘Quantity Refunded‘ with it.
Step-9: Once you have finished adding the data for a partial refund, save the schema template file as a CSV file. and then click on the ‘Manage uploads’ link > ‘Upload file‘ button to upload the refund data to GA.
Step-10: Wait for the status to read ‘completed’ and then check the ‘Product Performance’ and ‘Sales Performance’ reports to see the uploaded refund data.
Overriding the original reported product price and transaction revenue
If you want to override the original reported product price then add ga:productPrice column while defining your data set schema:
And then later provide the product price in the downloaded schema template for upload to GA:
Similarly, if you want to override the originally reported transaction revenue then add ga:transactionRevenue column while defining your data set schema:
And then later provide the revenue in the downloaded schema template for upload to GA:
Important points to remember:
#1 Once you have uploaded the refund data it may take up to 24 hours for refund data to appear in your enhanced ecommerce reports.
#2 You can not edit or delete refund data once it has been uploaded to your account. So be careful with the data you upload.
Other articles on Google Analytics Ecommerce
- Google Analytics Ecommerce Tracking Tutorial
- Enhanced Ecommerce Tracking in Google Analytics – Tutorial
- Set up Enhanced Ecommerce Tracking in Google Analytics
- Using Enhanced Ecommerce segments for Remarketing in Google Analytics
- Using Cohort Analysis & Enhanced Ecommerce to Understand User Behavior
- Duplicate Transactions (orders) in Google Analytics
- Enhanced Ecommerce Tracking via Google Tag Manager
- Ecommerce Tracking Google Tag Manager (GTM) – Tutorial
- Shopify Enhanced Ecommerce Tracking in Google Analytics – Tutorial
- GA4 (Google Analytics 4) Ecommerce Tracking via GTM – Tutorial
- Why Google Analytics and Shopping Cart Sales data don’t match and how to fix it
- How to remove / modify Google Analytics ecommerce transaction in one click
- Tracking Google Analytics Paypal Referral and other payment gateways
- Subscription & Recurring Revenue Analytics in Google Analytics
- Understanding Google Analytics Product Data Import
- Shopping Cart Analytics Tutorial
- Learn To Read E-Commerce Reports In Google Analytics
- How to reverse transaction in Google Analytics for gtag.js and analytics.js
- How to Fix Missing Ecommerce Data in Google Analytics
Last Updated: September 5, 2023
In this article, I will show you how to deal with Google Analytics Refund. You will learn to issue partial and full refunds.
If your business issues a lot of refunds on a daily/weekly/monthly basis (quite common in the case of large online stores) then you need to adjust your sales data accordingly in Google Analytics so that you can reflect the refunded sales amount in your ecommerce reports.
Failing to do so, will create data discrepancies between your GA sales data and shopping cart sales data. As a result, your shopping cart may report a sale of $10k in the last one month while your GA may report a sale of $18k in the last one month.
Almost all popular shopping carts (like Shopify) automatically adjust the sales data to reflect refunds (remove refunded sales amount from total sales). But this is not the case with Google Analytics.
Once a customer has placed an order on the website, GA record that transaction. If later, the customer demand a refund and the refund is issued, the refunded sales amount does not automatically reflect back in GA ecommerce reports. You need to manually or programmatically upload refund data into GA, in order to adjust your sales data.
Difference between refunding a transaction and reversing a transaction
Technically speaking and in the context of Google Analytics, both refund and reverse are the same things. Whether you are refunding a transaction or reversing a transaction, you are removing the sales associated with that transaction.
We use the word ‘reverse’ to remove sales amount associated with all those e-commerce transactions which are: unfulfilled orders and/or test orders.
We use the word ‘refund’ to remove the sales amount associated with all those e-commerce transactions which are requests for a refund from our real customers.
You can refund/reverse ecommerce transactions:
- by making changes to your ecommerce tracking code. I explained this method in great detail in the article: How to reverse ecommerce transaction in Google Analytics
- by using the ‘refund data import’ feature in Google Analytics
- by using Google Analytics Management API
- by using measurement protocol
- by using a third-party tool
In this article, I am going to explain, how to refund/reverse ecommerce transactions via the ‘refund data import’ feature in Google Analytics.
Difference between partial and full refund in Google Analytics
Through ‘refund data import’ feature, you can issue full refund or partial refund in Google Analytics.
What you actually refund/remove is the sales associated with a transaction.
A transaction is a purchase order placed on your website. People can buy one or more products in a single transaction. So a transaction may contain one or more products.
In case of a full refund, you reverse/remove the full sales amount associated with a transaction in your GA ecommerce reports. In other words, in case of a full refund, you reverse/remove the sales amount associated with all of the products which were purchased in a single transaction.
In case of partial refund, you reverse/remove only certain sales amount associated with a transaction in your GA ecommerce reports. In other words, in case of a partial refund, you reverse/remove sales associated only with certain products (which were part of the transaction), in your GA ecommerce reports.
Criteria for using ‘refund data import’ feature in Google Analytics
The following conditions must be met before you can use the ‘refund data import’ feature in Google Analytics:
#1 You are using Universal Analytics tracking code (analytics.js) and not the classic Google Analytics tracking code (ga.js) on your website.
Related Article: Difference between Google Analytics and Universal Analytics
#2 The transactions that you want to refund must have been set in the enhanced ecommerce format. In other words, you have already set up enhanced ecommerce tracking on your website.
You can not refund the transactions via the ‘refund data import’ feature, which were set in the standard ecommerce format.
Following is an example of an ecommerce transaction, which is set in the enhanced ecommerce format:
ga('ec:setAction', 'purchase',{ // actionFieldObject stores action data 'id': '[Server Variable]', // Transaction id - Type: string 'affiliation': '[Server Variable]', // Store name - Type: string 'revenue': '[Server Variable]', // Total Revenue - Type: numeric 'tax': '[Server Variable]', // Tax - Type: numeric 'shipping': '[Server Variable]', // Shipping - Type: numeric 'coupon': '[Server Variable]' // Order/Transaction coupon - Type: string });
Following is an example of an ecommerce transaction, which is set in standard ecommerce format:
ga(‘ecommerce:addTransaction’, { ‘id’: ‘1234’, // Transaction ID. Required. ‘affiliation’: ‘skinny jeans’, // store name. ‘revenue’: ‘28.8’, // total revenue. ‘shipping’: ‘10.00’, // Shipping. ‘tax’: ‘1.89’ // Tax. });
If you wish to refund transactions which were set in the standard ecommerce format then do it by making changes to your ecommerce tracking code as explained in this article: How to reverse ecommerce transaction in Google Analytics
#3 The transaction ID that you use for the refund purpose must be the original ID and not the one modified by a GA view filter.
#4 The upload file that you use to import refund data into GA, should not contain data for both full and partial refunds. You should not upload full and partial refunds via the same upload file. Use separate upload files for full and partial refunds.
#5 You can only refund those transactions which were originally reported in the last 6 months.
Issuing a full refund in Google Analytics
Follow the steps below for issuing a full refund in GA:
Step-1: Navigate to the ‘Admin’ section of your GA view.
Step-2: Click on the ‘Data Import’ link under the Property section:
Step-3: Click on the ‘+ New Data Set’ button and then select ‘Refund data’ as the data set type:
Note: Data set is a container that holds the data you want to upload to GA.
Step-4: Name your data set:
Step-5: In the next step, define your data set schema (schema is the format in which you want to upload the data to GA):
In order to issue a full refund, we need only the ‘Transaction ID’. That’s why I did not select any other column from the ‘Any number of these columns may be provided’ drop-down menu.
Step-6: Click on the ‘Get schema’ button:
Note: If you wish to upload refund data via GA management API then follow the steps below:
#1 click on the ‘Get Custom Data Source ID (for API users)’ button
#2 make a note of the ‘Custom Data Source ID’
#3 follow the instructions on this page: https://developers.google.com/analytics/devguides/config/mgmt/v3/data-import
Step-7: Download the schema template (which is a CSV file) by clicking on the ‘Download Schema Template’ button and then click on the ‘Done’ button twice to create your new data set:
Step-8: Open the schema template file you downloaded from GA into Excel and then add and format your refund data according to the schema defined in the template:
In order to issue a full refund, upload only transaction IDs via the schema template file.
Each transaction is identified through a unique ID known as the transaction ID.
Here ‘ga:transactionId’ is the API name.
When we access Google Analytics via API, we use the API name of a dimension / metric / segment instead of the web view name (also known as UI name).
The API name of ‘transaction id’ is: ‘ga:transactionId’
Here we are accessing GA API via the ‘refund data import’ feature.
Step-9: Once you have finished adding the transaction data, save the schema template file as a CSV file. Your file is now ready to be uploaded to Google Analytics.
Step-10: Again navigate to the ‘Admin’ section of your GA view, Click on the ‘Data Import’ link under Property section and then click on the ‘Manage uploads’ link:
Step-11: Click on the ‘upload file’ button to upload the refund data to GA:
Step-12: Wait for the status to read ‘completed’:
The green right sign denotes that the refund data upload was successful.
Once you have uploaded the refund data, you can see it in the ‘Product Performance’ and ‘Sales Performance’ report under the columns: ‘Product Refund amount’ and ‘Refund Amount:
You can also create a custom report in GA, just for analysing refund data.
Issuing partial refund in Google Analytics
Follow the steps below for issuing a partial refund in GA:
Step-1: Navigate to the ‘Admin’ section of your GA view.
Step-2: Click on the ‘Data Import’ link under Property section.
Step-3: Click on ‘+ New Data Set’ button and then select ‘Refund data’ as data set type.
Step-4: Name your data set:
Step-5: In the next step, define your data set schema, like the one below:
In order to issue a partial refund, select: ‘Product SKU’ and ‘Quantity Refunded’ from the ‘Any number of these columns may be provided’ drop down menu.
‘Product SKU’ is the product code which is used to uniquely identify a product.
‘Quantity refunded’ is the total number of units refunded for a product.
Note: The refunded revenue is calculated automatically by Google, based on the product price and quantity refunded.
Step-6: Click on the ‘Get Schema’ button.
Step-7: Download the schema template by clicking on the ‘Download Schema Template’ button and then click on the ‘Done’ button twice to create your new data set:
Step-8: Open the schema template you downloaded from GA into Excel and then add and format your refund data according to the schema defined in the template:
To issue a partial refund, add transaction id, product SKU and quantity refunded, to each row of the downloaded schema template file.
ga:transactionId is the API name for ‘Transaction ID’
ga:productSku is the API name for ‘Product SKU’
ga:quantityRefunded is the API name for ‘Quantity Refunded’
Note: If you are using ‘product SKU‘ in the downloaded schema template file then it is mandatory to use ‘Quantity Refunded‘ with it.
Step-9: Once you have finished adding the data for a partial refund, save the schema template file as a CSV file. and then click on the ‘Manage uploads’ link > ‘Upload file‘ button to upload the refund data to GA.
Step-10: Wait for the status to read ‘completed’ and then check the ‘Product Performance’ and ‘Sales Performance’ reports to see the uploaded refund data.
Overriding the original reported product price and transaction revenue
If you want to override the original reported product price then add ga:productPrice column while defining your data set schema:
And then later provide the product price in the downloaded schema template for upload to GA:
Similarly, if you want to override the originally reported transaction revenue then add ga:transactionRevenue column while defining your data set schema:
And then later provide the revenue in the downloaded schema template for upload to GA:
Important points to remember:
#1 Once you have uploaded the refund data it may take up to 24 hours for refund data to appear in your enhanced ecommerce reports.
#2 You can not edit or delete refund data once it has been uploaded to your account. So be careful with the data you upload.
Other articles on Google Analytics Ecommerce
- Google Analytics Ecommerce Tracking Tutorial
- Enhanced Ecommerce Tracking in Google Analytics – Tutorial
- Set up Enhanced Ecommerce Tracking in Google Analytics
- Using Enhanced Ecommerce segments for Remarketing in Google Analytics
- Using Cohort Analysis & Enhanced Ecommerce to Understand User Behavior
- Duplicate Transactions (orders) in Google Analytics
- Enhanced Ecommerce Tracking via Google Tag Manager
- Ecommerce Tracking Google Tag Manager (GTM) – Tutorial
- Shopify Enhanced Ecommerce Tracking in Google Analytics – Tutorial
- GA4 (Google Analytics 4) Ecommerce Tracking via GTM – Tutorial
- Why Google Analytics and Shopping Cart Sales data don’t match and how to fix it
- How to remove / modify Google Analytics ecommerce transaction in one click
- Tracking Google Analytics Paypal Referral and other payment gateways
- Subscription & Recurring Revenue Analytics in Google Analytics
- Understanding Google Analytics Product Data Import
- Shopping Cart Analytics Tutorial
- Learn To Read E-Commerce Reports In Google Analytics
- How to reverse transaction in Google Analytics for gtag.js and analytics.js
- How to Fix Missing Ecommerce Data in Google Analytics
My best selling books on Digital Analytics and Conversion Optimization
Maths and Stats for Web Analytics and Conversion Optimization
This expert guide will teach you how to leverage the knowledge of maths and statistics in order to accurately interpret data and take actions, which can quickly improve the bottom-line of your online business.
Master the Essentials of Email Marketing Analytics
This book focuses solely on the ‘analytics’ that power your email marketing optimization program and will help you dramatically reduce your cost per acquisition and increase marketing ROI by tracking the performance of the various KPIs and metrics used for email marketing.
Attribution Modelling in Google Analytics and BeyondSECOND EDITION OUT NOW!
Attribution modelling is the process of determining the most effective marketing channels for investment. This book has been written to help you implement attribution modelling. It will teach you how to leverage the knowledge of attribution modelling in order to allocate marketing budget and understand buying behaviour.
Attribution Modelling in Google Ads and Facebook
This book has been written to help you implement attribution modelling in Google Ads (Google AdWords) and Facebook. It will teach you, how to leverage the knowledge of attribution modelling in order to understand the customer purchasing journey and determine the most effective marketing channels for investment.