diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TransactionController.java b/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TransactionController.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e5f08c76c53b864f732dbf779c45274129f6efd
--- /dev/null
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TransactionController.java
@@ -0,0 +1,4 @@
+package com.mobilecomputing.pecunia.controller;
+
+public class TransactionController {
+}
diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TripController.java b/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TripController.java
index e573d9aedf4a21caf9be8a0ce15b1f0d801725aa..f80258607b46e7233bfb5540b16d9b37f243337d 100644
--- a/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TripController.java
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/controller/TripController.java
@@ -1,10 +1,16 @@
 package com.mobilecomputing.pecunia.controller;
 
+import com.mobilecomputing.pecunia.model.Trip;
+import com.mobilecomputing.pecunia.model.User;
 import com.mobilecomputing.pecunia.repository.TripRepository;
 import org.bson.types.ObjectId;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
 @RestController
 @RequestMapping(value = "/trip", method = RequestMethod.GET)
 public class TripController {
@@ -13,16 +19,48 @@ public class TripController {
     TripRepository tripRepository;
 
     @GetMapping("/getTripById")
-    public String getTripById(@RequestParam String id){
+    public String getTripById(@RequestParam String id) {
 
-        return String.valueOf(tripRepository.findById(new ObjectId(id)));
+        return String.valueOf(tripRepository.findById(id));
     }
 
     @GetMapping("/getAllTrips")
-    public String getAllTrips(){
-        tripRepository.findAll().forEach(trip->{
-            System.out.println(trip.toString());
+    public ArrayList<Trip> getAllTrips() {
+        ArrayList<Trip> response = new ArrayList<>();
+        tripRepository.findAll().forEach(trip -> {
+            response.add(trip);
+        });
+        return response;
+    }
+
+    @PostMapping("/addTrip")
+    public String addTrip(@RequestParam String tripName, @RequestParam String startOfTrip,
+                          @RequestParam String endOfTrip, @RequestParam List<User> tripParticipants) {
+        Trip temp = new Trip(tripName, null, null, tripParticipants, null);
+        tripRepository.save(temp).getTripId();
+        return tripRepository.save(temp).getTripId();
+    }
+
+    @GetMapping("/getTripByUser")
+    public List<Trip> getTripsByUser(@RequestParam String eMail) {
+        ArrayList<Trip> temp = new ArrayList<>();
+        ArrayList<Trip> response = new ArrayList<>();
+        tripRepository.findAll().forEach(trip -> {
+            temp.add(trip);
         });
-        return "to do";
+        for (Trip t : temp) {
+            boolean eMailIsEqual = false;
+            for (User u : t.getTripParticipants()) {
+                if (u.geteMail().equals(eMail)) {
+                    eMailIsEqual = true;
+                    break;
+                }
+            }
+            if (eMailIsEqual) {
+                response.add(t);
+                eMailIsEqual = false;
+            }
+        }
+        return response;
     }
 }
diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/controller/UserController.java b/Backend/src/main/java/com/mobilecomputing/pecunia/controller/UserController.java
index d472e1bc851a2d3f56f367915d45b5654bb9d6e4..b3ecf08c744dfe8887bdec719cf0325af2ba27d2 100644
--- a/Backend/src/main/java/com/mobilecomputing/pecunia/controller/UserController.java
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/controller/UserController.java
@@ -1,47 +1,66 @@
 package com.mobilecomputing.pecunia.controller;
 
+import com.mobilecomputing.pecunia.model.Trip;
 import com.mobilecomputing.pecunia.model.User;
+import com.mobilecomputing.pecunia.repository.TripRepository;
 import com.mobilecomputing.pecunia.repository.UserRepository;
 import org.bson.types.ObjectId;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
 @RestController
 @RequestMapping(value = "/user", method = RequestMethod.GET)
 public class UserController {
     @Autowired
     UserRepository userRepository;
+    @Autowired
+    TripRepository tripRepository;
 
-    @GetMapping("/getById")
-    public String getUserById(@RequestParam String id){
-        return String.valueOf(userRepository.findById(new ObjectId(id)));
+    @GetMapping("/getByEMail")
+    public String getUserByEmail(@RequestParam String eMail){
+        return String.valueOf(userRepository.findById(eMail));
     }
 
     @GetMapping("/getAll")
-    public String getAllUsers(){
-        String response ="";
+    public List<User> getAllUsers(){
+        ArrayList<User> response = new ArrayList<>();
         userRepository.findAll().forEach(user -> {
-            System.out.println(user.toString());
+            response.add(user);
         });
-        return String.valueOf(userRepository.findAll());
+        return response;
     }
 
     @PostMapping("/registrateUser")
     public String registrateUser(@RequestParam String eMail, @RequestParam String name, @RequestParam String surname,
                                  @RequestParam String password){
-        User user = new User();
-        user.seteMail(eMail); // überprüfen ob email schon vergeben ist
-        user.setName(name);
-        user.setSurname(surname);
-        user.setPassword(password);
-
-        userRepository.save(user);
-        return "ok?";
+
+        if (userRepository.findById(eMail).isEmpty()) {
+
+            User user = new User();
+            user.seteMail(eMail); // überprüfen ob email schon vergeben ist
+            user.setName(name);
+            user.setSurname(surname);
+            user.setPassword(password);
+
+            userRepository.save(user);
+            return "ok";
+        }
+        return "error";
+    }
+
+    @PostMapping("/addUserToTrip")
+    public void addUserToTrip(@RequestParam String eMail,@RequestParam String tripId){
+        Optional<Trip> t = tripRepository.findById(tripId);
+        t.get().getTripParticipants().add(userRepository.findById(eMail).get());
     }
 
     @DeleteMapping("/deleteUser")
     public void deleteUser(@RequestParam String eMail){
-        userRepository.deleteById(new ObjectId(eMail));
+        userRepository.deleteById(eMail);
     }
 }
diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/model/Transaction.java b/Backend/src/main/java/com/mobilecomputing/pecunia/model/Transaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..91b83cb9eb35e891db7660ddecf40856bbe0ada4
--- /dev/null
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/model/Transaction.java
@@ -0,0 +1,59 @@
+package com.mobilecomputing.pecunia.model;
+
+import org.springframework.data.annotation.Id;
+
+public class Transaction {
+    @Id
+    String transactionId;
+    private User debtor; //Schuldner
+    private User creditor; // Gläubiger
+    private String currency;
+    private double loan;
+
+    public Transaction(User debtor, User creditor, String currency, double loan) {
+        this.debtor = debtor;
+        this.creditor = creditor;
+        this.currency = currency;
+        this.loan = loan;
+    }
+
+    public String getTransactionId() {
+        return transactionId;
+    }
+
+    public void setTransactionId(String transactionId) {
+        this.transactionId = transactionId;
+    }
+
+    public User getDebtor() {
+        return debtor;
+    }
+
+    public void setDebtor(User debtor) {
+        this.debtor = debtor;
+    }
+
+    public User getCreditor() {
+        return creditor;
+    }
+
+    public void setCreditor(User creditor) {
+        this.creditor = creditor;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public double getLoan() {
+        return loan;
+    }
+
+    public void setLoan(double loan) {
+        this.loan = loan;
+    }
+}
diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/model/Trip.java b/Backend/src/main/java/com/mobilecomputing/pecunia/model/Trip.java
index 6132067564dad02121bae4db983ec44f6712dbe6..aff73af7a5da54162ae15b3c0eb37bb356945bc8 100644
--- a/Backend/src/main/java/com/mobilecomputing/pecunia/model/Trip.java
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/model/Trip.java
@@ -12,13 +12,15 @@ public class Trip {
     private Date startOfTrip;
     private Date endOfTrip;
     private List<User> tripParticipants;
+    private List<Transaction> transactions;
 
-    public Trip(String tripId, String tripName, Date startOfTrip, Date endOfTrip, List<User> tripParticipants) {
-        this.tripId = tripId;
+    public Trip(String tripName, Date startOfTrip, Date endOfTrip, List<User> tripParticipants,
+                List<Transaction> transactions) {
         this.tripName = tripName;
         this.startOfTrip = startOfTrip;
         this.endOfTrip = endOfTrip;
         this.tripParticipants = tripParticipants;
+        this.transactions=transactions;
     }
 
     public String getTripId() {
diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/repository/TripRepository.java b/Backend/src/main/java/com/mobilecomputing/pecunia/repository/TripRepository.java
index e540fa0d3b60d2d067d824be04d258e6dcfb8979..a79b6d7cbc468f1b2ad2f75f20d88139d1299b0f 100644
--- a/Backend/src/main/java/com/mobilecomputing/pecunia/repository/TripRepository.java
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/repository/TripRepository.java
@@ -4,6 +4,6 @@ import com.mobilecomputing.pecunia.model.Trip;
 import org.bson.types.ObjectId;
 import org.springframework.data.repository.CrudRepository;
 
-public interface TripRepository extends CrudRepository<Trip, ObjectId> {
+public interface TripRepository extends CrudRepository<Trip, String> {
 
 }
diff --git a/Backend/src/main/java/com/mobilecomputing/pecunia/repository/UserRepository.java b/Backend/src/main/java/com/mobilecomputing/pecunia/repository/UserRepository.java
index ccc2662873d7d4e8aaaca4265101594a9016300c..3be8ad1cf91cf0b458b2996d65c59de00919e942 100644
--- a/Backend/src/main/java/com/mobilecomputing/pecunia/repository/UserRepository.java
+++ b/Backend/src/main/java/com/mobilecomputing/pecunia/repository/UserRepository.java
@@ -5,5 +5,5 @@ import com.mobilecomputing.pecunia.model.User;
 import org.bson.types.ObjectId;
 import org.springframework.data.repository.CrudRepository;
 
-public interface UserRepository extends CrudRepository<User, ObjectId> {
+public interface UserRepository extends CrudRepository<User, String> {
 }