-
Notifications
You must be signed in to change notification settings - Fork 570
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2][startailcoon][1.5][svk] Withdraw should take into account both FEE and GATEWAY FEE #530
Comments
and how do you monitor the fees? what if they change? |
The gateway fee is present in the withdrawal form. This is just a math issue. |
I don't think we should do the math for them, but we can add a "You will receive" field. |
We are already doing the math for the BTS fee. We should be consistent and extract all fees. This will also solve instances where they are attempting to deduct all funds from their account. If I plan to move 101.234 BTS to another location, the other location should receive exactly 101.234 BTS. Following this protocol will also make it impossible for a user to attempt to withdraw more funds than they have because we can actually show the total available for withdrawal with the exchange fee and the gateway fee factored in. I disagree with having a "You will receive" field that disagrees with the value entered by the user. |
I totally agree with Bill on this. I really don't think we should be making users do the math. Most of the time they will not realize they were supposed to take the fee into account. And sometimes they might realize it but simply miscalculate. This is just an unnecessary UX mine field. I can't think of a wallet that doesn't add the fee on top of the amount the user wishes to send. |
I just don't like how this complicates things in the other direction. Say the fee is 0.03 and I want to withdraw exactly 100 from my account, I will then need to actually enter 99.97. We can't modify the input field while the user is typing, so adding the fee will need to happen when you try to submit the withdrawal. So you'll enter 100, get a confirmation screen that says 100.03, then become confused. Or say you type something that exceeds your balance once the fee is added, now we need to add a warning explaining that. So in order to withdraw, you have to start doing math again. Or if your balance is 100 and you type 100, you will receive 99.97 which is the current behaviour. This is why a "You will receive" field is a much better solution, since it saves you from having to do any math yourself and sidesteps all the potential corner-cases that doing the math the way you want introduces. |
I'm really confused about your statement above. If the user has to manually add back the gateway fee, they are doing math. Here's an example. I needed to send exactly .12887 BTC to gyft for a card. I sent it twice and it underpaid twice. I had to wait a day for the refund. If I enter .12887, the net result on the send should be that amount. If there is a btc fee of .003, the user will be expected to manually add .003 resulting in a total of 13187. Even if I have a separate field telling me the net send amount, I can't come up with a good reason for forcing the user to calculate this. Currently, if the user is attempting to empty their account, I think we take the gateway fee into effect and reduce the overall amount as expected. Why not continue with this pattern? I'm not suggesting that we modify the input screen while the user is typing. The user knows how much they want to withdraw. If the user exceeds their balance, we can display that as they type. This means that the form will not pass validation and we will not need to submit an error message. |
In your scenario below, the user is not withdrawing 100. They are withdrawing 97 and paying a fee of 3. This is what users would expect to happen if they enter 97 as the withdrawal amount. While I can imagine scenarios where the user would want to reduce their balance by some specific amount regardless of how much that means they'd actually be withdrawing, that's clearly not the typical behavior, which is why every wallet out there adds the fee to the withdrawal amount entered by the user. I highly recommend going this route. Btw, it might make sense to put the fee directly below the withdrawal amount and show the just total below that. Then when someone clicks to withdraw full balance they will see the total (withdrawal + fee) matching their available balance. Finally, if the user manually enters an amount that is more than available balance minus fee, then they can simply get insufficient funds warning.
|
If I enter 97 I expect to withdraw 97, not 100 as it would be if we change this as you want and the fee is 3. |
@svk. If you enter 97, you are NOT withdrawing 100. You are withdrawing 97 and paying a fee of 3. Your balance will be debited by 100, but you are withdrawing 97. |
@svk31 if I tell you to pay me 97, I need to receive 97. I'm not going to cover your gateway fees and bts fees. |
Centralized exchanges like Bittrex subtract on withdraw too, which makes more sense in my opinion. If you want to send full amount - which you would do after you're done trading in most cases - you don't want to start some weird math to calculate fees on top just to get max out |
@btsfav @wmbutler @tbone-bts @svk31 So what is the consensus here? Do we add the fee to the amount that is checked against balance availability and what is sent to the API server? I.e. do we want the scenario where withdraw amount is 100, fee is 3, so receiver gets 100, and sender gets debited 103, or do we want the receiver to get 97 and the sender gets debited 100? |
When I go to the ATM to take out $20. I get $20. There are all kinds of fees including the $3 fee that I'm told about, but I get $20, because that's what I asked for. I hate that @svk31 and I disagree on this topic, but I don't understand the counter argument. |
If we don't fix this issue now, we are going to keep hearing complaints about it until it's fixed. |
If you don't understand the counterargument, try thinking about calvin's scenario. I personally would prefer to be charged 100 when I try to withdraw 100, not 103, but it appears I'm in the minority here. |
But if the vendor is asking you to pay 100, you need to give the vendor 100. This is complicated immensely with fractional values where the vendor wants .0122456 and the fee is .0045 and the gateway fee is .0214. Now I have to back-calculate the withdrawal amount as shown here:
|
If you agree to make this change, I have a thought to address this with new UX as I work on this screens. My idea would be to allow the user to enter the value either way (i.e. they could choose to deliver that exact amount to the vendor or they could choose to remove that exact amount from their account. I think it will be pretty slick and I understand that particular need. |
withdraw is an exchange withdraw, it's not meant for business or regular wallet use |
That's how I view it too and I guess that's the cause of our disagreement. |
It has nothing to do with terminology. This is about managing expectations. |
I withdraw to Bitpay and Coinbase all the time. I use those services to pay for things with online forms. Every time, my bitshares wallet underpays them, so I move my btc to a different wallet just so I don't have to do the math. I'm technical enough to know what's going on, but most of our users aren't. |
I can make it work from a UI perspective to satisfy both sides... but I'm asking for a concession to go ahead and put this in place for now and I'll UX this for 11/1 |
@calvinfroedge everyone interested in development should be here already |
Reading your conversation and disagreement on the subject, I think one solution could be to add a field at the bottom stating something like the following: Total to Withdraw from account: 356.78 (w/Fees 357.58) If you wish to empty your account you should be able to tell the wallet with clicking the maximum wallet value and it should automatically take all the amount including fees. |
The people have spoken... I agree it is best that the final amount received by the recipient is the amount you initially put in and the fees are tacked onto that, displayed, then charged to the sender. This is how bank ATMs work, they give you the amount you request but then they withdraw more from your account including the ATM fee. They don't give you $97 when you ask for $100, they give you $100 and deduct $103 from your balance. |
I would say something but tbone will just call me a troll and get me banned from the telegram chat again. This is actually the issue I mentioned to Stan and then tbone and everyone shit on me for being noob. |
Speak freely @happyconcepts. @tbone-bts doesn't have banning privileges here. |
I don't have banning privileges anywhere, so I never banned anyone. I'm not ever sure who this person is. If it's SparkToken from Telegram, then I merely pointed out that he was trolling and disrupting the chat again, at which point he self-destructed, got banned, and had posts deleted by one of the moderators (I believe it was BTSWolf) who was aware of his prior shenanigans (such as insisting Bitshares is not open source, throwing a tantrum because he was allegedly being ignored on Github, and otherwise deriding Bitshares, the UI, the community, etc). But yeah, speak freely @happyconcepts. I'm sure you really just want to help. |
This toxic attitude based on insistence of calling me a troll based on 2 out-of-context chats. Wow I must 've covered a lot of ground in under 150 characters. When you compare his tone here to his earlier on-topic posts about the withdraw amount, is the war-mongering, trolling, slandering, and hating from tbone-bts not obviously apparent? Allowing this toxic attitude is disgusting and makes my participation quite painful to contribute to bitshares. It's a shame to have to do this here in the open but then there is stuff like he wrote above that are outright lies:
This is bullshit meant to slander me. While the sad truth is that a 170915 bounty was not bumped up, and a 171001 bounty has not been paid to me yet, I have not mentioned it to anyone. I have not chatted about it. I have instead been constructive about improving the code base. So I will call out this stalker t-bone because look at how coincidentally he arrives here on github just at the moment he is slandering me as a troll in Telegram. So this now gets really real, because it raises the notion that I have been ignored somehow. |
Anyway, I came to this thread today to share an idea with everyone else about #530 and yes it took a few days to work up the courage to do this in the face of this bullying. It has been touched upon earlier: the answer is to give the user the expected behavior based on how you prompted them. Prompting with different words like |
@happyconcepts send me the issue number for 171001 so I can look into why you didn't get paid. |
I can claim this |
It's yours!! Test it carefully... |
* Network Fees included in total transaction amount - Add Fee amounts before submitting to network. - Don't try to withdraw more than user owns. - Increase width of "Network Fee" input selector - Minor Code cleanup * Minor changes to the way we check user balance * Fixing Asset handling
I've merged the PR and added a similar logic to the modal used in the account portfolio view. |
* Network Fees included in total transaction amount - Add Fee amounts before submitting to network. - Don't try to withdraw more than user owns. - Increase width of "Network Fee" input selector - Minor Code cleanup * Minor changes to the way we check user balance * Fixing Asset handling
This is a high priority bug.
Tonight, I withdrew .2060 BTC to Coinbase. As you can see from the screenshot, only .2057 arrived. That appears to be correlated with the .0003 Openledger gateway fee. To manage expectations, our wallet should ensure that the amount the user intends to withdraw is the amount that appears in the destination wallet.
The text was updated successfully, but these errors were encountered: