diff --git a/packages/binary/transaction/payload/valuetransfer/value.go b/packages/binary/transaction/payload/valuetransfer/value.go
index 4f395d1d169aad94a283453676e59cb81f5cf1a8..e433d9dfdf685b012760ea3b396659c616c80289 100644
--- a/packages/binary/transaction/payload/valuetransfer/value.go
+++ b/packages/binary/transaction/payload/valuetransfer/value.go
@@ -1,20 +1,31 @@
 package valuetransfer
 
 import (
+	"sync"
+
 	"github.com/iotaledger/goshimmer/packages/binary/address"
-	"github.com/iotaledger/goshimmer/packages/binary/transaction"
 	"github.com/iotaledger/goshimmer/packages/binary/transaction/payload"
+	"github.com/iotaledger/goshimmer/packages/ledgerstate/transfer"
 )
 
-type ValueTransfer struct{}
+type ValueTransfer struct {
+	inputs      []*transfer.OutputReference
+	inputsMutex sync.RWMutex
+}
 
 var Type = payload.Type(1)
 
 func New() *ValueTransfer {
-	return &ValueTransfer{}
+	return &ValueTransfer{
+		inputs: make([]*transfer.OutputReference, 0),
+	}
 }
 
-func (valueTransfer *ValueTransfer) AddInput(transaction transaction.Id, address address.Address) *ValueTransfer {
+func (valueTransfer *ValueTransfer) AddInput(transferHash transfer.Hash, address address.Address) *ValueTransfer {
+	valueTransfer.inputsMutex.Lock()
+	valueTransfer.inputs = append(valueTransfer.inputs, transfer.NewOutputReference(transferHash, address))
+	valueTransfer.inputsMutex.Unlock()
+
 	return valueTransfer
 }
 
diff --git a/packages/binary/transaction/test/transaction_test.go b/packages/binary/transaction/test/transaction_test.go
index c01b6c3fc44277c69ac9989771ff06060b55a6bf..3e195bef1c50280a9a077870ffac3c0504fe23c8 100644
--- a/packages/binary/transaction/test/transaction_test.go
+++ b/packages/binary/transaction/test/transaction_test.go
@@ -4,6 +4,8 @@ import (
 	"fmt"
 	"testing"
 
+	"github.com/iotaledger/goshimmer/packages/ledgerstate/transfer"
+
 	"github.com/iotaledger/goshimmer/packages/binary/transaction"
 
 	"github.com/iotaledger/goshimmer/packages/binary/address"
@@ -17,7 +19,7 @@ func TestNew(t *testing.T) {
 	newTransaction1 := transaction.New(transaction.EmptyId, transaction.EmptyId, identity.Generate(), data.New([]byte("test")))
 	assert.Equal(t, newTransaction1.VerifySignature(), true)
 
-	valueTransfer := valuetransfer.New().AddInput(transaction.EmptyId, address.Random())
+	valueTransfer := valuetransfer.New().AddInput(transfer.NewHash("test"), address.Random())
 
 	newValueTransaction1 := transaction.New(transaction.EmptyId, transaction.EmptyId, identity.Generate(), valueTransfer)
 	assert.Equal(t, newValueTransaction1.VerifySignature(), true)