diff --git a/erpnext/regional/report/uae_vat/uae_vat.py b/erpnext/regional/report/uae_vat/uae_vat.py
index 8eeff51..b3e52be 100644
--- a/erpnext/regional/report/uae_vat/uae_vat.py
+++ b/erpnext/regional/report/uae_vat/uae_vat.py
@@ -61,6 +61,7 @@
 		Dict: Dictionary containing chart data
 	"""
 	data = []
+	data.append({"legend": f'VAT on Sales and All Other Outputs',})
 	total_emiratewise = get_total_emiratewise(filters)
 	emirates = get_emirates()
 	amounts_by_emirate = {}
@@ -88,6 +89,16 @@
 					"vat_amount": 0
 				}
 			)
+
+	data.append(
+		{
+			"no": '2',
+			"legend": f'Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme',
+			"amount": (-1) * get_tourist_tax_return_total(filters),
+			"vat_amount": (-1) * get_tourist_tax_return_tax(filters)
+		}
+	)
+
 	data.append(
 		{
 			"no": '3',
@@ -96,6 +107,25 @@
 			"vat_amount": get_reverse_charge_tax(filters)
 		}
 	)
+
+	data.append({"legend": f'VAT on Expenses and All Other Inputs'})
+	data.append(
+		{
+			"no": '9',
+			"legend": f'Standard Rated Expenses',
+			"amount": get_standard_rated_expenses_total(filters),
+			"vat_amount": get_standard_rated_expenses_tax(filters)
+		}
+	)
+	data.append(
+		{
+			"no": '10',
+			"legend": f'Supplies subject to the reverse charge provision',
+			"amount": get_reverse_charge_recoverable_total(filters),
+			"vat_amount": get_reverse_charge_recoverable_tax(filters)
+		}
+	)
+
 	return data, chart
 
 
@@ -235,4 +265,140 @@
 		("to_date", f' and `tabPurchase Invoice`.posting_date<="{filters.get("to_date")}"')):
 			if filters.get(opts[0]):
 				conditions += opts[1]
-	return conditions
\ No newline at end of file
+	return conditions
+
+
+def get_reverse_charge_recoverable_total(filters):
+	"""Returns the sum of the total of each Purchase invoice made with claimable reverse charge
+
+	Args:
+		filters (Dict, optional): Dictionary consisting of the filters selected by the user. Defaults to None.
+
+	Returns:
+		Float: sum of the total of each Purchase invoice made with claimable reverse charge
+	"""
+	conditions = """
+	for opts in (("company", f' and company="{filters.get("company")}"'),
+		("from_date",  f' and posting_date>="{filters.get("from_date")}"'),
+		("to_date", f' and posting_date<="{filters.get("to_date")}"')):
+			if filters.get(opts[0]):
+				conditions += opts[1]
+	return conditions
+	"""
+	return frappe.db.sql(f"""
+		select sum(total)  from
+		`tabPurchase Invoice`
+		where
+		reverse_charge = "Y"
+		and claimable_reverse_charge > 0
+		and docstatus = 1 {get_conditions(filters)} ;
+		""")[0][0]
+
+
+def get_reverse_charge_recoverable_tax(filters):
+	"""Returns the sum of the tax of each Purchase invoice made
+
+	Args:
+		filters (Dict, optional): Dictionary consisting of the filters selected by the user. Defaults to None.
+
+	Returns:
+		Float: sum of the tax of each Purchase invoice made
+	"""
+	return frappe.db.sql(f"""
+		select sum(debit * `tabPurchase Invoice`.claimable_reverse_charge / 100)  from
+		`tabPurchase Invoice`  inner join `tabGL Entry`
+		on `tabGL Entry`.voucher_no = `tabPurchase Invoice`.name
+		where
+		`tabPurchase Invoice`.reverse_charge = "Y"
+		and `tabPurchase Invoice`.docstatus = 1
+		and `tabPurchase Invoice`.claimable_reverse_charge > 0
+		and `tabGL Entry`.docstatus = 1  {get_conditions_join(filters)}
+		and account in ("{'", "'.join(get_tax_accounts(filters['company']))}");
+		""")[0][0]
+
+
+def get_standard_rated_expenses_total(filters):
+	"""Returns the sum of the total of each Purchase invoice made with claimable reverse charge
+
+	Args:
+		filters (Dict, optional): Dictionary consisting of the filters selected by the user. Defaults to None.
+
+	Returns:
+		Float: sum of the total of each Purchase invoice made with claimable reverse charge
+	"""
+	conditions = """
+	for opts in (("company", f' and company="{filters.get("company")}"'),
+		("from_date",  f' and posting_date>="{filters.get("from_date")}"'),
+		("to_date", f' and posting_date<="{filters.get("to_date")}"')):
+			if filters.get(opts[0]):
+				conditions += opts[1]
+	return conditions
+	"""
+	return frappe.db.sql(f"""
+		select sum(total)  from
+		`tabSales Invoice`
+		where
+		standard_rated_expenses > 0
+		and docstatus = 1 {get_conditions(filters)} ;
+		""")[0][0]
+
+
+def get_standard_rated_expenses_tax(filters):
+	"""Returns the sum of the tax of each Purchase invoice made
+
+	Args:
+		filters (Dict, optional): Dictionary consisting of the filters selected by the user. Defaults to None.
+
+	Returns:
+		Float: sum of the tax of each Purchase invoice made
+	"""
+	return frappe.db.sql(f"""
+		select sum(standard_rated_expenses)  from
+		`tabSales Invoice`
+		where
+		standard_rated_expenses > 0
+		and docstatus = 1 {get_conditions(filters)} ;
+		""")[0][0]
+
+def get_tourist_tax_return_total(filters):
+	"""Returns the sum of the total of each Sales invoice with non zero tourist_tax_return
+
+	Args:
+		filters (Dict, optional): Dictionary consisting of the filters selected by the user. Defaults to None.
+
+	Returns:
+		Float: sum of the total of each Sales invoice with non zero tourist_tax_return
+	"""
+	conditions = """
+	for opts in (("company", f' and company="{filters.get("company")}"'),
+		("from_date",  f' and posting_date>="{filters.get("from_date")}"'),
+		("to_date", f' and posting_date<="{filters.get("to_date")}"')):
+			if filters.get(opts[0]):
+				conditions += opts[1]
+	return conditions
+	"""
+	return frappe.db.sql(f"""
+		select sum(total)  from
+		`tabSales Invoice`
+		where
+		tourist_tax_return > 0
+		and docstatus = 1 {get_conditions(filters)} ;
+		""")[0][0]
+
+
+def get_tourist_tax_return_tax(filters):
+	"""Returns the sum of the tax of each Sales invoice with non zero tourist_tax_return
+
+	Args:
+		filters (Dict, optional): Dictionary consisting of the filters selected by the user. Defaults to None.
+
+	Returns:
+		Float: sum of the tax of each Sales invoice with non zero tourist_tax_return
+	"""
+	return frappe.db.sql(f"""
+		select sum(tourist_tax_return)  from
+		`tabSales Invoice`
+		where
+		tourist_tax_return > 0
+		and docstatus = 1 {get_conditions(filters)} ;
+		""")[0][0]
\ No newline at end of file
diff --git a/erpnext/regional/united_arab_emirates/setup.py b/erpnext/regional/united_arab_emirates/setup.py
index f116303..0176340 100644
--- a/erpnext/regional/united_arab_emirates/setup.py
+++ b/erpnext/regional/united_arab_emirates/setup.py
@@ -33,7 +33,8 @@
 				fieldtype='Select', insert_after='permit_no', print_hide=1,
 				options='Y\nN', default='N'),
 			dict(fieldname='claimable_reverse_charge', label='Claimable Reverse Charge (Percentage)',
-				insert_after='reverse_charge', fieldtype='Percent'),
+				insert_after='reverse_charge', fieldtype='Percent', print_hide=1,
+				depends_on="eval:doc.reverse_charge=='Y'", default='100.000'),
 		]
 
 	sales_invoice_fields = [
@@ -45,12 +46,12 @@
 				fetch_from='customer.customer_name_in_arabic', print_hide=1),
 			dict(fieldname='emirate', label='Emirate', insert_after='customer_address',
 				fieldtype='Read Only', fetch_from='customer_address.emirates'),
-			dict(fieldname='returns_column_break', fieldtype='Column Break',
-				insert_after='select_print_heading'),
+			# dict(fieldname='returns_column_break', fieldtype='Column Break',
+			# 	insert_after='select_print_heading'),
 			dict(fieldname='tourist_tax_return', label='Tax Refund provided to Tourists (AED)',
-				insert_after='returns_column_break', fieldtype='Currency',),
+				insert_after='permit_no', fieldtype='Currency', print_hide=1, default='0'),
 			dict(fieldname='standard_rated_expenses', label='Standard Rated Expenses (AED)',
-				insert_after='tourist_tax_return', fieldtype='Currency',),
+				insert_after='tourist_tax_return', fieldtype='Currency', print_hide=1, default='0'),
 		]
 
 	invoice_item_fields = [
