diff --git a/auth0/v3/authentication/token_verifier.py b/auth0/v3/authentication/token_verifier.py
index ea411c0..1f44c08 100644
--- a/auth0/v3/authentication/token_verifier.py
+++ b/auth0/v3/authentication/token_verifier.py
@@ -229,6 +229,9 @@ class TokenVerifier():
             organization (str, optional): The expected organization ID (org_id) claim value. This should be specified
             when logging in to an organization.
 
+        Returns:
+            the decoded payload from the token
+
         Raises:
             TokenValidationError: when the token cannot be decoded, the token signing algorithm is not the expected one,
             the token signature is invalid or the token has a claim missing or with unexpected value.
@@ -244,6 +247,8 @@ class TokenVerifier():
         # Verify claims
         self._verify_payload(payload, nonce, max_age, organization)
 
+        return payload
+
     def _verify_payload(self, payload, nonce=None, max_age=None, organization=None):
         try:
             # on Python 2.7, 'str' keys as parsed as 'unicode'

diff --git a/auth0/v3/test/authentication/test_token_verifier.py b/auth0/v3/test/authentication/test_token_verifier.py
index 7ff0eee..d1306d3 100644
--- a/auth0/v3/test/authentication/test_token_verifier.py
+++ b/auth0/v3/test/authentication/test_token_verifier.py
@@ -390,7 +390,7 @@ class TestTokenVerifier(unittest.TestCase):
             audience=expectations['audience']
         )
         tv._clock = MOCKED_CLOCK
-        tv.verify(token, organization='org_123')    
+        tv.verify(token, organization='org_123')
 
     def test_fails_when_org_specified_but_not_present(self):
         token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhdXRoMHxzZGs0NThma3MiLCJhdWQiOiJ0b2tlbnMtdGVzdC0xMjMiLCJpc3MiOiJodHRwczovL3Rva2Vucy10ZXN0LmF1dGgwLmNvbS8iLCJleHAiOjE1ODc3NjUzNjEsImlhdCI6MTU4NzU5MjU2MX0.wotJnUdD5IfdZMewF_-BnHc0pI56uwzwr5qaSXvSu9w"
@@ -402,4 +402,22 @@ class TestTokenVerifier(unittest.TestCase):
 
     def test_fails_when_org_specified_but_does_not_match(self):
         token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhdXRoMHxzZGs0NThma3MiLCJhdWQiOiJ0b2tlbnMtdGVzdC0xMjMiLCJvcmdfaWQiOiJvcmdfMTIzIiwiaXNzIjoiaHR0cHM6Ly90b2tlbnMtdGVzdC5hdXRoMC5jb20vIiwiZXhwIjoxNTg3NzY1MzYxLCJpYXQiOjE1ODc1OTI1NjF9.hjSPgJpg0Dn2z0giCdGqVLD5Kmqy_yMYlSkgwKD7ahQ"
-        self.assert_fails_with_error(token, 'Organization (org_id) claim mismatch in the ID token; expected "org_abc", found "org_123"', signature_verifier=SymmetricSignatureVerifier(HMAC_SHARED_SECRET), organization='org_abc')
\ No newline at end of file
+        self.assert_fails_with_error(token, 'Organization (org_id) claim mismatch in the ID token; expected "org_abc", found "org_123"', signature_verifier=SymmetricSignatureVerifier(HMAC_SHARED_SECRET), organization='org_abc')
+
+    def test_verify_returns_payload(self):
+        token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhdXRoMHxzZGs0NThma3MiLCJhdWQiOiJ0b2tlbnMtdGVzdC0xMjMiLCJvcmdfaWQiOiJvcmdfMTIzIiwiaXNzIjoiaHR0cHM6Ly90b2tlbnMtdGVzdC5hdXRoMC5jb20vIiwiZXhwIjoxNTg3NzY1MzYxLCJpYXQiOjE1ODc1OTI1NjF9.hjSPgJpg0Dn2z0giCdGqVLD5Kmqy_yMYlSkgwKD7ahQ"
+        sv = SymmetricSignatureVerifier(HMAC_SHARED_SECRET)
+        tv = TokenVerifier(
+            signature_verifier=sv,
+            issuer=expectations['issuer'],
+            audience=expectations['audience']
+        )
+        tv._clock = MOCKED_CLOCK
+        response = tv.verify(token)
+        self.assertIn('sub', response);
+        self.assertIn('aud', response);
+        self.assertIn('org_id', response);
+        self.assertIn('iss', response);
+        self.assertIn('exp', response);
+        self.assertIn('iat', response);
+        self.assertEqual('org_123', response['org_id'])

Returning boolean on token validator
Hi,

I'm using the token validator of the authentication submodule. It's raising a TokenValidationError if validation failed and returning nothing (so the method returning None by python internals) if validation success.

I'm not sure is it a good idea. If I use this method inside an if condition and assume the token is valid the condition won't work. Because it will return None which is equal to False.

In my opinion, the method should return True when a token is validated. And IMHO it should return False instead of raising an error, but it will be a breaking change. So I'm not sure is it necessary.
auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_verify_returns_payload
auth0/v3/test/authentication/test_token_verifier.py::TestSignatureVerifier::test_asymmetric_verifier_fetches_key auth0/v3/test/authentication/test_token_verifier.py::TestSignatureVerifier::test_asymmetric_verifier_uses_rs256_alg auth0/v3/test/authentication/test_token_verifier.py::TestSignatureVerifier::test_fail_at_creation_with_invalid_algorithm auth0/v3/test/authentication/test_token_verifier.py::TestSignatureVerifier::test_fails_with_none_algorithm auth0/v3/test/authentication/test_token_verifier.py::TestSignatureVerifier::test_symmetric_verifier_fetches_key auth0/v3/test/authentication/test_token_verifier.py::TestSignatureVerifier::test_symmetric_verifier_uses_hs256_alg auth0/v3/test/authentication/test_token_verifier.py::TestJwksFetcher::test_fails_to_fetch_jwks_json_after_retrying_twice auth0/v3/test/authentication/test_token_verifier.py::TestJwksFetcher::test_fetches_jwks_json_forced_on_cache_miss auth0/v3/test/authentication/test_token_verifier.py::TestJwksFetcher::test_fetches_jwks_json_once_on_cache_miss auth0/v3/test/authentication/test_token_verifier.py::TestJwksFetcher::test_get_jwks_json_once_on_cache_hit auth0/v3/test/authentication/test_token_verifier.py::TestJwksFetcher::test_get_jwks_json_twice_on_cache_expired auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_HS256_token_signature_fails auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_HS256_token_signature_passes auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_RS256_token_signature_fails auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_RS256_token_signature_passes auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_err_token_empty auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_err_token_format_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_at_creation_with_invalid_signature_verifier auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_when_max_age_sent_with_auth_time_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_when_max_age_sent_with_auth_time_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_when_org_specified_but_does_not_match auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_when_org_specified_but_not_ auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_when_org_specified_but_not_present auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_algorithm_not_supported auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_aud_array_and_azp_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_aud_array_and_azp_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_aud_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_aud_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_exp_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_exp_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_iat_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_iss_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_iss_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_nonce_invalid auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_nonce_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_fails_with_sub_missing auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_passes_when_nonce_missing_but_not_required auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_passes_when_org_present_and_matches auth0/v3/test/authentication/test_token_verifier.py::TestTokenVerifier::test_passes_when_org_present_but_not_required