diff --git a/signer/core/apitypes/types.go b/signer/core/apitypes/types.go
index 591d253abb1a57b6d910a58b6820f43043f15894..625959219f66a30b485821a613f1c4e1cdff5e8f 100644
--- a/signer/core/apitypes/types.go
+++ b/signer/core/apitypes/types.go
@@ -19,12 +19,12 @@ package apitypes
 import (
 	"encoding/json"
 	"fmt"
+	"math/big"
 	"strings"
 
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/common/hexutil"
 	"github.com/ethereum/go-ethereum/core/types"
-	"github.com/ethereum/go-ethereum/internal/ethapi"
 )
 
 type ValidationInfo struct {
@@ -97,23 +97,60 @@ func (args SendTxArgs) String() string {
 	return err.Error()
 }
 
+// ToTransaction converts the arguments to a transaction.
 func (args *SendTxArgs) ToTransaction() *types.Transaction {
-	txArgs := ethapi.TransactionArgs{
-		Gas:                  &args.Gas,
-		GasPrice:             args.GasPrice,
-		MaxFeePerGas:         args.MaxFeePerGas,
-		MaxPriorityFeePerGas: args.MaxPriorityFeePerGas,
-		Value:                &args.Value,
-		Nonce:                &args.Nonce,
-		Data:                 args.Data,
-		Input:                args.Input,
-		AccessList:           args.AccessList,
-		ChainID:              args.ChainID,
-	}
 	// Add the To-field, if specified
+	var to *common.Address
 	if args.To != nil {
-		to := args.To.Address()
-		txArgs.To = &to
+		dstAddr := args.To.Address()
+		to = &dstAddr
+	}
+
+	var input []byte
+	if args.Input != nil {
+		input = *args.Input
+	} else if args.Data != nil {
+		input = *args.Data
+	}
+
+	var data types.TxData
+	switch {
+	case args.MaxFeePerGas != nil:
+		al := types.AccessList{}
+		if args.AccessList != nil {
+			al = *args.AccessList
+		}
+		data = &types.DynamicFeeTx{
+			To:         to,
+			ChainID:    (*big.Int)(args.ChainID),
+			Nonce:      uint64(args.Nonce),
+			Gas:        uint64(args.Gas),
+			GasFeeCap:  (*big.Int)(args.MaxFeePerGas),
+			GasTipCap:  (*big.Int)(args.MaxPriorityFeePerGas),
+			Value:      (*big.Int)(&args.Value),
+			Data:       input,
+			AccessList: al,
+		}
+	case args.AccessList != nil:
+		data = &types.AccessListTx{
+			To:         to,
+			ChainID:    (*big.Int)(args.ChainID),
+			Nonce:      uint64(args.Nonce),
+			Gas:        uint64(args.Gas),
+			GasPrice:   (*big.Int)(args.GasPrice),
+			Value:      (*big.Int)(&args.Value),
+			Data:       input,
+			AccessList: *args.AccessList,
+		}
+	default:
+		data = &types.LegacyTx{
+			To:       to,
+			Nonce:    uint64(args.Nonce),
+			Gas:      uint64(args.Gas),
+			GasPrice: (*big.Int)(args.GasPrice),
+			Value:    (*big.Int)(&args.Value),
+			Data:     input,
+		}
 	}
-	return txArgs.ToTransaction()
+	return types.NewTx(data)
 }