diff --git a/apps/web/src/app/(signing)/sign/[token]/expired/page.tsx b/apps/web/src/app/(signing)/sign/[token]/expired/page.tsx
new file mode 100644
index 000000000..fc74507b0
--- /dev/null
+++ b/apps/web/src/app/(signing)/sign/[token]/expired/page.tsx
@@ -0,0 +1,99 @@
+import Link from 'next/link';
+import { notFound } from 'next/navigation';
+
+import { Trans } from '@lingui/macro';
+import { Clock } from 'lucide-react';
+
+import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
+import { getServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
+import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
+import { isRecipientAuthorized } from '@documenso/lib/server-only/document/is-recipient-authorized';
+import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token';
+import { Badge } from '@documenso/ui/primitives/badge';
+import { Button } from '@documenso/ui/primitives/button';
+
+import { truncateTitle } from '~/helpers/truncate-title';
+
+import { SigningAuthPageView } from '../signing-auth-page';
+
+export type ExpiredSigningPageProps = {
+ params: {
+ token?: string;
+ };
+};
+
+export default async function ExpiredSigningPage({ params: { token } }: ExpiredSigningPageProps) {
+ await setupI18nSSR();
+
+ if (!token) {
+ return notFound();
+ }
+
+ const { user } = await getServerComponentSession();
+
+ const document = await getDocumentAndSenderByToken({
+ token,
+ requireAccessAuth: false,
+ }).catch(() => null);
+
+ if (!document) {
+ return notFound();
+ }
+
+ const truncatedTitle = truncateTitle(document.title);
+
+ const recipient = await getRecipientByToken({ token }).catch(() => null);
+
+ if (!recipient) {
+ return notFound();
+ }
+
+ const isDocumentAccessValid = await isRecipientAuthorized({
+ type: 'ACCESS',
+ documentAuthOptions: document.authOptions,
+ recipient,
+ userId: user?.id,
+ });
+
+ if (!isDocumentAccessValid) {
+ return ;
+ }
+
+ return (
+
+
+ {truncatedTitle}
+
+
+
+
+
+
+ Document Expired
+
+
+
+
+ This document has expired and is no longer available to sign
+
+
+
+
+ {/* TODO: send email to owner when a user tried to sign an expired document??? */}
+ The document owner has been notified. They may send you a new signing link if required.
+
+
+
+
+ No further action is required from you at this time.
+