diff --git a/src/main/java/com/kms/dto/payment/PaymentStatusBatchResp.java b/src/main/java/com/kms/dto/payment/PaymentStatusBatchResp.java
new file mode 100644
index 0000000000000000000000000000000000000000..cae6d38e528d3eb7bb85df69f98c7c4c30a027e3
--- /dev/null
+++ b/src/main/java/com/kms/dto/payment/PaymentStatusBatchResp.java
@@ -0,0 +1,26 @@
+package com.kms.dto.payment;
+
+import lombok.*;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class PaymentStatusBatchResp {
+
+    private String message;
+    private PaymentWrapper[] paidList;
+
+    @Getter
+    @Setter
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Builder
+    public static class PaymentWrapper {
+
+        private Integer paymentId;
+        private Boolean paid;
+
+    }
+}
diff --git a/src/main/java/com/kms/service/PaymentService.java b/src/main/java/com/kms/service/PaymentService.java
index 3687d359392abcbd3f318fb86a747079c9b00034..0b46424d1a8cc821c71b5c80e180cd9dd52f6425 100644
--- a/src/main/java/com/kms/service/PaymentService.java
+++ b/src/main/java/com/kms/service/PaymentService.java
@@ -2,9 +2,7 @@ package com.kms.service;
 
 import com.j256.ormlite.dao.Dao;
 import com.kms.crosscut.SoapFaultHelper;
-import com.kms.dto.payment.PaymentInitReq;
-import com.kms.dto.payment.PaymentInitResp;
-import com.kms.dto.payment.PaymentStatusResp;
+import com.kms.dto.payment.*;
 import com.kms.model.Payment;
 import lombok.RequiredArgsConstructor;
 
@@ -15,6 +13,7 @@ import javax.jws.WebService;
 import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @WebService
 @HandlerChain(file = "handlers.xml")
@@ -70,6 +69,26 @@ public class PaymentService {
         }
     }
 
+    @WebMethod
+    public PaymentStatusBatchResp checkPaymentStatusBatch(@WebParam(name = "paymentIds") List<Integer> paymentIds) {
+        List<Payment> payments = paymentIds.stream().map(paymentId -> {
+            try {
+                return paymentDao.queryForId(paymentId);
+            } catch (SQLException e) {
+                return null;
+            }
+        }).collect(Collectors.toList());
+
+        if (payments.isEmpty()) {
+            return new PaymentStatusBatchResp("Payment ids not found or unexpected error has happened", null);
+        }
+        return new PaymentStatusBatchResp(null, payments.stream()
+                .map(payment -> PaymentStatusBatchResp.PaymentWrapper.builder()
+                            .paymentId(payment.getPaymentId())
+                            .paid(payment.isPaid())
+                            .build()).toArray(PaymentStatusBatchResp.PaymentWrapper[]::new));
+    }
+
     private void verifyInitPaymentData(PaymentInitReq req) {
         if (req == null) {
             SoapFaultHelper.throwFault("InvalidRequest", "Request is empty");