If you allow easy password reset through the email account or phone number, you might as well use the email account or phone as a login method.
So you just send the user a login link, and this can be reused (a device identifier or such can increase security and require resending a new token when changing to a new device or such). Every once in a while, the user gets a new token and the old one becomes invalid after a grace period (to allow for holidays w/ no phone access and such).
What you can also do is create an easy to remember but hard to crack password for the user. If birthday is needed, use that in a scrambled way with an extra word. 1987-05-12 turns into 87MasoodAppMayflower or such. The user basically only needs to remember the word flower, while if you create a million options to write each date, an attacker needs to know the birthday and still try up to a million times - which, with a time delay between unsuccessful logins and some other measures, can be made to take a few thousand years. If an attacker doesn't know which variations are possible, they may even need a few billion guesses. I added the app (or company) name so that the user knows where the password belongs. You can do the same with the phone number or use parts of both, though that's less secure.
I suggest allowing the user to change that password any time, and just have the option easy to find and often to see in the navigation of the app.
If it's typical for your kind of wallet to have very little in it at the beginning, you can leave a password checkmark unticked, so the user won't be bothered with logins at the beginning. Same with making the password hidden behind the usual dots only after the user decides to do that. With reminders popping up more often when the user starts to have more than a little in the wallet.
Picture login and such could also be done - though I'd suggest to use this more for verification.