diff --git a/docs/documentation/platform/dynamic-secrets/totp.mdx b/docs/documentation/platform/dynamic-secrets/totp.mdx
new file mode 100644
index 000000000..975cb833f
--- /dev/null
+++ b/docs/documentation/platform/dynamic-secrets/totp.mdx
@@ -0,0 +1,79 @@
+---
+title: "TOTP"
+description: "Learn how to dynamically generate time-based one-time passwords."
+---
+
+The Infisical TOTP dynamic secret allows you to generate time-based one-time passwords on demand.
+
+## Prerequisite
+
+- Infisical requires the OTP url from the TOTP provider.
+
+## Set up Dynamic Secrets with TOTP
+
+
+
+ Open the Secret Overview dashboard and select the environment in which you would like to add a dynamic secret.
+
+
+ 
+
+
+ 
+
+
+
+ Name by which you want the secret to be referenced
+
+
+
+ Default time-to-live for a generated secret (it is possible to modify this value when a secret is generate)
+
+
+
+ Maximum time-to-live for a generated secret
+
+
+
+ OTP url from the TOTP provider
+
+
+ 
+
+
+
+ After submitting the form, you will see a dynamic secret created in the dashboard.
+
+
+
+ Once you've successfully configured the dynamic secret, you're ready to generate on-demand TOTPs.
+ To do this, simply click on the 'Generate' button which appears when hovering over the dynamic secret item.
+ Alternatively, you can initiate the creation of a new lease by selecting 'New Lease' from the dynamic secret lease list section.
+
+ 
+ 
+
+
+ Once you click the `Generate` or the `New Lease` button, a new secret lease will be generated and the TOTP will be shown to you.
+
+ 
+
+
+
+
+## Audit or Revoke Leases
+
+Once you have created one or more leases, you will be able to access them by clicking on the respective dynamic secret item on the dashboard.
+This will allow you see the lease details and delete the lease ahead of its expiration time.
+
+
+
+## Renew Leases
+
+To extend the life of the generated dynamic secret lease past its initial time to live, simply click on the **Renew** as illustrated below.
+
+
+
+ Lease renewals cannot exceed the maximum TTL set when configuring the dynamic
+ secret.
+
diff --git a/docs/images/platform/dynamic-secrets/dynamic-secret-modal-totp.png b/docs/images/platform/dynamic-secrets/dynamic-secret-modal-totp.png
new file mode 100644
index 000000000..53326ebe2
Binary files /dev/null and b/docs/images/platform/dynamic-secrets/dynamic-secret-modal-totp.png differ
diff --git a/docs/images/platform/dynamic-secrets/dynamic-secret-setup-modal-totp.png b/docs/images/platform/dynamic-secrets/dynamic-secret-setup-modal-totp.png
new file mode 100644
index 000000000..babfb6ba0
Binary files /dev/null and b/docs/images/platform/dynamic-secrets/dynamic-secret-setup-modal-totp.png differ
diff --git a/docs/images/platform/dynamic-secrets/totp-lease-value.png b/docs/images/platform/dynamic-secrets/totp-lease-value.png
new file mode 100644
index 000000000..af2ffe8e1
Binary files /dev/null and b/docs/images/platform/dynamic-secrets/totp-lease-value.png differ
diff --git a/docs/mint.json b/docs/mint.json
index f070ae88a..e4e487915 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -189,7 +189,8 @@
"documentation/platform/dynamic-secrets/azure-entra-id",
"documentation/platform/dynamic-secrets/ldap",
"documentation/platform/dynamic-secrets/sap-hana",
- "documentation/platform/dynamic-secrets/snowflake"
+ "documentation/platform/dynamic-secrets/snowflake",
+ "documentation/platform/dynamic-secrets/totp"
]
},
"documentation/platform/project-templates",
diff --git a/frontend/src/views/SecretMainPage/components/ActionBar/CreateDynamicSecretForm/TotpInputForm.tsx b/frontend/src/views/SecretMainPage/components/ActionBar/CreateDynamicSecretForm/TotpInputForm.tsx
index 684bc2b88..7ac8ce2cb 100644
--- a/frontend/src/views/SecretMainPage/components/ActionBar/CreateDynamicSecretForm/TotpInputForm.tsx
+++ b/frontend/src/views/SecretMainPage/components/ActionBar/CreateDynamicSecretForm/TotpInputForm.tsx
@@ -171,7 +171,7 @@ export const TotpInputForm = ({
defaultValue=""
render={({ field, fieldState: { error } }) => (
(