diff --git a/pkg/morph/client/container/wrapper/container.go b/pkg/morph/client/container/wrapper/container.go
index aa49a58e8..c922cac30 100644
--- a/pkg/morph/client/container/wrapper/container.go
+++ b/pkg/morph/client/container/wrapper/container.go
@@ -7,6 +7,7 @@ import (
 
 	"github.com/nspcc-dev/neofs-api-go/pkg"
 	"github.com/nspcc-dev/neofs-api-go/pkg/container"
+	cid "github.com/nspcc-dev/neofs-api-go/pkg/container/id"
 	"github.com/nspcc-dev/neofs-api-go/pkg/owner"
 	v2refs "github.com/nspcc-dev/neofs-api-go/v2/refs"
 	core "github.com/nspcc-dev/neofs-node/pkg/core/container"
@@ -22,7 +23,7 @@ var (
 // along with sig.Key() and sig.Sign().
 //
 // Returns error if container is nil.
-func Put(w *Wrapper, cnr *container.Container, sig *pkg.Signature) (*container.ID, error) {
+func Put(w *Wrapper, cnr *container.Container) (*cid.ID, error) {
 	if cnr == nil {
 		return nil, errNilArgument
 	}
@@ -32,12 +33,14 @@ func Put(w *Wrapper, cnr *container.Container, sig *pkg.Signature) (*container.I
 		return nil, fmt.Errorf("can't marshal container: %w", err)
 	}
 
+	sig := cnr.Signature()
+
 	err = w.Put(data, sig.Key(), sig.Sign())
 	if err != nil {
 		return nil, err
 	}
 
-	id := container.NewID()
+	id := cid.New()
 	id.SetSHA256(sha256.Sum256(data))
 
 	return id, nil
diff --git a/pkg/services/container/morph/executor.go b/pkg/services/container/morph/executor.go
index d17d60138..bda49b173 100644
--- a/pkg/services/container/morph/executor.go
+++ b/pkg/services/container/morph/executor.go
@@ -30,9 +30,11 @@ func (s *morphExecutor) Put(ctx context.Context, body *container.PutRequestBody)
 		return nil, fmt.Errorf("invalid format of the container structure: %w", err)
 	}
 
-	sig := body.GetSignature()
+	cnr.SetSignature(
+		pkg.NewSignatureFromV2(body.GetSignature()),
+	)
 
-	cid, err := wrapper.Put(s.wrapper, cnr, pkg.NewSignatureFromV2(sig))
+	cid, err := wrapper.Put(s.wrapper, cnr)
 	if err != nil {
 		return nil, err
 	}