actually this is pretty easy to do. It just requires a lot of "Show choices" for a basic item bank. If you wanted a nice looking one then it would require something like a custom menu. But here is how to make a basic item bank:
First off, at the very start of the event make sure you have this variable (more if they can store more items)
So now you should have the number of potions being held saved into that variable. Now lets move on to the npc it self.
As you can see, at the very top is what we just did with the potion variable. Now for this example, I'm just doing a potion withdraw npc. Now where it says 'How many?' I decided to give them the options of 1 and 5.
Now in the [1] handler this is what I put:
This is the part where we check and make sure the player isn't trying to store a non-existing item. Make a condition branch that is "If [Potion] Variable is equal to or greater" then make sure you click the option for a "Else" branch. Now if this condition is met, we will add '1' to another variable which I named 'Potion store'. Then after that, make sure you use the 'Item Management' option and remove that 1 potion. The Else branch is easy to do. Just give them some message about not having any potions to store.
Now to withdraw you pretty much do everything backwards. If one of the choices is withdrawing 1 potion, then your condition branch should check the [Potion Store] variable seeing if [Potion Store] is equal to or greater then 1. Then you would -1 from the [Potion Store] variable (no need to add 1 to the [Potion] variable as that is checked when you talk to the npc). Then of course do 'Item Management' and give them their potion back.
It's pretty simple, just can get messy if there are a lot of "Show Choice" commands. Hope this helped ^^