diff --git a/CHANGELOG.md b/CHANGELOG.md
index f3327ff..01818a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -43,6 +43,8 @@
 
 - file: Add encode req & decode resp for DfOpen command.
 
+- file: Add encode req & decode resp for DfClose command.
+
 ### Changed
 
 - dsp: firmware_update: Expand "params" in symbol names
diff --git a/include/libpldm/file.h b/include/libpldm/file.h
index 0c0eb0e..320fed8 100644
--- a/include/libpldm/file.h
+++ b/include/libpldm/file.h
@@ -12,8 +12,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#define PLDM_DF_OPEN_REQ_BYTES	4
-#define PLDM_DF_OPEN_RESP_BYTES 3
+#define PLDM_DF_OPEN_REQ_BYTES	 4
+#define PLDM_DF_OPEN_RESP_BYTES	 3
+#define PLDM_DF_CLOSE_REQ_BYTES	 4
+#define PLDM_DF_CLOSE_RESP_BYTES 1
 
 /** @brief PLDM File Transfer Completion Code */
 enum pldm_file_cc {
@@ -60,6 +62,23 @@
 	uint16_t file_descriptor;
 };
 
+/** @struct pldm_file_df_close_req
+ *
+ *  Structure representing PLDM File DfClose request.
+ */
+struct pldm_file_df_close_req {
+	uint16_t file_descriptor;
+	bitfield16_t df_close_options;
+};
+
+/** @struct pldm_file_df_close_resp
+ *
+ *  Structure representing PLDM File DfClose response.
+ */
+struct pldm_file_df_close_resp {
+	uint8_t completion_code;
+};
+
 /** @brief Create a PLDM request message for DFOpen
  *
  *  @param[in] instance_id - Message's instance id
@@ -94,6 +113,36 @@
 				  size_t payload_length,
 				  struct pldm_file_df_open_resp *resp);
 
+/** @brief Create a PLDM request message for DFClose
+ *
+ *  @param[in] instance_id - Message's instance id
+ *  @param[in] req - The pointer to the request message to be encoded
+ *  @param[in,out] msg - Message will be written to this
+ *  @param[in] payload_length - Length of the request message payload
+ *  @return 0 on success
+ *          -EINVAL if the input parameters' memory are not allocated,
+ *          or message type or instance in request header is invalid
+ *          -ENOMSG if the PLDM type in the request header is invalid
+ *          -EOVERFLOW if the input message length is invalid
+ *  @note  Caller is responsible for memory alloc and dealloc of param
+ *         'msg.payload'
+ */
+int encode_pldm_file_df_close_req(uint8_t instance_id,
+				  const struct pldm_file_df_close_req *req,
+				  struct pldm_msg *msg, size_t payload_length);
+
+/** @brief Decode DFClose response data
+ *
+ *  @param[in] msg - Response message
+ *  @param[in] payload_length - Length of response message payload
+ *  @param[out] resp - pointer to the decoded response message
+ *  @return 0 on success
+ *          -EINVAL if the input parameters' memory are not allocated
+ */
+int decode_pldm_file_df_close_resp(const struct pldm_msg *msg,
+				   size_t payload_length,
+				   struct pldm_file_df_close_resp *resp);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/dsp/file.c b/src/dsp/file.c
index d9c2a21..05dba3b 100644
--- a/src/dsp/file.c
+++ b/src/dsp/file.c
@@ -77,3 +77,52 @@
 
 	return pldm_msgbuf_complete_consumed(buf);
 }
+
+LIBPLDM_ABI_TESTING
+int encode_pldm_file_df_close_req(uint8_t instance_id,
+				  const struct pldm_file_df_close_req *req,
+				  struct pldm_msg *msg, size_t payload_length)
+{
+	PLDM_MSGBUF_DEFINE_P(buf);
+	int rc;
+
+	if (!req || !msg) {
+		return -EINVAL;
+	}
+
+	struct pldm_header_info header = { 0 };
+	header.instance = instance_id;
+	header.msg_type = PLDM_REQUEST;
+	header.pldm_type = PLDM_FILE;
+	header.command = PLDM_FILE_CMD_DF_CLOSE;
+
+	rc = pack_pldm_header_errno(&header, &(msg->hdr));
+	if (rc) {
+		return rc;
+	}
+
+	rc = pldm_msgbuf_init_errno(buf, PLDM_DF_CLOSE_REQ_BYTES, msg->payload,
+				    payload_length);
+	if (rc) {
+		return rc;
+	}
+
+	pldm_msgbuf_insert(buf, req->file_descriptor);
+	pldm_msgbuf_insert(buf, req->df_close_options.value);
+
+	return pldm_msgbuf_complete(buf);
+}
+
+LIBPLDM_ABI_TESTING
+int decode_pldm_file_df_close_resp(const struct pldm_msg *msg,
+				   size_t payload_length,
+				   struct pldm_file_df_close_resp *resp)
+{
+	if (!msg || !resp) {
+		return -EINVAL;
+	}
+
+	resp->completion_code = pldm_msg_has_error(msg, payload_length);
+
+	return 0;
+}
diff --git a/tests/dsp/file.cpp b/tests/dsp/file.cpp
index f738377..50d6bca 100644
--- a/tests/dsp/file.cpp
+++ b/tests/dsp/file.cpp
@@ -164,3 +164,125 @@
     EXPECT_EQ(rc, -EOVERFLOW);
 }
 #endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(EncodeDfCloseReq, GoodTest)
