We have a good set of steps described at SignupAndUpgradeFlow but it would be ideal if the user could signup entirely (or as much as possible) over XMPP. The super ideal case would be using an ad-hoc command, but since few popular clients support that, the below lays out a plan for providing it via the JMP account bot (see https://jmp.chat/#bot for details) instead.
message to account bot from unregistered user ... | | | v v register2 prompt user to choose JMP number (prefixed list with "a", "b",..., "e", or type number) | | | | \ / ------\ /------ \ / | | v account bot shows number and rate centre, asks user to confirm (with "y") | | v on user confirm, account bot shows options for registering (per options1 list in SignupAndUpgradeFlow) | | v once user selects option (again from "a", "b",..."e" list), respond accordingly | / \ / \ / \ / \ / \ / \ ... | | | | v v approval wait credit card payment | | | | v v msg when approved web link provided to pay | | | | | v | msg when payment approved | | | | \ / \ / \ / \ / \ / \ / \ / | | v user now knows they are registered | | v can use account bot commands <-----\ | | | | v | run command (like 'u') | | | | | v | received expected output ---------/
Integration with web site (jmp-register)
While the user can choose to start interacting with the account bot and choose a number that way, they can also get to the account bot signup process from the web site (specifically jmp-register). In particular, they would select a number as normal (from the list on the main page, or register1) and then after entering their JID on register2, instead of getting a verification code from the JMP support number, they would get a message from the JMP account bot, confirming they want to use the chosen number as their JMP number (per above). Then register3 would only be there to let them re-send the message if they didn't get it (not to enter their verification code as it asks for now).