diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go
index 939f06cd..8b87f9b7 100644
--- a/app/keepers/keepers.go
+++ b/app/keepers/keepers.go
@@ -314,8 +314,7 @@ func (appKeepers *AppKeepers) NewAppKeepers(
 
 	appKeepers.FeeRefunderKeeper = feerefunderkeeper.NewKeeper(
 		appCodec,
-		appKeepers.keys[feetypes.StoreKey],
-		appKeepers.memKeys[feetypes.MemStoreKey],
+		runtime.NewKVStoreService(appKeepers.keys[feetypes.StoreKey]),
 		appKeepers.IBCKeeper.ChannelKeeper,
 		appKeepers.BankKeeper,
 		authtypes.NewModuleAddress(govtypes.ModuleName).String(),
@@ -381,8 +380,7 @@ func (appKeepers *AppKeepers) NewAppKeepers(
 
 	appKeepers.InterchainTxsKeeper = interchaintxskeeper.NewKeeper(
 		appCodec,
-		appKeepers.keys[interchaintxstypes.StoreKey],
-		appKeepers.memKeys[interchaintxstypes.MemStoreKey],
+		runtime.NewKVStoreService(appKeepers.keys[interchaintxstypes.StoreKey]),
 		appKeepers.IBCKeeper.ChannelKeeper,
 		appKeepers.ICAControllerKeeper,
 		icacontrollerkeeper.NewMsgServerImpl(appKeepers.ICAControllerKeeper),
diff --git a/testutil/interchaintxs/keeper/interchaintxs.go b/testutil/interchaintxs/keeper/interchaintxs.go
index 98f72eed..a5b14635 100644
--- a/testutil/interchaintxs/keeper/interchaintxs.go
+++ b/testutil/interchaintxs/keeper/interchaintxs.go
@@ -7,6 +7,7 @@ import (
 	metrics2 "cosmossdk.io/store/metrics"
 	adminmoduletypes "github.com/cosmos/admin-module/v2/x/adminmodule/types"
 	db2 "github.com/cosmos/cosmos-db"
+	"github.com/cosmos/cosmos-sdk/runtime"
 	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 
 	"cosmossdk.io/store"
@@ -45,8 +46,7 @@ func InterchainTxsKeeper(
 
 	k := keeper.NewKeeper(
 		cdc,
-		storeKey,
-		memStoreKey,
+		runtime.NewKVStoreService(storeKey),
 		channelKeeper,
 		icaControllerKeeper,
 		icaControllerMsgServer,
diff --git a/x/interchaintxs/genesis.go b/x/interchaintxs/genesis.go
index e96f128c..9a8ed940 100644
--- a/x/interchaintxs/genesis.go
+++ b/x/interchaintxs/genesis.go
@@ -18,8 +18,12 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState)
 
 // ExportGenesis returns the capability module's exported genesis.
 func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState {
+	var err error
 	genesis := types.DefaultGenesis()
-	genesis.Params = k.GetParams(ctx)
+	genesis.Params, err = k.GetParams(ctx)
+	if err != nil {
+		panic(err)
+	}
 
 	return genesis
 }
diff --git a/x/interchaintxs/keeper/grpc_query_params.go b/x/interchaintxs/keeper/grpc_query_params.go
index bcc60861..002aef22 100644
--- a/x/interchaintxs/keeper/grpc_query_params.go
+++ b/x/interchaintxs/keeper/grpc_query_params.go
@@ -16,5 +16,10 @@ func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types
 	}
 	ctx := sdk.UnwrapSDKContext(c)
 
-	return &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil
+	params, err := k.GetParams(ctx)
+	if err != nil {
+		return nil, status.Error(codes.NotFound, err.Error())
+	}
+
+	return &types.QueryParamsResponse{Params: params}, err
 }
diff --git a/x/interchaintxs/keeper/keeper.go b/x/interchaintxs/keeper/keeper.go
index 0a9d98c8..bfa9b2fa 100644
--- a/x/interchaintxs/keeper/keeper.go
+++ b/x/interchaintxs/keeper/keeper.go
@@ -3,9 +3,9 @@ package keeper
 import (
 	"fmt"
 
+	"cosmossdk.io/core/store"
 	"cosmossdk.io/log"
 
-	storetypes "cosmossdk.io/store/types"
 	"github.com/cosmos/cosmos-sdk/codec"
 	sdk "github.com/cosmos/cosmos-sdk/types"
 
@@ -23,8 +23,7 @@ const (
 type (
 	Keeper struct {
 		Codec                  codec.BinaryCodec
-		storeKey               storetypes.StoreKey
-		memKey                 storetypes.StoreKey
+		storeService           store.KVStoreService
 		channelKeeper          types.ChannelKeeper
 		feeKeeper              types.FeeRefunderKeeper
 		icaControllerKeeper    types.ICAControllerKeeper
@@ -38,8 +37,7 @@ type (
 
 func NewKeeper(
 	cdc codec.BinaryCodec,
-	storeKey,
-	memKey storetypes.StoreKey,
+	storeService store.KVStoreService,
 	channelKeeper types.ChannelKeeper,
 	icaControllerKeeper types.ICAControllerKeeper,
 	icaControllerMsgServer types.ICAControllerMsgServer,
@@ -51,8 +49,7 @@ func NewKeeper(
 ) *Keeper {
 	return &Keeper{
 		Codec:                  cdc,
-		storeKey:               storeKey,
-		memKey:                 memKey,
+		storeService:           storeService,
 		channelKeeper:          channelKeeper,
 		icaControllerKeeper:    icaControllerKeeper,
 		icaControllerMsgServer: icaControllerMsgServer,
diff --git a/x/interchaintxs/keeper/msg_server.go b/x/interchaintxs/keeper/msg_server.go
index 4e57d0f1..83964539 100644
--- a/x/interchaintxs/keeper/msg_server.go
+++ b/x/interchaintxs/keeper/msg_server.go
@@ -98,7 +98,7 @@ func (k Keeper) SubmitTx(goCtx context.Context, msg *ictxtypes.MsgSubmitTx) (*ic
 		return nil, errors.Wrapf(ictxtypes.ErrNotContract, "%s is not a contract address", msg.FromAddress)
 	}
 
-	params := k.GetParams(ctx)
+	params, _ := k.GetParams(ctx)
 	if uint64(len(msg.Msgs)) > params.GetMsgSubmitTxMaxMessages() {
 		k.Logger(ctx).Debug("SubmitTx: provided MsgSubmitTx contains more messages than allowed",
 			"msg", msg,
diff --git a/x/interchaintxs/keeper/msg_server_test.go b/x/interchaintxs/keeper/msg_server_test.go
index 5d150002..a75a966d 100644
--- a/x/interchaintxs/keeper/msg_server_test.go
+++ b/x/interchaintxs/keeper/msg_server_test.go
@@ -314,7 +314,8 @@ func TestSubmitTx(t *testing.T) {
 	require.Nil(t, resp)
 	require.ErrorContains(t, err, "is not a contract address")
 
-	params := icak.GetParams(ctx)
+	params, err := icak.GetParams(ctx)
+	require.NoError(t, err)
 	maxMsgs := params.GetMsgSubmitTxMaxMessages()
 	submitMsg.Msgs = make([]*codectypes.Any, maxMsgs+1)
 	wmKeeper.EXPECT().HasContractInfo(ctx, contractAddress).Return(true)
diff --git a/x/interchaintxs/keeper/params.go b/x/interchaintxs/keeper/params.go
index 4a99879e..609e41cb 100644
--- a/x/interchaintxs/keeper/params.go
+++ b/x/interchaintxs/keeper/params.go
@@ -7,20 +7,23 @@ import (
 )
 
 // GetParams get all parameters as types.Params.
-func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) {
-	store := ctx.KVStore(k.storeKey)
-	bz := store.Get(types.ParamsKey)
+func (k Keeper) GetParams(ctx sdk.Context) (params types.Params, err error) {
+	store := k.storeService.OpenKVStore(ctx)
+	bz, err := store.Get(types.ParamsKey)
+	if err != nil {
+		return params, err
+	}
 	if bz == nil {
-		return params
+		return params, nil
 	}
 
-	k.Codec.MustUnmarshal(bz, &params)
-	return params
+	err = k.Codec.Unmarshal(bz, &params)
+	return params, err
 }
 
 // SetParams set the params.
 func (k Keeper) SetParams(ctx sdk.Context, params types.Params) error {
-	store := ctx.KVStore(k.storeKey)
+	store := k.storeService.OpenKVStore(ctx)
 	bz, err := k.Codec.Marshal(&params)
 	if err != nil {
 		return err
diff --git a/x/interchaintxs/keeper/params_test.go b/x/interchaintxs/keeper/params_test.go
index 7a71d1f8..c4daf99f 100644
--- a/x/interchaintxs/keeper/params_test.go
+++ b/x/interchaintxs/keeper/params_test.go
@@ -16,5 +16,8 @@ func TestGetParams(t *testing.T) {
 	err := k.SetParams(ctx, params)
 	require.NoError(t, err)
 
-	require.EqualValues(t, params, k.GetParams(ctx))
+	keeperParams, err := k.GetParams(ctx)
+	require.NoError(t, err)
+
+	require.EqualValues(t, params, keeperParams)
 }