diff --git a/setra_client/client.py b/setra_client/client.py
index 9c887fed4851ed4a0526d13a3c0318e873414b02..74e384a63054191de2cc9b33e98322aac22fdd5e 100644
--- a/setra_client/client.py
+++ b/setra_client/client.py
@@ -41,6 +41,7 @@ class SetraEndpoints:
                  transaction_url='api/transaction/',
                  voucher_url='api/voucher/',
                  new_batch_url='api/addtrans/',
+                 put_batch_url='api/addtrans/',
                  batch_complete_url='api/batch_complete/',
                  batch_error_url="api/batch_error/",
                  parameters_url="api/parameters/",
@@ -50,6 +51,7 @@ class SetraEndpoints:
         self.transaction_url = transaction_url
         self.voucher_url = voucher_url
         self.new_batch_url = new_batch_url
+        self.put_batch_url = put_batch_url
         self.batch_complete_url = batch_complete_url
         self.batch_error_url = batch_error_url
         self.parameters_url = parameters_url
@@ -95,6 +97,9 @@ class SetraEndpoints:
     def post_new_batch(self):
         return urllib.parse.urljoin(self.baseurl, self.new_batch_url)
 
+    def put_update_batch(self):
+        return urllib.parse.urljoin(self.baseurl, self.new_batch_url)
+
     def batch_complete(self, batch_id: str):
         """
         URL for Batch endpoint
@@ -269,6 +274,25 @@ class SetraClient(object):
             response.raise_for_status()
             return response
 
+    def put_update_batch(self, batchdata: Batch):
+        """
+        PUT updates an existing batch with vouchers and transactions,
+        if the batch exists in setra, and has status=created, or validation failed.
+        Returns 404 if no batch was found, 202 for successful update, or 409 if batch was found, but
+        did not meet the status criteria mentioned above.
+        """
+        url = self.urls.put_update_batch()
+        headers = {'Content-Type': 'application/json'}
+        response = self.put(url,
+                             data=batchdata.json(),
+                             headers=headers,
+                             return_response=True)
+        if response.status_code in (409, 202):
+            return 'OK'
+        else:
+            response.raise_for_status()
+            return response
+
     def get_batch_complete(self, batch_id: str):
         """
         GETs complete batch (with vouchers and transactions)