Read more
Learn more about Giving on adyen.com.
With Giving, you can give your shoppers the option to donate to a nonprofit organization after they made a purchase in your store.
Before the nonprofit can receive donations, they need to be onboarded and Giving needs to be configured. The payment terminal will then prompt for a donation either:
- Automatically after every payment. This is possible with all integrations and with standalone terminals.
- Through your payment request, so that you have control over when to ask for a donation. This is possible with a Terminal API integration.
Donations can be made using many popular payment methods, and are settled directly to the nonprofit's bank account.
Donation types
You can present the following donation options to the shopper on the payment terminal screen:
- Fixed amounts: configure up to three fixed amounts to present to your customers.
- Round-up: this option lets shoppers donate by rounding up the transaction amount of their purchase. You can enable the round-up feature on its own, or together with one fixed amount.
Requirements
Before you begin, take into account the following requirements, limitations, and preparations.
Requirement | Description |
---|---|
Integration type | Make sure that you have built a Terminal API integration or a Standalone solution. |
Customer Area roles | Make sure that you have Donation campaigns manager role. |
Webhooks | Subscribe to the following webhook(s):
|
Hardware | Your payment terminals must be on software version 1.109 or later. Refer to Terminals and supported options for the full list of terminal models that support donations, and the donation options supported on those terminals. |
Setup steps | Before you begin:
|
How it works
You manage your donation campaigns in our Campaign Manager. The Campaign Manager contains an overview of all your donations campaigns and allows you to start, edit, and end donation campaigns.
Regardless of whether a donation is prompted automatically after every payment or through your payment request, you can choose between a one step or a two step card interaction. Two step flow is the default interaction for donations. The payment methods that support the two flows differ.
Two step flow
- You initiate a payment for the goods your shopper is purchasing.
- The shopper presents their card on the payment terminal and completes the payment.
- The terminal screen shows that the payment is Approved and presents the options to donate.
The terminal doesn't prompt for a donation when it is offline or after a gift card payment.
- If the shopper chooses to donate, the terminal starts a new transaction (the donation) for the amount the shopper specified asking for the card to be presented.
If the shopper chooses Not now, the flow stops. - The shopper completes the donation transaction.
- You get the donation outcome in a webhook.
One step flow
-
You initiate a payment for the goods your shopper is purchasing.
-
The shopper presents their card on the payment terminal and completes the payment.
-
The terminal presents the options to donate to the nonprofit.
The terminal doesn't prompt for a donation when it is offline or after a gift card payment.
-
If the shopper chooses to donate, the terminal processes the donation.
If the shopper selects Not now, the donation flow stops. -
The terminal screen shows that the initial purchase is Approved.
-
You get the donation outcome in a webhook.
Choosing a nonprofit
You can donate to one of our pre-approved nonprofits or choose another nonprofit. Nonprofits that are not yet pre-approved must go through the onboarding process.
Manage donation campaigns
If you want to enable the one step flow, please reach out to your Adyen contact.
You manage donation campaigns with our Campaign Manager that allows you to create, start, edit, and end donation campaigns.
To create a new donation campaign:
- Log in to your Customer Area and make sure you are on your company account.
- Go to Giving > Campaigns.
- Select Create new campaign.
- On the Campaign details page:
- Give your campaign a name, this name is not visible to your shoppers.
- Select a nonprofit.
- Select your donation channel(s).
- Configure your donation campaign:
- The donation type, currency, and flow.
- The merchant accounts, and stores that are participating.
- Screen timeouts.
- Optionally, configure your terminal's standby screen to show a logo for your donation campaign.
- Select Save campaign.
You can access the donation campaigns you created in Customer Area > Giving > Campaigns. Select Start campaign to activate a donation campaign. The campaign is live on your payment terminals after the next scheduled reboot at the restart hour (at 06:00 AM by default). It is possible to change the restart hour.
Configure a logo for the terminal screen
You can configure your terminal's standby screen to show a logo for your donation campaign. Follow the instructions in the Customer Area under In-person payments > Terminal Settings > Customisation > Logo.
Model | Requirements |
---|---|
AMS 1 | Dimensions: 480 x 800 File size: max. 1 MB |
P630 | Dimensions: 320 x 480 File size: max. 1 MB |
e280 | Dimensions: 320 x 444 File size: max. 512 KB |
e285p | Dimensions: 240 x 284 File size: max. 512 KB |
M400 | Dimensions: 854 x 432 File size: max. 512 KB |
P400 Plus | Dimensions: 320 x 450 File size: max. 512 KB |
S1E | Dimensions: 720 x 1280 File size: max. 1 MB |
S1E2L | Dimensions: 720 x 1280 File size: max. 1 MB |
S1F2 | Dimensions: 720 x 1280 File size: max. 1 MB |
S1F2L | Dimensions: 720 x 1280 File size: max. 1 MB |
S1U2 | Dimensions: 720 x 1280 File size: max. 1 MB |
V240m Plus | Dimensions: 320 x 450 File size: max. 512 KB |
V400c Plus | Dimensions: 320 x 450 File size: max. 512 KB |
V400m | Dimensions: 320 x 450 File size: max. 512 KB |
Ask for a donation through a payment request
If Giving is configured to prompt for a donation through your payment request instead of automatically, you can use the tender option AskGiving
in your Terminal API payment request to control when the shopper is asked for a donation.
To ensure that the terminal prompts the shopper for a donation after their payment:
-
Make a
PaymentRequest
that contains aSaletoAcquirerData
field with the tender optionAskGiving
specified in one of the following formats:-
Option 1: A JSON object
{"tenderOption": "AskGiving"}
converted to a Base64 encoded string:
"SaleToAcquirerData": "eyJ0ZW5kZXJPcHRpb24iOiAiQXNrR2l2aW5nIn0="
-
Option 2: tenderOption=AskGiving:
"SaleToAcquirerData": "tenderOption=AskGiving"
The format that you use here will also be the format of the
AdditionalResponse
that you receive.If there are more tender options and other data elements that you need to pass in the
SaleToAcquirerData
field, see Add information to a payment for instructions. -
-
In the response, note the
AdditionalResponse
data which you can use in a subsequentTransactionStatusRequest
to retrieve the donation response:adyen_giving_sale_id
: the donation sale ID, which is fixed to AdyenGiving.adyen_giving_service_id
: the donation service ID. For example, 8ha5925831.
Other than the above
AdditionalResponse
data, the payment response is the same as the response you receive for an approved payment without AskGiving tender option. The payment response contains no details of the donation, because the donation is a separate transaction that is initiated by the terminal instead or by your POS app.
Retrieve the donation response
In a Terminal API integration, you can retrieve the donation result through a transaction status request. You can do this regardless of whether you automatically prompt for a donation after every payment, or prompt for a donation through your payment request.
It is only possible to retrieve the donation response in the two step flow.
The transaction status request returns the response of the donation transaction, including a PaymentReceipt
object that you can use to generate a shopper receipt for the donation.
-
To start a
TransactionStatusRequest
, make a POST request to a Terminal API endpoint, specifying:-
MessageHeader
: the standardSaleToPOIRequest.MessageHeader
object. Specify:Parameter Required Description ProtocolVersion
3.0 MessageClass
Service MessageCategory
TransactionStatus MessageType
Request SaleID
Your unique ID for the POS system component to send this request from. ServiceID
Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal ( POIID
) being used.POIID
The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
-
TransactionStatusRequest
: the request body with:-
ReceiptReprintFlag
: true -
DocumentQualifier
: receipt data you want to receive in the response. Can be one or both of:- CashierReceipt: cashier receipt, including signature data.
-
CustomerReceipt: shopper receipt.
-
MessageReference
: this object identifies what you want to receive:Parameter Description MessageCategory
Payment. SaleID
AdyenGiving. If you specify this SaleID
and omit theServiceID
, you will get the response for the latest donation made on the terminal that you route the transaction status request to.ServiceID
The adyen_giving_service_id
from the original payment response. This parameter returns the response for a specific donation.
-
The example below shows how to check the status of a donation with the
adyen_giving_service_id
8ha5925831. -
-
In the
TransactionStatusResponse
, note theRepeatedMessageResponse
. This contains the response for the donation transaction.
Receive the Giving webhook
You get the donation outcome of each donation in a webhook. To receive these webhooks, enable the Adyen Giving merchant webhook, which includes eventCode
: DONATION.
For a successful donation, the event contains success
: true.
Use the originalReference
to associate the donation to the shopper's original transaction.
To generate a shopper receipt for the donation, retrieve the donation response, using a TransactionStatusRequest
.
Supported terminals and donation options
The following table shows the payment terminal models that support Giving, and the donation options that are supported on those terminals. The payment terminals must be on software version 1.109 or later.
Model | Fixed amounts | Round up | Two step | One step |
---|---|---|---|---|
AMS1 | ![]() |
![]() |
![]() |
![]() |
P630 | ![]() |
![]() |
![]() |
![]() |
e280 | ![]() |
![]() |
![]() |
![]() |
e285p | ![]() |
![]() |
![]() |
![]() |
M400 | ![]() |
![]() |
![]() |
![]() |
P400 Plus | ![]() |
![]() |
![]() |
![]() |
S1E | ![]() |
![]() |
![]() |
![]() |
S1E2L | ![]() |
![]() |
![]() |
![]() |
S1F2 | ![]() |
![]() |
![]() |
![]() |
S1U2 | ![]() |
![]() |
![]() |
![]() |
V240m Plus | ![]() |
![]() |
![]() |
![]() |
V400c Plus | ![]() |
![]() |
![]() |
![]() |
V400m | ![]() |
![]() |
![]() |
![]() |
Supported payment methods
Online donations
See the supported payment methods for online donations.
Payment method | In-person donations | |
---|---|---|
Two step flow | One step flow | |
American Express | ![]() | ![]() |
Apple Pay 1 | ![]() | ![]() |
Bancontact | ![]() | |
Cartes Bancaires In-person only for French non-profits. | ![]() | ![]() |
China UnionPay | ![]() | ![]() |
Diners | ![]() | ![]() |
Discover | ![]() | ![]() |
eftpos | ![]() | |
girocard | ![]() | |
Google Pay 1 | ![]() | ![]() |
Interac | ![]() | |
JCB | ![]() | ![]() |
Mastercard | ![]() | ![]() |
Maestro | ![]() | |
Maestro USA | ![]() | |
Visa | ![]() | ![]() |
Visa Debit | ![]() |
1 For Apple Pay and Google Pay, the one-step flow is only available when the cards in the wallet support the one-step flow.