diff --git a/src/highlanderticketing/handler/order.go b/src/highlanderticketing/handler/order.go
index 6e0519e5ccda72ae1ff50706e956e131628f3307..862e81e0fbd4032c3b387b02bfe8ec635d89facc 100644
--- a/src/highlanderticketing/handler/order.go
+++ b/src/highlanderticketing/handler/order.go
@@ -25,9 +25,20 @@ func AddMatchOrder(w http.ResponseWriter, r *http.Request) {
 		http.Error(w, err.Error(), http.StatusBadRequest)
 		return
 	}
+	reqToken, err := getBearerToken(r)
+	if err != nil {
+		log.Errorf("Failure loading bearer token  %v", err)
+		http.Error(w, err.Error(), http.StatusBadRequest)
+	}
+	userOfOrder, err := service.GetUserInfo(reqToken)
+	if err != nil {
+		log.Errorf("Failure loading user Info %v", err)
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+	}
+	order.User = userOfOrder
 	err = service.AddMatchOrder(id, order)
 	if err != nil {
-		log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err)
+		log.Errorf("Failure adding order to match with ID %v: %v", id, err)
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
 	}
@@ -50,6 +61,17 @@ func AddTravelOrder(w http.ResponseWriter, r *http.Request) {
 		http.Error(w, err.Error(), http.StatusBadRequest)
 		return
 	}
+	reqToken, err := getBearerToken(r)
+	if err != nil {
+		log.Errorf("Failure loading bearer token  %v", err)
+		http.Error(w, err.Error(), http.StatusBadRequest)
+	}
+	userOfOrder, err := service.GetUserInfo(reqToken)
+	if err != nil {
+		log.Errorf("Failure loading user Info %v", err)
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+	}
+	order.User = userOfOrder
 	err = service.AddTravelOrder(id, order)
 	if err != nil {
 		log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err)
diff --git a/src/highlanderticketing/service/nats.go b/src/highlanderticketing/service/nats.go
index 59b22dceca44f179138aa63a608e69fe86e61baa..103bbf39c2eb52805bedfe9a909e0a8f1c876547 100644
--- a/src/highlanderticketing/service/nats.go
+++ b/src/highlanderticketing/service/nats.go
@@ -4,8 +4,10 @@ import (
 	"encoding/json"
 	"fmt"
 	"log"
+	"os"
 	"time"
 
+	"github.com/joho/godotenv"
 	"github.com/nats-io/nats.go"
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model"
 )
@@ -14,6 +16,23 @@ type NatsServer struct {
 	Nc *nats.Conn
 }
 
+func ConnectToNats() (NatsServer, error) {
+	var natsServer NatsServer
+	if err := godotenv.Load(".env"); err != nil {
+		log.Fatalf("Error loading .env file")
+	}
+	uri := os.Getenv("NATS_URI")
+	nc, err := nats.Connect(uri)
+	if err != nil {
+		log.Fatal("Error establishing connection to NATS:", err)
+		return natsServer, err
+	}
+	natsServer.Nc = nc
+	fmt.Println("Connected to NATS at:", natsServer.Nc.ConnectedUrl())
+	return natsServer, nil
+
+}
+
 func (s NatsServer) ConfirmOrder(e *model.EmialContent) {
 	var res *model.Response
 	emailContenct, errMarshal := json.Marshal(e)
diff --git a/src/highlanderticketing/service/order.go b/src/highlanderticketing/service/order.go
index f2f2f430a340a01dce3032aeeede63e670db1077..bd8a876c287b8c140d4e70b723790f2a5244133b 100644
--- a/src/highlanderticketing/service/order.go
+++ b/src/highlanderticketing/service/order.go
@@ -13,6 +13,7 @@ import (
 func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
 	filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
 	order.ID = primitive.NewObjectID()
+	matchToFind := model.Match{}
 
 	updater := bson.D{primitive.E{Key: "$push", Value: bson.D{
 		primitive.E{Key: "orders", Value: order},
@@ -24,6 +25,11 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
 	}
 	collection := client.Database(db.DB).Collection(db.MATCHES)
 
+	err = collection.FindOne(context.TODO(), filter).Decode(&matchToFind)
+	if err != nil {
+		return err
+	}
+
 	updateResult, err := collection.UpdateOne(context.TODO(), filter, updater)
 	if err != nil {
 		return err
@@ -33,12 +39,19 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
 		return fmt.Errorf("no document was updated")
 	}
 
+	natsServer, err := ConnectToNats()
+	defer natsServer.Nc.Close()
+
+	emailContenct := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date, Emailadress: order.User.Email, OrderID: matchToFind.ID.String()}
+	natsServer.ConfirmOrder(&emailContenct)
+
 	return nil
 }
 
 func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
 	filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
 	order.ID = primitive.NewObjectID()
+	matchToFind := model.Match{}
 
 	updater := bson.M{"$push": bson.M{"travel.orders": order}}
 
@@ -48,6 +61,11 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
 	}
 	collection := client.Database(db.DB).Collection(db.MATCHES)
 
+	err = collection.FindOne(context.TODO(), filter).Decode(&matchToFind)
+	if err != nil {
+		return err
+	}
+
 	updateResult, err := collection.UpdateOne(context.TODO(), filter, updater)
 	if err != nil {
 		return err
@@ -57,6 +75,12 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
 		return fmt.Errorf("no document was updated")
 	}
 
+	natsServer, err := ConnectToNats()
+	defer natsServer.Nc.Close()
+
+	emailContenct := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date, Emailadress: order.User.Email, OrderID: matchToFind.ID.String()}
+	natsServer.ConfirmOrder(&emailContenct)
+
 	return nil
 }
 func CancelOrder() {