diff --git a/silkaj/revocation.py b/silkaj/revocation.py
index 9ec1fe3db4c8e5e5c374eaf698dd7d852e534d91..f26422d640fec9e02c4758cbc659922282ea34c9 100644
--- a/silkaj/revocation.py
+++ b/silkaj/revocation.py
@@ -16,6 +16,7 @@
 
 import sys
 from pathlib import Path
+from typing import Dict
 
 import click
 from duniterpy.api import bma
@@ -42,7 +43,7 @@ REVOCATION_LOCAL_PATH = "revocation.txt"
     default=REVOCATION_LOCAL_PATH,
 )
 @click.pass_context
-def save(ctx: click.core.Context, file: str):
+def save(ctx: click.Context, file: str) -> None:
     currency = get_currency()
 
     key = auth.auth_method()
@@ -53,7 +54,6 @@ def save(ctx: click.core.Context, file: str):
 
     if ctx.obj["DRY_RUN"]:
         click.echo(rev_doc.signed_raw())
-        return SUCCESS_EXIT_STATUS
 
     idty_table = idty_tools.display_identity(rev_doc.identity)
     click.echo(idty_table.draw())
@@ -65,7 +65,6 @@ def save(ctx: click.core.Context, file: str):
         save_doc(file, rev_doc.signed_raw(), key.pubkey)
     else:
         click.echo("Ok, goodbye!")
-        return SUCCESS_EXIT_STATUS
 
 
 @click.command(
@@ -73,7 +72,7 @@ def save(ctx: click.core.Context, file: str):
     help="Create and publish revocation document. Will revoke the identity immediately.",
 )
 @click.pass_context
-def revoke_now(ctx: click.core.Context):
+def revoke_now(ctx: click.Context) -> None:
     currency = get_currency()
 
     warn_before_dry_run_or_display(ctx)
@@ -86,7 +85,6 @@ def revoke_now(ctx: click.core.Context):
 
     if ctx.obj["DRY_RUN"]:
         click.echo(rev_doc.signed_raw())
-        return SUCCESS_EXIT_STATUS
 
     idty_table = idty_tools.display_identity(rev_doc.identity)
     click.echo(idty_table.draw())
@@ -107,12 +105,11 @@ Optionnaly takes the document filename.",
     default=REVOCATION_LOCAL_PATH,
 )
 @click.pass_context
-def verify(ctx: click.core.Context, file: str):
+def verify(ctx: click.Context, file: str) -> None:
     rev_doc = verify_document(file)
 
     if ctx.obj["DRY_RUN"]:
         click.echo(rev_doc.signed_raw())
-        return SUCCESS_EXIT_STATUS
 
     idty_table = idty_tools.display_identity(rev_doc.identity)
     click.echo(idty_table.draw())
@@ -120,7 +117,6 @@ def verify(ctx: click.core.Context, file: str):
         click.echo(rev_doc.signed_raw())
 
     click.echo("Revocation document is valid.")
-    return SUCCESS_EXIT_STATUS
 
 
 @click.command(
@@ -133,13 +129,13 @@ Optionnaly takes the document filename.",
     default=REVOCATION_LOCAL_PATH,
 )
 @click.pass_context
-def publish(ctx: click.core.Context, file: str):
+def publish(ctx: click.Context, file: str) -> None:
+
     warn_before_dry_run_or_display(ctx)
 
     rev_doc = verify_document(file)
     if ctx.obj["DRY_RUN"]:
         click.echo(rev_doc.signed_raw())
-        return SUCCESS_EXIT_STATUS
 
     idty_table = idty_tools.display_identity(rev_doc.identity)
     click.echo(idty_table.draw())
@@ -150,12 +146,12 @@ def publish(ctx: click.core.Context, file: str):
     send_document(bma.wot.revoke, rev_doc)
 
 
-def warn_before_dry_run_or_display(ctx):
+def warn_before_dry_run_or_display(ctx: click.Context) -> None:
     if ctx.obj["DRY_RUN"]:
         click.echo("WARNING: the document will only be displayed and will not be sent.")
 
 
-def warn_before_sending_document():
+def warn_before_sending_document() -> None:
     click.secho("/!\\WARNING/!\\", blink=True, fg="red")
     click.echo(
         "This identity will be revoked.\n\
@@ -165,7 +161,7 @@ All currently sent certifications will remain valid until they expire."
     tui.send_doc_confirmation("revocation document immediately")
 
 
-def create_revocation_doc(id, pubkey: str, currency: str):
+def create_revocation_doc(id: Dict, pubkey: str, currency: str) -> Revocation:
     """
     Creates an unsigned revocation document.
     id is the dict object containing id infos from request wot.requirements
@@ -183,7 +179,7 @@ def create_revocation_doc(id, pubkey: str, currency: str):
     )
 
 
-def save_doc(path: str, content: str, pubkey: str):
+def save_doc(path: str, content: str, pubkey: str) -> None:
     pubkey_cksum = tui.gen_pubkey_checksum(pubkey)
     rev_path = Path(path)
     # Ask confirmation if the file exists
@@ -202,10 +198,9 @@ generated revocation document corresponding to {pubkey_cksum} public key?"
     click.echo(
         f"Revocation document file stored into `{path}` for following public key: {pubkey_cksum}"
     )
-    return SUCCESS_EXIT_STATUS
 
 
-def verify_document(doc: str):
+def verify_document(doc: str) -> Revocation:
     """
     This checks that:
       - that the revocation signature is valid.
diff --git a/tests/test_revocation.py b/tests/test_revocation.py
index 956a5d7a700be6887ddadaf6312d5028e2197026..9056f962bed70bba12719f9e96dd0ae14665638b 100644
--- a/tests/test_revocation.py
+++ b/tests/test_revocation.py
@@ -367,10 +367,9 @@ def test_revocation_cli_save(display, dry_run, file, user_input, expected, monke
             "",
             [
                 "Version: 10",
-            ],
-            [
                 "Revocation document is valid.\n",
             ],
+            [],
         ),
         (
             False,