diff --git a/apps/dokploy/components/dashboard/billing/trial-banner.tsx b/apps/dokploy/components/dashboard/billing/trial-banner.tsx
new file mode 100644
index 000000000..0c5bfdffb
--- /dev/null
+++ b/apps/dokploy/components/dashboard/billing/trial-banner.tsx
@@ -0,0 +1,34 @@
+import { Rocket } from "lucide-react";
+import { useRouter } from "next/router";
+import { Button } from "@/components/ui/button";
+import { api } from "@/utils/api";
+
+export const TrialBanner = () => {
+ const router = useRouter();
+ const { data: billingStatus } = api.stripe.getBillingStatus.useQuery();
+
+ if (!billingStatus?.isOnTrial) {
+ return null;
+ }
+
+ const daysRemaining = billingStatus.trialDaysRemaining ?? 0;
+
+ return (
+
+
+
+ {daysRemaining > 0
+ ? `You have ${daysRemaining} day${daysRemaining === 1 ? "" : "s"} left in your free trial.`
+ : "Your free trial ends today."}
+
+
+
+ );
+};
diff --git a/apps/dokploy/components/layouts/side.tsx b/apps/dokploy/components/layouts/side.tsx
index 97e0706ba..1e20a0fbe 100644
--- a/apps/dokploy/components/layouts/side.tsx
+++ b/apps/dokploy/components/layouts/side.tsx
@@ -101,6 +101,7 @@ import { authClient } from "@/lib/auth-client";
import { cn } from "@/lib/utils";
import type { AppRouter } from "@/server/api/root";
import { api } from "@/utils/api";
+import { TrialBanner } from "../dashboard/billing/trial-banner";
import { AddOrganization } from "../dashboard/organization/handle-organization";
import { DialogAction } from "../shared/dialog-action";
import { Logo } from "../shared/logo";
@@ -1229,6 +1230,7 @@ export default function Page({ children }: Props) {
+ {isCloud === true && }
{!includesProjects && (