diff --git a/handler/routes.go b/handler/routes.go
index 274de90..156fecc 100644
--- a/handler/routes.go
+++ b/handler/routes.go
@@ -136,8 +136,16 @@ func NewClient() echo.HandlerFunc {
 			log.Error("Cannot generate wireguard key pair: ", err)
 			return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "Cannot generate Wireguard key pair"})
 		}
+
+		presharedKey, err := wgtypes.GenerateKey()
+		if err != nil {
+			log.Error("Cannot generated preshared key: ", err)
+			return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "Cannot generate Wireguard preshared key"})
+		}
+
 		client.PrivateKey = key.String()
 		client.PublicKey = key.PublicKey().String()
+		client.PresharedKey = presharedKey.String()
 		client.CreatedAt = time.Now().UTC()
 		client.UpdatedAt = client.CreatedAt
 
diff --git a/model/client.go b/model/client.go
index fe60ac3..2d610a6 100644
--- a/model/client.go
+++ b/model/client.go
@@ -8,7 +8,8 @@ import (
 type Client struct {
 	ID           string    `json:"id"`
 	PrivateKey   string    `json:"private_key"`
-	PublicKey    string    `json:"pulbic_key"`
+	PublicKey    string    `json:"public_key"`
+	PresharedKey string	   `json:"preshared_key"`
 	Name         string    `json:"name"`
 	Email        string    `json:"email"`
 	AllocatedIPs []string  `json:"allocated_ips"`
diff --git a/templates/wg.conf b/templates/wg.conf
index 58e79ad..4433f23 100644
--- a/templates/wg.conf
+++ b/templates/wg.conf
@@ -17,5 +17,6 @@ MTU = {{ .globalSettings.MTU }}
 # Update at:    {{ .Client.UpdatedAt }}
 [Peer]
 PublicKey = {{ .Client.PublicKey }}
+PresharedKey = {{ .Client.PresharedKey }}
 AllowedIPs = {{$first :=true}}{{range .Client.AllocatedIPs }}{{if $first}}{{$first = false}}{{else}},{{end}}{{.}}{{end}}
 {{end}}{{end}}
diff --git a/util/util.go b/util/util.go
index 7685ad5..384886f 100644
--- a/util/util.go
+++ b/util/util.go
@@ -25,6 +25,7 @@ func BuildClientConfig(client model.Client, server model.Server, setting model.G
 
 	// Peer section
 	peerPublicKey := fmt.Sprintf("PublicKey = %s", server.KeyPair.PublicKey)
+	peerPresharedKey := fmt.Sprintf("PresharedKey = %s", client.PresharedKey)
 	peerAllowedIPs := fmt.Sprintf("AllowedIPs = %s", strings.Join(client.AllowedIPs, ","))
 	peerEndpoint := fmt.Sprintf("Endpoint = %s:%d", setting.EndpointAddress, server.Interface.ListenPort)
 	peerPersistentKeepalive := fmt.Sprintf("PersistentKeepalive = %d", setting.PersistentKeepalive)
@@ -36,6 +37,7 @@ func BuildClientConfig(client model.Client, server model.Server, setting model.G
 		clientDNS + "\n\n" +
 		"[Peer]" + "\n" +
 		peerPublicKey + "\n" +
+		peerPresharedKey + "\n" +
 		peerAllowedIPs + "\n" +
 		peerEndpoint + "\n" +
 		peerPersistentKeepalive + "\n"