diff --git a/doc/source/cli/command-objects/credential.rst b/doc/source/cli/command-objects/credential.rst
index 47c847c895..7fe57310f3 100644
--- a/doc/source/cli/command-objects/credential.rst
+++ b/doc/source/cli/command-objects/credential.rst
@@ -19,7 +19,7 @@ Create new credential
 
 .. option:: --type <type>
 
-    New credential type: cert, ec2
+    New credential type: cert, ec2, totp and so on
 
 .. option:: --project <project>
 
@@ -73,7 +73,7 @@ List credentials
 
 .. option:: --type <type>
 
-    Filter credentials by type: cert, ec2
+    Filter credentials by type: cert, ec2, totp and so on
 
 credential set
 --------------
@@ -96,7 +96,7 @@ Set credential properties
 
 .. option:: --type <type>
 
-    New credential type: cert, ec2
+    New credential type: cert, ec2, totp and so on.
 
 .. option:: --data <data>
 
diff --git a/openstackclient/identity/v3/credential.py b/openstackclient/identity/v3/credential.py
index 79ef632cc4..981f940aae 100644
--- a/openstackclient/identity/v3/credential.py
+++ b/openstackclient/identity/v3/credential.py
@@ -43,8 +43,7 @@ class CreateCredential(command.ShowOne):
             '--type',
             default="cert",
             metavar='<type>',
-            choices=['ec2', 'cert'],
-            help=_('New credential type: cert, ec2'),
+            help=_('New credential type: cert, ec2, totp and so on'),
         )
         parser.add_argument(
             'data',
@@ -124,8 +123,7 @@ class ListCredential(command.Lister):
         parser.add_argument(
             '--type',
             metavar='<type>',
-            choices=['ec2', 'cert'],
-            help=_('Filter credentials by type: cert, ec2'),
+            help=_('Filter credentials by type: cert, ec2, totp and so on'),
         )
         return parser
 
@@ -173,9 +171,8 @@ class SetCredential(command.Command):
         parser.add_argument(
             '--type',
             metavar='<type>',
-            choices=['ec2', 'cert'],
             required=True,
-            help=_('New credential type: cert, ec2'),
+            help=_('New credential type: cert, ec2, totp and so on'),
         )
         parser.add_argument(
             '--data',
diff --git a/openstackclient/tests/unit/identity/v3/test_credential.py b/openstackclient/tests/unit/identity/v3/test_credential.py
index 161f048447..de0306dd68 100644
--- a/openstackclient/tests/unit/identity/v3/test_credential.py
+++ b/openstackclient/tests/unit/identity/v3/test_credential.py
@@ -124,20 +124,6 @@ class TestCredentialCreate(TestCredential):
         self.assertEqual(self.columns, columns)
         self.assertEqual(self.data, data)
 
-    def test_credential_create_with_invalid_type(self):
-        arglist = [
-            self.credential.user_id,
-            self.credential.blob,
-            '--type', 'invalid_type',
-        ]
-        verifylist = [
-            ('user', self.credential.user_id),
-            ('data', self.credential.blob),
-            ('type', 'invalid_type'),
-        ]
-        self.assertRaises(utils.ParserException, self.check_parser,
-                          self.cmd, arglist, verifylist)
-
 
 class TestCredentialDelete(TestCredential):
 
diff --git a/releasenotes/notes/bug-1731848-71d0a5fdb1a34a8b.yaml b/releasenotes/notes/bug-1731848-71d0a5fdb1a34a8b.yaml
new file mode 100644
index 0000000000..e36652734e
--- /dev/null
+++ b/releasenotes/notes/bug-1731848-71d0a5fdb1a34a8b.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+  - |
+    Remove the type value limit in credentials when do create,
+    reset or list. Now 'totp' method is supported in keystone
+    project and we could create credentials with 'totp' type.
+    [Bug `1731848 <https://bugs.launchpad.net/bugs/1731848>`_]