diff --git a/docker-compose.yml b/docker-compose.yml
index 2fd3e88dced2ac623ea78cbb9316012332a566d6..ac03d85b81d00dfeadb600195e277c7dd4b04195 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -36,6 +36,7 @@ services:
       dockerfile: Dockerfile
     environment:
       REST_API_KEY: "REST_API_KEY"
+      PDF_FILE_LOCATION: "/opt/saved_history"
       MONOLITH_API_KEY: "MONOLITH_API_KEY"
       sender_email: kms.bizzzzzz@gmail.com
       sender_password:
diff --git a/src/main/java/com/kms/service/PaymentHistoryService.java b/src/main/java/com/kms/service/PaymentHistoryService.java
index 04f3f90f92dd0b38f2f4cbe5b724b1e0a0867069..1c5034b82be890f08a1a7923b56e887a4cc87a62 100644
--- a/src/main/java/com/kms/service/PaymentHistoryService.java
+++ b/src/main/java/com/kms/service/PaymentHistoryService.java
@@ -4,7 +4,6 @@ import com.j256.ormlite.dao.Dao;
 import com.kms.crosscut.SoapFaultHelper;
 import com.kms.dto.EmailReq;
 import com.kms.dto.payment.PaymentHistoryResp;
-
 import com.kms.model.Payment;
 import com.kms.service.helper.PaymentHistoryCacheHelper;
 import com.kms.util.PdfUtil;
@@ -15,6 +14,7 @@ import freemarker.template.TemplateExceptionHandler;
 import lombok.RequiredArgsConstructor;
 
 import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
 import javax.annotation.Resource;
 import javax.jws.HandlerChain;
 import javax.jws.WebMethod;
@@ -23,9 +23,7 @@ import javax.jws.WebService;
 import javax.xml.bind.annotation.XmlMimeType;
 import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.handler.MessageContext;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import javax.xml.ws.soap.MTOM;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.sql.SQLException;
@@ -39,6 +37,7 @@ import java.util.stream.Collectors;
 @WebService
 @RequiredArgsConstructor
 @HandlerChain(file = "handlers.xml")
+@MTOM(threshold = 512)
 public class PaymentHistoryService {
 
     @Resource
@@ -153,8 +152,8 @@ public class PaymentHistoryService {
                 SoapFaultHelper.throwFault("UnexpectedError", "Unexpected error has happened.");
             }
             return getPdfDataHandler(filePath);
-        } catch (SQLException | TemplateException | IOException ignored) {
-            System.out.println(ignored);
+        } catch (SQLException | TemplateException | IOException e) {
+            System.out.println(e.getMessage());
             SoapFaultHelper.throwFault("UnexpectedError", "Unexpected error has happened.");
         }
 
@@ -162,15 +161,7 @@ public class PaymentHistoryService {
     }
 
     private DataHandler getPdfDataHandler(String filePath) {
-        File file = new File(filePath);
-        byte[] byteArr = new byte[(int) file.length()];
-        try (FileInputStream fileInputStream = new FileInputStream(file)) {
-            fileInputStream.read(byteArr);
-        } catch (IOException e) {
-            SoapFaultHelper.throwFault("UnexpectedError", "Unexpected error has happened.");
-        }
-
-        return new DataHandler(byteArr, "application/pdf");
+        return new DataHandler(new FileDataSource(filePath));
     }
 
     private String formPdfFilename(String initiatorId) {
diff --git a/src/main/java/com/kms/util/PdfUtil.java b/src/main/java/com/kms/util/PdfUtil.java
index d4b8393a417ce1f7d27a19eaa069b702ce4d4fa5..e72283623db0a6732a92102ccf118ce1f08b3cb6 100644
--- a/src/main/java/com/kms/util/PdfUtil.java
+++ b/src/main/java/com/kms/util/PdfUtil.java
@@ -12,7 +12,17 @@ import java.nio.file.Files;
 
 public class PdfUtil {
 
-    private static final String PDF_FILE_LOCATION = System.getenv("PDF_FILE_LOCATION");
+    private static final String PDF_FILE_LOCATION;
+
+    static {
+        String pdfFileLocation = System.getenv("PDF_FILE_LOCATION");
+
+        if (!pdfFileLocation.endsWith("/")) {
+            pdfFileLocation += "/";
+        }
+
+        PDF_FILE_LOCATION = pdfFileLocation;
+    }
 
     public static void writePdfToFile(String html, String filename) {
         final File file = new File(PDF_FILE_LOCATION+filename);