diff --git a/apps/edr-freight-web/backoffice/src/pages/bookings/BookingRequestDetailPage.tsx b/apps/edr-freight-web/backoffice/src/pages/bookings/BookingRequestDetailPage.tsx
index 66a8a5b48..e77b4c44b 100644
--- a/apps/edr-freight-web/backoffice/src/pages/bookings/BookingRequestDetailPage.tsx
+++ b/apps/edr-freight-web/backoffice/src/pages/bookings/BookingRequestDetailPage.tsx
@@ -1,7 +1,9 @@
import { useNavigate, useParams, useSearchParams } from "react-router-dom";
+import toast from "react-hot-toast";
import {
ArrowLeft,
FileSignature,
+ FileText,
FolderOpen,
Layers,
LayoutGrid,
@@ -50,6 +52,7 @@ import {
useBookingMutations,
} from "@/hooks/bookings/useBookings";
import { useScrollToHash } from "@/hooks/useScrollToHash";
+import { bookingsService } from "@/services/bookings.service";
export default function BookingRequestDetailPage() {
const { id } = useParams<{ id: string }>();
@@ -269,6 +272,33 @@ export default function BookingRequestDetailPage() {
View / sign contract
)}
+ }
+ onClick={async () => {
+ try {
+ const blob =
+ await bookingsService.downloadCarriageAcceptanceSheet(
+ booking.id,
+ );
+ const url = URL.createObjectURL(blob);
+ const a = document.createElement("a");
+ a.href = url;
+ a.download = `carriage-acceptance-${booking.reference}.pdf`;
+ a.click();
+ URL.revokeObjectURL(url);
+ } catch (error) {
+ toast.error(
+ error instanceof Error
+ ? error.message
+ : "Carriage acceptance sheet is not available yet",
+ );
+ }
+ }}
+ >
+ Carriage acceptance sheet
+
{booking.customsClearingEnabled && (