Have you ever wanted to set up an easy way to get quick donations?
Welcome to a new kind of Tap to Donate. Taking inspiration from similar implementations, we sought to improve upon a limited, hard-coded solution to create a more re-usable solution.
What we found at Benevity, after looking at some other business’s tap-to-donate products, is that their devices are hard coded to a certain value and cause (i.e. it’s a small, screenless device that is hard coded to $5, $10, $25 dollars and usually used by a single charity or set up to one charity for the company. It doesn’t allow the company or charity to increase the value amount or allow the donor to increase the amount if they want to donate more, unless they tap the device multiple times. So we took this one step further by developing a Proof of Concept (POC) donation device.
Starting with the administration side, each Point of Sale (POS) device is set with a location so you know where it resides. Then, you’re able to set up a campaign/cause that the donations are directed to with start and end dates. This allows for different brick-and-mortar stores to have different causes associated by region. Different device or campaign functions consist of:
On the donor side of things, they’ll use any touch screen device to flow through one of the 4 steps above. In more defined detail, the options are:
Option 1: Low Dollar Donation
No screen is required, simply display the cause and value being donated as printed text alongside the POS terminal, similar to other providers. When ready, the donor will insert or tap their credit card on the reader which displays how much they’lll be charged.
Option 2: Custom Donation Amount
With Option 1 above, the process can be configured to allow the donor to change the amount they wish to donate. This could be a touch screen or tablet device. After setting the amount and confirming, the POS terminal would be ready to process the donation for the donor’s set amount.
Option 3: Tax Receipting
The donor has the option of entering information for a tax receipt. They’ll be asked to enter their personal details prior to donating, and the receipt will be emailed to them immediately.
An alternate option to this is displaying a QR code after tapping to donate, instead of inputting personal info on the screen. This allows the donor to complete the tax receipt information on their own time and device, increasing security. Once this is completed, the card is charged and a tax receipt sent.
Option 4: Cause Selection
Allowing a donor to select their own cause is a great way for companies to show that they care about what their customers or employees care about. Using our Search API, a donor can use a tablet screen to search for a cause they’d like to donate to. They would then continue with the donation process as described above.
Working with Stripe and Benevity is quite easy. There's a little more to this for the entire POC, but the overall calls to initialize the reader and perform the donation is 4 steps:
1. Initialize Stripe
//1. Initialize stripe
const stripe = require("stripe")(await getParamValue("/taptodonate/stripe/test-key"));
2. Donation + Receipt
//2. call Benevity API to make a custom donation
let benevityResponse;
try{
benevityResponse = await makeBenevityDonation(body.donationData);
console.log(benevityResponse)
console.log("DonationID: "+benevityResponse.id);
//2.1 send to Queue for receipt.
if(body.donationData.anonymous==0){
let queueRes=await sendToQueue(benevityResponse.id)
}
}catch (error){
console.log(error)
return(error);
}
3. Capture Payment Intent on Successful Donation
//3. capture payment intent if Benevity donation is successfull
let capturedPaymentIntent;
try{
if (benevityResponse.attributes.state.processingStatus == "ACCEPTED"){
capturedPaymentIntent = await stripe.paymentIntents.capture(body.stripeData.paymentIntentId);
}
}catch(error){
console.log(error)
return(error);
}
4. Save Donation Record to DB (Optional)
//4. post record to DB table donation_records
let dbResponse;
try{
dbResponse = await postDonationRecordToDb(benevityResponse.id,
capturedPaymentIntent.id,
body.donationData.reader_serial_number,
body.donationData.recipientId,
body.donationData.recipient_name,
capturedPaymentIntent.amount,
capturedPaymentIntent.currency,
body.donationData.anonymous)
console.log(dbResponse);
}catch(e){
console.log(e);
return (e);
}
The simple tap-to-donate option is a great way to engage your customers, community and even employees. But the simple tap and donate method has some room to grow, to make it more engaging with optional cause selection, flexible donation amount, and tax receipting — all of which could increase the average donation made to the cause or campaign you’re promoting.
Feel free to check out our POC code within our public Github repository. In order to fully run and test this, you will need a Stripe reader and some setup within AWS as well as some code from our API Docs.
If you're interested in creating your own Tap to Donate project and need assistance and/or access to our API, please contact us using our public form.