diff --git a/dapps/valuetransfers/packages/tangle/errors.go b/dapps/valuetransfers/packages/tangle/errors.go
index 935661ea0a2d659f9d37c6edad5ed3260af28983..124ee4c6663fdac70830372b902ec366e1a3c0be 100644
--- a/dapps/valuetransfers/packages/tangle/errors.go
+++ b/dapps/valuetransfers/packages/tangle/errors.go
@@ -14,4 +14,9 @@ var (
 
 	// ErrDoubleSpendForbidden represents an error that is triggered when a user tries to issue a double spend.
 	ErrDoubleSpendForbidden = errors.New("it is not allowed to issue a double spend")
+
+	// ErrTransactionDoesNotSpendAllFunds is returned if a transaction does not spend all of its inputs.
+	ErrTransactionDoesNotSpendAllFunds = errors.New("transaction does not spend all funds from inputs")
+	// ErrInvalidTransactionSignature is returned if the signature of a transaction is invalid.
+	ErrInvalidTransactionSignature = errors.New("missing or invalid transaction signature")
 )
diff --git a/dapps/valuetransfers/packages/tangle/factory.go b/dapps/valuetransfers/packages/tangle/factory.go
index 106ee55a5b4ff1108e84e18d896dac6f2321e96b..1b82b69f28a86fa4c53961f1d5c760a31cde1c80 100644
--- a/dapps/valuetransfers/packages/tangle/factory.go
+++ b/dapps/valuetransfers/packages/tangle/factory.go
@@ -30,6 +30,12 @@ func NewValueObjectFactory(tangle *Tangle, tipManager *tipmanager.TipManager) *V
 func (v *ValueObjectFactory) IssueTransaction(tx *transaction.Transaction) (valueObject *payload.Payload, err error) {
 	parent1, parent2 := v.tipManager.Tips()
 
+	// validate the transaction signature
+	if !tx.SignaturesValid() {
+		err = ErrInvalidTransactionSignature
+		return
+	}
+
 	// check if the tx that is supposed to be issued is a double spend
 	tx.Inputs().ForEach(func(outputId transaction.OutputID) bool {
 		v.tangle.TransactionOutput(outputId).Consume(func(output *Output) {
diff --git a/dapps/valuetransfers/packages/tangle/tangle.go b/dapps/valuetransfers/packages/tangle/tangle.go
index 877d9fd07fbe2ab0ce64090a473ed3342fd9799e..8a2a93861bfad300986a8a632addbea7ce724614 100644
--- a/dapps/valuetransfers/packages/tangle/tangle.go
+++ b/dapps/valuetransfers/packages/tangle/tangle.go
@@ -21,13 +21,6 @@ import (
 	"github.com/iotaledger/goshimmer/packages/binary/storageprefix"
 )
 
-var (
-	// ErrTransactionDoesNotSpendAllFunds is returned if a transaction does not spend all of its inputs.
-	ErrTransactionDoesNotSpendAllFunds = errors.New("transaction does not spend all funds from inputs")
-	// ErrInvalidTransactionSignature is returned if the signature of a transaction is invalid.
-	ErrInvalidTransactionSignature = errors.New("invalid transaction signatures")
-)
-
 // Tangle represents the value tangle that consists out of value payloads.
 // It is an independent ontology, that lives inside the tangle.
 type Tangle struct {