diff --git a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_custom_fields.py b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_custom_fields.py
new file mode 100644
index 0000000..f3410e1
--- /dev/null
+++ b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_custom_fields.py
@@ -0,0 +1,44 @@
+import frappe
+from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
+
+def create_custom_pos_fields():
+	"""
+		Create custom fields corresponding to POS Settings and POS Invoice
+	"""
+	pos_field = {
+		"POS Invoice": [
+			{
+				"fieldname": "request_for_payment",
+				"label": "Request for Payment",
+				"fieldtype": "Button",
+				"hidden": 1,
+				"insert_after": "contact_email"
+			},
+		]
+	}
+	if not frappe.get_meta("POS Invoice").has_field("request_for_payment"):
+		create_custom_fields(pos_field)
+
+	record_dict = [{
+			"doctype": "POS Field",
+			"fieldname": "contact_mobile",
+			"label": "Mobile No",
+			"fieldtype": "Data",
+			"options": "Phone",
+			"parent": "POS Settings"
+		},
+		{
+			"doctype": "POS Field",
+			"fieldname": "request_for_payment",
+			"label": "Request for Payment",
+			"fieldtype": "Button",
+			"parent": "POS Settings"
+		}
+	]
+	create_pos_settings(record_dict)
+
+def create_pos_settings(record_dict):
+	for record in record_dict:
+		if frappe.db.exists("POS Field", {"fieldname": record.get("fieldname")}):
+			continue
+		frappe.get_doc(record).insert()
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py
index de5df1f..fb48cb5 100644
--- a/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py
+++ b/erpnext/erpnext_integrations/doctype/mpesa_settings/mpesa_settings.py
@@ -15,15 +15,21 @@
 from frappe.integrations.utils import create_request_log, create_payment_gateway
 from frappe.utils import get_request_site_address
 from frappe.utils.password import get_decrypted_password
+from erpnext.erpnext_integrations.utils import create_mode_of_payment
 from erpnext.erpnext_integrations.doctype.mpesa_settings.mpesa_connector import MpesaConnector
+from erpnext.erpnext_integrations.doctype.mpesa_settings.mpesa_custom_fields import create_custom_pos_fields
 
 class MpesaSettings(Document):
 	supported_currencies = ["KSh"]
 
 	def validate(self):
 		create_payment_gateway('Mpesa-' + self.payment_gateway_name, settings='Mpesa Settings', controller=self.payment_gateway_name)
+		create_mode_of_payment('Mpesa-' + self.payment_gateway_name)
 		call_hook_method('payment_gateway_enabled', gateway='Mpesa-' + self.payment_gateway_name)
 
 	def validate_transaction_currency(self, currency):
 		if currency not in self.supported_currencies:
 			frappe.throw(_("Please select another payment method. Mpesa does not support transactions in currency '{0}'").format(currency))
+
+	def on_update(self):
+		create_custom_pos_fields()
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/utils.py b/erpnext/erpnext_integrations/utils.py
index 84f7f5a..78a5fce 100644
--- a/erpnext/erpnext_integrations/utils.py
+++ b/erpnext/erpnext_integrations/utils.py
@@ -3,6 +3,7 @@
 from frappe import _
 import base64, hashlib, hmac
 from six.moves.urllib.parse import urlparse
+from erpnext import get_default_company
 
 def validate_webhooks_request(doctype,  hmac_key, secret_key='secret'):
 	def innerfn(fn):
@@ -41,3 +42,22 @@
 	server_url = '{uri.scheme}://{uri.netloc}/api/method/{endpoint}'.format(uri=urlparse(url), endpoint=endpoint)
 
 	return server_url
+
+def create_mode_of_payment(gateway):
+	payment_gateway_account = frappe.db.get_value("Payment Gateway Account", {
+			"payment_gateway": gateway
+		}, ['payment_account'])
+
+	if not frappe.db.exists("Mode of Payment", gateway) and payment_gateway_account:
+		mode_of_payment = frappe.get_doc({
+			"doctype": "Mode of Payment",
+			"mode_of_payment": gateway,
+			"enabled": 1,
+			"type": "General",
+			"account": {
+				"doctype": "Mode of Payment Account",
+				"company": get_default_company(),
+				"default_account": payment_gateway_account
+			}
+		})
+		mode_of_payment.insert(ignore_permissions=True)
\ No newline at end of file
