-
Notifications
You must be signed in to change notification settings - Fork 308
Although I receive money via Gratipay, I can't give it away #3666
Comments
Looking at payday.py, I see this comment:
So indeed, one has to have a positive balance at the start of Payday, otherwise money will be drawn from their credit card. I haven't looked at the code in depth, but I expect that if the balance at the end is positive, no money is actually withdrawn from their credit card. (Otherwise, the only real beneficiaries of the system are PayPal and the banks...) That algorithm won't work for people who have not set up a payment mean, since they can't make a "virtual cash advance" to the system. One option is to clearly state that it's only possible to make gifts when a valid payment mean has been set up (issue solved with no code change!). However, if you want it to be possible to give from the stack of money received within the system, that probably means a process with multiples passes, which hopefully has a stable end state. An additional issue, obviously, is when someone with no payment mean has not received enough to cover all their gifts. How this is resolved (I'd go with either "don't give anything", or "give everyone a percentage of the planned gift equal to the ratio of As soon as the tipper gives less than expected, we run into more problems, since some of the money they receive could come (more or less directly) from someone they tip. And so the total amount they receive will have decreased with the next pass. Hopefully the algorithm will halt at some point, but I'm afraid there are more than on valid end state for the whole thing. |
Thinking a little more about the "give everyone a percentage of the planned gift equal to the ratio So if someone receive only enough to cover 83.47% of their planned tips, that would be rounded down to 80%. There could even be less possible percentages, for example 100%, 75%, 50%, 25%, 0%. (Note that the other option I mentionned is simply 100%, 0%.) This should reduce the number of rounds needed to reach equilibrium. |
|
@book The situation you describe, wherein we have a graph that needs settling out through multiple iterations, was indeed the case for our Gratipay 1.0 payday algorithm. With the introduction of the Team intermediary in Gratipay 2.0, I believe our algorithm is much simpler and guaranteed to settle in one pass with charges (fees) minimized. Here's where we first discovered this algorithm. I'd have to work it through again to make sure it's behaving as expected as currently implemented ... |
Interesting. That could be because the ~owner of the other Team you give to doesn't have a PayPal attached (#3681), though if that's the case—and it probably should be, since we don't, in fact, move money unless there's a payout route—then we should a) treat this consistently across all the cached values (the Team in question displays a positive receiving Σ and n despite not having a payout route), and b) indicate both on your Giving page and on the Team's page that they aren't actually receiving because of the misconfiguration (no payout route). |
Where "That" refers to:
|
I wouldn't expect their payments to be included in that case. |
I've reticketed a review of our computation of cached values as #3729. |
Not sure if this is related, but on September 17, 2015 (weekly payday 172), since there was some money left over from the previous payday, my tips could be processed. The first one, to PerlWeekly, was processed correctly, but the second one, to Gratipay, had its amount doubled... Since both tips were of the same amount, maybe a running total was tipped instead of the configured value ? I don't know what happened, but it looks like a bug to me. |
I think I know what's happening here... Here's what payday does (not entirely correct, but sufficient for this explanation)-
According to the above, the money one receives through a team would never be used to fund one of their payments to another team (because payments are processed before team balances are drained). The culprit here is the minimum payout. The minimum we can payout via PayPal is $0.5. So when the amounts involved are small, one could end up carrying a balance in their gratipay account which could be used in future paydays to fund payments to teams. WalkthroughLet's say I tip I start out with a balance of $0, and I have no credit card attached. If the amounts involved are > $0.5
(I purposely chose amounts greater than the minimum charge to not bring the 'charging in arrears' logic in here). Payday 1
This cycle repeats. I keep on receiving $20 each week, but my $15 payment to Gratipay never gets processed. If the amounts involved are < $0.5
Payday 1
So in Payday 1, I didn't receive a payout, and my tip to Payday 2
In payday 2, I received a payout, but my tip to Gratipay was processed too. |
Similar comment on Freshdesk:
|
Dropping from the Pivot because it's the last thing there and while this is still something that needs to be addressed, it's not critical to the definition of "done" for the Pivot. |
Although I receive money via Gratipay, I can't give it away. Latest example: payday 165.
I started with a credit of $0.00, received more than enough to cover all the gifts I registered, but the amount was still sent to me in full (minus the PayPal fees) without making any of the donation I have listed.
I understand this is probably due to the way donations are resolved: my donation were taken from an empty account, and since I have no credit card listed, no money could be taken, therefore no donation was made in my name. Then the money given to my teams ended up on my account, and was paid to me.
I have no idea how payday computation is done at the moment, so I might be writing absurd and silly things below.
It should be possible to come up with an algorithm that would 1. allow me to give some of the money I receive through Gratipay to teams on Gratipay 2. minimize the total amount lost in fees.
By computing the graph of all people and teams (nodes) with the donations (edges) between them, one could come up with a "delta" for each person and team. The only issue would be people without a registered mean of payment, when the delta is negative. Some donations would not be honored, which would require another run of the graph computation, with the new data. I expect this would stabilize quickly.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: