diff --git a/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java b/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java
index 93be80bd15352ab04be7eb1ce9973dfc36a142da..56da7c497663249879580509de995f34f592c730 100644
--- a/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java
+++ b/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java
@@ -7,6 +7,7 @@ import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
@@ -46,4 +47,22 @@ public class CampaignResource {
     public Campaign addCampaign(Campaign campaign) {
         return campaignService.addCampaign(campaign);
     }
+
+    @PUT
+    @Path("/{campaignId}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Campaign updateCampaign(@PathParam(value = "campaignId") Long campaignId,
+            Campaign newCampaign) {
+        Campaign campaign = campaignService.getCampaign(campaignId);
+        campaign.setName(newCampaign.getName());
+        campaign.setDonationMinimum(newCampaign.getDonationMinimum());
+        campaign.setTargetAmount(newCampaign.getTargetAmount());
+        
+        newCampaign = campaignService.updateCampaign(campaign);
+        newCampaign.setDonations(null);
+        newCampaign.setOrganizer(null);
+        
+        return newCampaign;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/de/dpunkt/myaktion/resources/DonationResource.java b/src/main/java/de/dpunkt/myaktion/resources/DonationResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..36a92283b0e3d456dd5a7de6baff3d29b0443647
--- /dev/null
+++ b/src/main/java/de/dpunkt/myaktion/resources/DonationResource.java
@@ -0,0 +1,60 @@
+package de.dpunkt.myaktion.resources;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import de.dpunkt.myaktion.model.Account;
+import de.dpunkt.myaktion.model.Donation;
+import de.dpunkt.myaktion.model.Donation.Status;
+import de.dpunkt.myaktion.services.DonationService;
+
+@Path("/")
+public class DonationResource {
+    @Inject
+    private DonationService donationService;
+
+    @GET
+    @Path("/organizer/donation/list/{campaignId}")
+    @Produces(MediaType.APPLICATION_JSON)
+    public List<Donation> getDonationList(@PathParam(value = "campaignId") Long campaignId) {
+        List<Donation> donations = donationService.getDonationList(campaignId);
+        donations.forEach(donation -> donation.setCampaign(null));
+
+        return donations;
+    }
+
+    @POST
+    @Path("/donation/{campaignId}")
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public void addDonation(@PathParam(value = "campaignId") Long campaignId,
+            @FormParam(value = "donorName") String donorName,
+            @FormParam(value = "amount") Double amount, 
+            @FormParam(value = "iban") String iban,
+            @FormParam(value = "nameOfBank") String nameOfBank,
+            @FormParam(value = "receiptRequested") Boolean receiptRequested) {
+        Donation donation = new Donation();
+        donation.setDonorName(donorName);
+        donation.setAmount(new BigDecimal(amount));
+        
+        Account account = new Account();
+        account.setIban(iban);
+        account.setName(donorName);
+        account.setNameOfBank(nameOfBank);
+        
+        donation.setAccount(account);
+        donation.setReceiptRequested(receiptRequested);
+        donation.setStatus(Status.IN_PROCESS);
+        
+        donationService.addDonation(campaignId, donation);
+    }
+}
diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignService.java b/src/main/java/de/dpunkt/myaktion/services/CampaignService.java
index 2b7e2a04c118ece598b796d3af969e86e4fb2e24..9d1f69678b875c26321a397dc476e2b69bb409b6 100644
--- a/src/main/java/de/dpunkt/myaktion/services/CampaignService.java
+++ b/src/main/java/de/dpunkt/myaktion/services/CampaignService.java
@@ -23,8 +23,8 @@ public interface CampaignService {
 
     void deleteCampaign(Long campaignId);
     
-    void updateCampaign(Campaign campaign);
-
+    Campaign updateCampaign(Campaign campaign);
+    
     Campaign getCampaign(Long campaignId);
     
     //----------------------------------------------------------------------------------------------
diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java
index e48beb356ae2a1db2d246ed49016dd13d4522b70..c17f355e171415b8c06e52739b9ee61a5e167dc8 100644
--- a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java
+++ b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java
@@ -64,15 +64,15 @@ public class CampaignServiceBean implements CampaignService {
         Organizer organizer = getLoggedinOrganizer();
         campaign.setOrganizer(organizer);
         entityManager.persist(campaign);
-        
+
         return campaign;
     }
 
     // ----------------------------------------------------------------------------------------------
 
     @Override
-    public void updateCampaign(Campaign campaign) {
-        entityManager.merge(campaign);
+    public Campaign updateCampaign(Campaign campaign) {
+        return entityManager.merge(campaign);
     }
 
     // ----------------------------------------------------------------------------------------------
@@ -83,14 +83,16 @@ public class CampaignServiceBean implements CampaignService {
         entityManager.remove(managedCampaign);
     }
 
+    @Override
     public void deleteCampaign(Long campaignId) {
         Campaign managedCampaign = getCampaign(campaignId);
         entityManager.remove(managedCampaign);
     }
 
+    @Override
     public Campaign getCampaign(Long campaignId) {
         Campaign managedCampaign = entityManager.find(Campaign.class, campaignId);
-  
+
         return managedCampaign;
     }