diff --git a/backend/src/controller/OrderProductController.ts b/backend/src/controller/OrderProductController.ts
index 0f6a21e96696f28d177ed2c7675af1121282c731..75a175696dccfa0aececbdadbd141ea3b08a8954 100644
--- a/backend/src/controller/OrderProductController.ts
+++ b/backend/src/controller/OrderProductController.ts
@@ -24,6 +24,37 @@ class OrderProductController {
         }
     }
 
+    async createOrderProductBulk(req: Request, res: Response) {
+        try {
+            const newOrderProducts = req.body.map(
+                (orderProduct: OrderProduct) => {
+                    const newOrderProduct = new OrderProduct();
+                    newOrderProduct.id_order = orderProduct.id_order;
+                    newOrderProduct.id_product = orderProduct.id_product;
+                    newOrderProduct.num_product = orderProduct.num_product;
+
+                    return newOrderProduct;
+                },
+            );
+
+            console.log(newOrderProducts);
+            await new OrderProductRepo().createOrderProductBulk(
+                newOrderProducts,
+            );
+
+            res.status(201).json({
+                status: "Created!",
+                message: "Successfully created order product batch!",
+            });
+        } catch (error) {
+            console.log(error);
+            res.status(500).json({
+                status: "Internal Server Error!",
+                message: "Internal Server Error!",
+            });
+        }
+    }
+
     async deleteOrderProduct(req: Request, res: Response) {
         try {
             const id_order = parseInt(req.params["id_order"]);
diff --git a/backend/src/repository/OrderProductRepo.ts b/backend/src/repository/OrderProductRepo.ts
index c83e977eea63a39406d3af0e71289c01b8c5187f..ba0d9165139a7f1e80bb20c05e0e9199afc51ae3 100644
--- a/backend/src/repository/OrderProductRepo.ts
+++ b/backend/src/repository/OrderProductRepo.ts
@@ -76,6 +76,28 @@ export default class OrderProductRepo implements IOrderProductRepo {
         }
     }
 
+    async createOrderProductBulk(
+        orderProducts: readonly Partial<OrderProduct>[],
+    ): Promise<void> {
+        try {
+            console.log(orderProducts);
+            const newOrderProducts = orderProducts.map(
+                (orderProduct: Partial<OrderProduct>) => {
+                    return {
+                        id_order: orderProduct.id_order,
+                        id_product: orderProduct.id_product,
+                        num_product: orderProduct.num_product,
+                    };
+                },
+            );
+            await OrderProduct.bulkCreate(newOrderProducts);
+        } catch (error: any) {
+            throw new Error(
+                `Error while creating order product batch: ${error.message}`,
+            );
+        }
+    }
+
     async updateOrderProduct(orderProduct: OrderProduct): Promise<void> {
         try {
             const existingOrderProduct = await OrderProduct.findOne({
diff --git a/backend/src/router/OrderProductRouter.ts b/backend/src/router/OrderProductRouter.ts
index 77a217ec35f860bb4fc2e4b2f7b0db3d669cfae9..cb07760e1408beee560fe5f774fdc113cfe0c541 100644
--- a/backend/src/router/OrderProductRouter.ts
+++ b/backend/src/router/OrderProductRouter.ts
@@ -14,6 +14,10 @@ class OrderProductRoutes extends BaseRoutes {
             validate(createOrderProductSchema),
             OrderProductController.createOrderProduct,
         );
+        this.router.post(
+            "/bulk",
+            OrderProductController.createOrderProductBulk,
+        );
         this.router.patch(
             "/:orderId/:productId",
             validate(updateOrderProductSchema),