[Card grants] Top up grants via donations
Describe the problem
Users in YSWS programs enjoy topping up their cards. If they have domain credits, they often like to add a few extra dollars to cover domain costs or similar things. The current top-up process is slow because it requires the organizer to manually add funds to the card after the user makes a donation. Automating this process would reduce administrative work and provide a much easier experience for the end user.
Describe the feature/solution (optional)
The proposed flow for handling this would be to add a button to the grant menu that directly allows the user to top up their card with their own payment method.
Card grant with added button
This can directly open up a new page (this could be as simple as embedding a param to the donation page to make the funds flow directly to the card rather than into the main account) to refill the grant card attached.
This option would be hidden behind an admin toggle, so HCB admins must enable grant cards AND automated top-ups for it to be available to the end user.
Additional options to consider
- Adding a check box on the grant sending screen to specify if the end user can top up the grant card.
Card sending screen with additional check box
- Allowing the card creation v4 API to specify if the end user can top up the grant card.
Example code
begin
HCBService.create_card_grant(
email: "[email protected]",
amount_cents: 1500, # $15.00
merchant_lock: "Cloudflare credits", # optional: lock spend to a merchant
keyword_lock: nil, # optional
purpose: "Cloudflare", # optional
pre_authorization_required: false, # this is a grant card, not required
one_time_use: false, # this is a grant card, not required
top_ups_allowed: true, # User can top up their card as they please
instructions: "Please spend at cloudflare"
)
end
Linking https://github.com/hackclub/hcb/pull/11536 since it's on a somewhat similar topic
We are not a personal banking platform - implementing this would lead to us becoming one essentially. We should not do this.
I disagree. Yes, we are not a personal banking platform, but implementing this will not make us one.
I think adding a one-time top-up and then further limiting that up to 25% or 50% (decided by YSWS org) of the total value of the card is possible and will make YSWS org's lives so much easier. I see this has around 30% of the time with grants, where we have to separately process grant top-ups.
Plus, Grants are only allowed for Hq orgs, meaning that implementing safeguards for this is easily possible.
This functionality is already supported by the v4 API—HQ organizers could configure automatic disbursements based on donations using v4 API calls. I don't think we should support this as a built-in feature though, for reasons mentioned by Sam.