+{
+    uint8_t instance_id = 0;
+    uint16_t file_descriptor = 0x0200;
+    bitfield16_t df_close_options;
+    df_close_options.value = 0x0100;
+    std::array<uint8_t, PLDM_DF_CLOSE_REQ_BYTES> requestMsg = {0x00, 0x02, 0x00,
+                                                               0x01};
+
+    const struct pldm_file_df_close_req req_data = {file_descriptor,
+                                                    df_close_options};
+
+    PLDM_MSG_DEFINE_P(requestPtr, PLDM_DF_OPEN_REQ_BYTES);
+    auto rc = encode_pldm_file_df_close_req(instance_id, &req_data, requestPtr,
+                                            PLDM_DF_CLOSE_REQ_BYTES);
+
+    ASSERT_EQ(rc, 0);
+    EXPECT_EQ(
+        0, memcmp(requestPtr->payload, requestMsg.data(), sizeof(requestMsg)));
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(EncodeDfCloseReq, BadTestUnAllocatedPtrParams)
+{
+    uint8_t instance_id = 0;
+    uint16_t file_descriptor = 0x0200;
+    bitfield16_t df_close_options;
+    df_close_options.value = 0x0100;
+    int rc;
+
+    const struct pldm_file_df_close_req req_data = {file_descriptor,
+                                                    df_close_options};
+
+    PLDM_MSG_DEFINE_P(requestPtr, PLDM_DF_CLOSE_REQ_BYTES);
+    rc = encode_pldm_file_df_close_req(instance_id, &req_data, nullptr,
+                                       PLDM_DF_CLOSE_REQ_BYTES);
+    EXPECT_EQ(rc, -EINVAL);
+
+    rc = encode_pldm_file_df_close_req(instance_id, nullptr, requestPtr,
+                                       PLDM_DF_CLOSE_REQ_BYTES);
+    EXPECT_EQ(rc, -EINVAL);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(EncodeDfCloseReq, BadTestInvalidExpectedOutputMsgLength)
+{
+    uint8_t instance_id = 0;
+    uint16_t file_descriptor = 0x0200;
+    bitfield16_t df_close_options;
+    df_close_options.value = 0x0100;
+    int rc;
+
+    const struct pldm_file_df_close_req req_data = {file_descriptor,
+                                                    df_close_options};
+
+    PLDM_MSG_DEFINE_P(requestPtr, PLDM_DF_CLOSE_REQ_BYTES);
+    rc = encode_pldm_file_df_close_req(instance_id, &req_data, requestPtr, 1);
+    EXPECT_EQ(rc, -EOVERFLOW);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(DecodeDfCloseResp, GoodTest)
+{
+    uint8_t completion_code = PLDM_SUCCESS;
+
+    struct pldm_file_df_close_resp resp_data = {};
+
+    PLDM_MSGBUF_DEFINE_P(buf);
+    int rc;
+
+    static constexpr const size_t payload_length = PLDM_DF_CLOSE_RESP_BYTES;
+
+    PLDM_MSG_DEFINE_P(responseMsg, payload_length);
+
+    rc = pldm_msgbuf_init_errno(buf, 0, responseMsg->payload, payload_length);
+    ASSERT_EQ(rc, 0);
+
+    pldm_msgbuf_insert_uint8(buf, completion_code);
+
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
+
+    rc =
+        decode_pldm_file_df_close_resp(responseMsg, payload_length, &resp_data);
+
+    ASSERT_EQ(rc, 0);
+    EXPECT_EQ(resp_data.completion_code, completion_code);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(DecodeDfCloseResp, BadTestUnAllocatedPtrParams)
+{
+    uint8_t completion_code = PLDM_SUCCESS;
+
+    struct pldm_file_df_close_resp resp_data = {};
+
+    PLDM_MSGBUF_DEFINE_P(buf);
+    int rc;
+
+    static constexpr const size_t payload_length = PLDM_DF_CLOSE_RESP_BYTES;
+
+    PLDM_MSG_DEFINE_P(responseMsg, payload_length);
+
+    rc = pldm_msgbuf_init_errno(buf, 0, responseMsg->payload, payload_length);
+    ASSERT_EQ(rc, 0);
+
+    pldm_msgbuf_insert_uint8(buf, completion_code);
+
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
+
+    rc = decode_pldm_file_df_close_resp(nullptr, payload_length, &resp_data);
+    EXPECT_EQ(rc, -EINVAL);
+
+    rc = decode_pldm_file_df_close_resp(responseMsg, payload_length, nullptr);
+    EXPECT_EQ(rc, -EINVAL);
+}
+#endif
