diff --git a/src/dsp/base.c b/src/dsp/base.c
index 88dc883..a094cb2 100644
--- a/src/dsp/base.c
+++ b/src/dsp/base.c
@@ -832,6 +832,56 @@
 	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
+#define PLDM_BASE_MIN_PART_SIZE 256
+
+LIBPLDM_ABI_TESTING
+int encode_pldm_base_negotiate_transfer_params_resp(
+	uint8_t instance_id,
+	const struct pldm_base_negotiate_transfer_params_resp *resp,
+	struct pldm_msg *msg, size_t *payload_length)
+{
+	PLDM_MSGBUF_RW_DEFINE_P(buf);
+	int rc;
+
+	if (resp == NULL || msg == NULL) {
+		return -EINVAL;
+	}
+
+	if (resp->responder_part_size < PLDM_BASE_MIN_PART_SIZE) {
+		return -EINVAL;
+	}
+
+	struct pldm_header_info header = { 0 };
+	header.instance = instance_id;
+	header.msg_type = PLDM_RESPONSE;
+	header.pldm_type = PLDM_BASE;
+	header.command = PLDM_NEGOTIATE_TRANSFER_PARAMETERS;
+
+	rc = pack_pldm_header_errno(&header, &msg->hdr);
+	if (rc) {
+		return rc;
+	}
+
+	rc = pldm_msgbuf_init_errno(
+		buf, PLDM_BASE_NEGOTIATE_TRANSFER_PARAMETERS_RESP_BYTES,
+		msg->payload, *payload_length);
+	if (rc) {
+		return rc;
+	}
+
+	pldm_msgbuf_insert(buf, resp->completion_code);
+	pldm_msgbuf_insert(buf, resp->responder_part_size);
+	rc = pldm_msgbuf_insert_array(
+		buf, sizeof(resp->responder_protocol_support),
+		(uint8_t *)resp->responder_protocol_support,
+		sizeof(resp->responder_protocol_support));
+	if (rc) {
+		return pldm_msgbuf_discard(buf, rc);
+	}
+
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
+}
+
 LIBPLDM_ABI_TESTING
 int decode_pldm_base_negotiate_transfer_params_req(
 	const struct pldm_msg *msg, size_t payload_length,
