diff --git a/erpnext/regional/__init__.py b/erpnext/regional/__init__.py
index 45a689e..3591be0 100644
--- a/erpnext/regional/__init__.py
+++ b/erpnext/regional/__init__.py
@@ -7,6 +7,9 @@
 from frappe import _
 
 from erpnext import get_region
+from pyqrcode import create as qr_create
+import io
+import os
 
 
 def check_deletion_permission(doc, method):
@@ -31,3 +34,72 @@
 		"document_name": doc.name,
 		"data": data
 	}).insert(ignore_permissions=True)
+
+
+def create_qr_code(doc, method):
+	"""Create QR Code after inserting Sales Inv
+	"""
+
+	region = get_region(doc.company)
+	if region not in ['Saudi Arabia']:
+		return
+
+	# if QR Code field not present, do nothing
+	if not hasattr(doc, 'qr_code'):
+		return
+
+	# Don't create QR Code if it already exists
+	qr_code = doc.get("qr_code")
+	if qr_code and frappe.db.exists({"doctype": "File", "file_url": qr_code}):
+		return
+
+	fields = frappe.get_meta('Sales Invoice').fields
+	
+	for field in fields:
+		if field.fieldname == 'qr_code' and field.fieldtype == 'Attach Image':
+			# Creating public url to print format
+			default_print_format = frappe.db.get_value('Property Setter', dict(property='default_print_format', doc_type=doc.doctype), "value")
+			
+			# System Language
+			language = frappe.get_system_settings('language')
+			
+			# creating qr code for the url
+			url = f"{ frappe.utils.get_url() }/{ doc.doctype }/{ doc.name }?format={ default_print_format or 'Standard' }&_lang={ language }&key={ doc.get_signature() }"
+			qr_image = io.BytesIO()
+			url = qr_create(url, error='L')
+			url.png(qr_image, scale=2, quiet_zone=1)
+			
+			# making file
+			filename = f"QR-CODE-{doc.name}.png".replace(os.path.sep, "__")
+			_file = frappe.get_doc({
+				"doctype": "File",
+				"file_name": filename,
+				"is_private": 0,
+				"content": qr_image.getvalue()
+			})
+
+			_file.save()
+
+			# assigning to document
+			doc.db_set('qr_code', _file.file_url)
+			doc.notify_update()
+
+			break
+
+		else:
+			pass
+
+def delete_qr_code_file(doc, method):
+	"""Delete QR Code on deleted sales invoice"""
+	
+	region = get_region(doc.company)
+	if region not in ['Saudi Arabia']:
+		return
+
+	if hasattr(doc, 'qr_code'):
+		if doc.get('qr_code'):
+			file_doc = frappe.get_list('File', {
+				'file_url': doc.qr_code
+			})
+			if len(file_doc):
+				frappe.delete_doc('File', file_doc[0].name)
\ No newline at end of file
diff --git a/erpnext/regional/saudi_arabia/setup.py b/erpnext/regional/saudi_arabia/setup.py
index 0534967..f559000 100644
--- a/erpnext/regional/saudi_arabia/setup.py
+++ b/erpnext/regional/saudi_arabia/setup.py
@@ -2,18 +2,18 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-
 import frappe
 from frappe.permissions import add_permission, update_permission_property
-from erpnext.regional.united_arab_emirates.setup import make_custom_fields, add_print_formats
+from erpnext.regional.united_arab_emirates.setup import make_custom_fields as uae_custom_fields, add_print_formats
 from erpnext.regional.saudi_arabia.wizard.operations.setup_ksa_vat_setting import create_ksa_vat_setting
-
+from frappe.custom.doctype.custom_field.custom_field import create_custom_field
 
 def setup(company=None, patch=True):
-	make_custom_fields()
+	uae_custom_fields()
 	add_print_formats()
 	add_permissions()
 	create_ksa_vat_setting(company)
+	make_custom_fields()
 	
 
 def add_permissions():
@@ -26,3 +26,12 @@
 
 	"""Enable KSA VAT Report"""
 	frappe.db.set_value('Report', 'KSA VAT', 'disabled', 0)
+
+def make_custom_fields():
+	qr_code_field = dict(
+		fieldname='qr_code', 
+		label='QR Code', 
+		fieldtype='Attach Image', 
+		read_only=1, no_copy=1, hidden=1)
+	
+	create_custom_field('Sales Invoice', qr_code_field)
