diff --git a/message_parsers.cpp b/message_parsers.cpp
index d43009f..6cdd694 100644
--- a/message_parsers.cpp
+++ b/message_parsers.cpp
@@ -165,9 +165,6 @@
         ((header->payloadType & PAYLOAD_AUTH_MASK) ? true : false);
 
     auto payloadLen = endian::from_ipmi(header->payloadLength);
-    message->payload.assign(inPacket.begin() + sizeof(SessionHeader_t),
-                            inPacket.begin() + sizeof(SessionHeader_t) +
-                            payloadLen);
 
     if (message->isPacketAuthenticated)
     {
@@ -179,6 +176,21 @@
         }
     }
 
+    // Decrypt the payload if the payload is encrypted
+    if (message->isPacketEncrypted)
+    {
+        // Assign the decrypted payload to the IPMI Message
+        message->payload = internal::decryptPayload(inPacket,
+                                                    *(message.get()),
+                                                    payloadLen);
+    }
+    else
+    {
+        message->payload.assign(inPacket.begin() + sizeof(SessionHeader_t),
+                                inPacket.begin() + sizeof(SessionHeader_t) +
+                                payloadLen);
+    }
+
     return message;
 }
 
@@ -310,6 +322,18 @@
     packet.insert(packet.end(), integrityData.begin(), integrityData.end());
 }
 
+std::vector<uint8_t> decryptPayload(const std::vector<uint8_t>& packet,
+                                    const Message& message,
+                                    size_t payloadLen)
+{
+    auto session = (std::get<session::Manager&>(singletonPool).getSession(
+                        message.bmcSessionID)).lock();
+
+    return session->getCryptAlgo()->decryptPayload(packet,
+                                                  sizeof(SessionHeader_t),
+                                                  payloadLen);
+}
+
 } // namespace internal
 
 } // namespace ipmi20parser
diff --git a/message_parsers.hpp b/message_parsers.hpp
index 9403687..774b985 100644
--- a/message_parsers.hpp
+++ b/message_parsers.hpp
@@ -195,6 +195,19 @@
                       const Message& message,
                       size_t payloadLen);
 
+/*
+ * @brief Decrypt the encrypted payload in the incoming IPMI packet
+ *
+ * @param[in] packet - Incoming IPMI packet
+ * @param[in] message - IPMI Message populated from the incoming packet
+ * @param[in] payloadLen - Length of encrypted IPMI payload
+ *
+ * @return on successful completion, return the plain text payload
+ */
+std::vector<uint8_t> decryptPayload(const std::vector<uint8_t>& packet,
+                                    const Message& message,
+                                    size_t payloadLen);
+
 } // namespace internal
 
 } // namespace ipmi20parser
