diff --git a/CHANGELOG.md b/CHANGELOG.md
index 028841b6d0c7..05b009f586ef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -38,8 +38,10 @@ Ref: https://keepachangelog.com/en/1.0.0/
 
 ### Bug Fixes
 
-  * (x/auth) [\#8287](https://github.com/cosmos/cosmos-sdk/pull/8287) Fix `tx sign --signature-only` to return correct sequence value in signature.
-  * (x/ibc) [\#8341](https://github.com/cosmos/cosmos-sdk/pull/8341) Fix query latest consensus state.
+* (x/auth) [\#8287](https://github.com/cosmos/cosmos-sdk/pull/8287) Fix `tx sign --signature-only` to return correct sequence value in signature.
+* (x/ibc) [\#8341](https://github.com/cosmos/cosmos-sdk/pull/8341) Fix query latest consensus state.
+* (types/errors) [\#8355][https://github.com/cosmos/cosmos-sdk/pull/8355] Fix errorWrap `Is` method.
+
 
 
 ## [v0.40.0](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.40.0) - 2021-01-08
diff --git a/types/errors/errors.go b/types/errors/errors.go
index d08412524c40..1aa68816ccbf 100644
--- a/types/errors/errors.go
+++ b/types/errors/errors.go
@@ -318,12 +318,11 @@ func (e *wrappedError) Cause() error {
 
 // Is reports whether any error in e's chain matches a target.
 func (e *wrappedError) Is(target error) bool {
-	if target == nil {
-		return e == target
+	if e == target {
+		return true
 	}
 
 	w := e.Cause()
-
 	for {
 		if w == target {
 			return true
diff --git a/types/errors/errors_test.go b/types/errors/errors_test.go
index 7852f8168a7e..ea0e063c3a52 100644
--- a/types/errors/errors_test.go
+++ b/types/errors/errors_test.go
@@ -161,17 +161,24 @@ func (s *errorsTestSuite) TestWrapEmpty() {
 }
 
 func (s *errorsTestSuite) TestWrappedIs() {
+	require := s.Require()
 	err := Wrap(ErrTxTooLarge, "context")
-	s.Require().True(stdlib.Is(err, ErrTxTooLarge))
+	require.True(stdlib.Is(err, ErrTxTooLarge))
 
 	err = Wrap(err, "more context")
-	s.Require().True(stdlib.Is(err, ErrTxTooLarge))
+	require.True(stdlib.Is(err, ErrTxTooLarge))
 
 	err = Wrap(err, "even more context")
-	s.Require().True(stdlib.Is(err, ErrTxTooLarge))
+	require.True(stdlib.Is(err, ErrTxTooLarge))
 
 	err = Wrap(ErrInsufficientFee, "...")
-	s.Require().False(stdlib.Is(err, ErrTxTooLarge))
+	require.False(stdlib.Is(err, ErrTxTooLarge))
+
+	errs := stdlib.New("other")
+	require.True(stdlib.Is(errs, errs))
+
+	errw := &wrappedError{"msg", errs}
+	require.True(errw.Is(errw), "should match itself")
 }
 
 func (s *errorsTestSuite) TestWrappedIsMultiple() {