diff --git a/src/api/Order.ts b/src/api/Order.ts
index 97b8729ce9b504c25d885e23e06f039557d84517..da2a8db2c4e200367ac6cff4519e8cb5e279c543 100644
--- a/src/api/Order.ts
+++ b/src/api/Order.ts
@@ -72,3 +72,16 @@ export async function updateOrderAPI(orderId : number, username : string, status
         throw err;
     }
 }
+
+export async function finishOrderAPI(orderId : number, username : string) {
+    try {
+        const API_URL = REST_URL + "/order/finish-order";
+        const data = {orderId : orderId, username : username};
+        console.log("GOLGOLOG", data);
+        const response = await axios.put(API_URL, data);
+        return response;
+    } catch(err) {
+        alert(err);
+        throw err;
+    }
+}
diff --git a/src/pages/PickedOrder.tsx b/src/pages/PickedOrder.tsx
index dc72fa8e7b40c0ae8a73258a4239515b07817071..60d1a2d6c57a46792cd65c68278a4f685aa6efe3 100644
--- a/src/pages/PickedOrder.tsx
+++ b/src/pages/PickedOrder.tsx
@@ -18,7 +18,7 @@ export default function PickedOrder() {
   useEffect(() => {
     getUserDetail(user.username ? user.username : "").then(
       (userDetail) => {
-        const response = getOrderByCourier(userDetail.data.id);
+        const response = getOrderByCourier(userDetail.data.id ? userDetail.data.id : 0);
         response.then((order) => {
           console.log(order.data);
           setOrders(order.data);
diff --git a/src/pages/PickedOrderDetail.tsx b/src/pages/PickedOrderDetail.tsx
index f7d151377ab0a034de9f38f6f423daa939ffa592..ca6132cbb009d7cd34997c547f9d0cd08550e9a1 100644
--- a/src/pages/PickedOrderDetail.tsx
+++ b/src/pages/PickedOrderDetail.tsx
@@ -19,41 +19,52 @@ import {
 import { useEffect, useState } from 'react'
 import OrderDetail from '../interfaces/OrderDetail';
 import OrderInterface from '../interfaces/OrderInterface';
-import { getOrderById, getOrderDetails, updateOrder } from '../utils/Order';
-import { useParams } from 'react-router-dom';
+import { finishOrder, getOrderById, getOrderDetails, updateOrder } from '../utils/Order';
+import { useNavigate, useParams } from 'react-router-dom';
 import { getUser } from '../utils/LocalStorage';
 
 
 export default function PickedOrderDetail() {
-  const username = getUser();
+  const user = getUser();
   const { id } = useParams();
   const orderId = parseInt(id ? id : "0");
   const [order, setOrder] = useState<OrderInterface>();
   const [orderDetails, setOrderDetails] = useState<OrderDetail[]>([]);
   const [pickupStatus, setPickupStatus] = useState(false);
   const [newDescription, setNewDescription] = useState("");
+  const navigate = useNavigate();
 
   function changeDescription() {
-    if(!username) {
+    if(!user.username) {
       alert("Perlu log in");
       return;
     }
     
-    updateOrder(orderId, username, order?.status ? order.status : "pickup", newDescription);
-    setOrder({...order, keterangan : newDescription})
+    updateOrder(orderId, user.username, order?.status ? order.status : "pickup", newDescription);
+    setOrder({...order, keterangan : newDescription});
   }
 
   function changeTransit() {
-    if(!username) {
+    if(!user.username) {
       alert("Perlu log in");
       return;
     }
     
-    updateOrder(orderId, username, "transit", order?.keterangan ? order.keterangan : "");
-    setOrder({...order, status : "transit"})
+    updateOrder(orderId, user.username, "transit", order?.keterangan ? order.keterangan : "");
+    setOrder({...order, status : "transit"});
     setPickupStatus(false);
   }
 
+  function finishingOrder() {
+    if(!user.username) {
+      alert("Perlu log in");
+      return;
+    }
+
+    finishOrder(orderId, user.username);
+    navigate("/History");
+  }
+
   useEffect(() => {
     const orderResponse = getOrderById(orderId);
     const detailResponse = getOrderDetails(orderId);
@@ -176,7 +187,6 @@ export default function PickedOrderDetail() {
           :
           <>
           </>}
-          {/* TODO : make button functionality */}
           <Button
             display={{ base: 'none', md: 'inline-flex' }}
             fontSize={'sm'}
@@ -186,6 +196,7 @@ export default function PickedOrderDetail() {
             _hover={{
               bg: 'blue.300',
             }}
+            onClick={finishingOrder}
             >
             Selesaikan Pengantaran
           </Button>
diff --git a/src/utils/Order.ts b/src/utils/Order.ts
index 17e235c632c7ef1003cf1683b447521ddcc6c432..ad71991fbc07b6119b60612d508dcb5dde0f0a2b 100644
--- a/src/utils/Order.ts
+++ b/src/utils/Order.ts
@@ -1,4 +1,4 @@
-import { fetchAvailableOrder, fetchOrderByCourier, fetchOrderById, fetchOrderDetails, pickOrderAPI, updateOrderAPI } from "../api/Order";
+import { fetchAvailableOrder, fetchOrderByCourier, fetchOrderById, fetchOrderDetails, finishOrderAPI, pickOrderAPI, updateOrderAPI } from "../api/Order";
 
 export async function getAvailableOrder() {
     const availableOrders = await fetchAvailableOrder();
@@ -29,3 +29,8 @@ export async function updateOrder(orderId : number, username : string, status :
     const response = await updateOrderAPI(orderId, username, status, description);
     return response;
 }
+
+export async function finishOrder(orderId : number, username : string) {
+    const response = await finishOrderAPI(orderId, username);
+    return response;
+}