Read more
Learn more about Adyen Giving on adyen.com, see the most-asked questions on Adyen Help , or use Adyen Giving in your online checkout.
With Adyen Giving, you can give your shoppers the option to donate to a nonprofit organization after they make a purchase in your store. If the shopper chooses to make a donation, the donation amount is charged to the same payment method they used for the original transaction.
Donations can be made using many popular payment methods, and are settled directly to the nonprofit's bank account. Adyen covers all fees and the donation amount is transferred to the nonprofit in full.
Requirements
Before you begin, take into account the following requirements, limitations, and preparations.
| Requirement | Description |
|---|---|
| Integration type | A Terminal API integration with payment terminals or a Standalone solution, using terminal software version 1.109 or later. Some terminals or features require software version 1.110 or later. |
| Customer Area roles | Make sure that you have the following roles:
|
| Webhooks | Subscribe to the following webhook:
|
| Hardware | See Terminals and supported options for a list of terminal models that support Giving, and the donation options that are supported on these terminals. |
| Limitations | Make sure that you are using payment methods and currencies that are supported by Giving. See: |
| Setup steps | Before you begin, make sure that the nonprofit you choose has been onboarded to Adyen, or pick one of our pre-approved nonprofits that have already been onboarded. |
How it works
To accept donations at the point of sale:
-
Choose a nonprofit.
You can select one of our pre-approved nonprofits or choose another nonprofit. Nonprofits that are not yet pre-approved must go through the onboarding process. -
Set up your donation campaign in the Campaign Manager section of the Customer Area.
The Campaign Manager contains an overview of all your donations campaigns and allows you to start, edit, and end donation campaigns. This is where you select a nonprofit, and determine your donation options:- The donation type: fixed amounts and/or round-ups.
- When to ask for a donation: automatically after every payment or as needed through your payment request.
- The interaction flow: a one-step flow or a two-step flow.
-
Optionally configure a donation campaign logo to show as the standby screen on the payment terminal.
-
Make a payment.
If your setup is to ask for a donation automatically after each payment, there is nothing additional that you need to do.
Otherwise, ask for a donation through the payment request by adding a tender option. -
Receive Giving webhook messages to check the outcome of donations.
If you use the two-step interaction flow, you can also retrieve the response for the donation transaction so that you can provide the shopper with a receipt for their donation.
Donation options
With our Giving integration, you have the flexibility to choose a combination of donation types, donation moments, and donation interaction flows. You configure these choices in your donation campaign.
However, there are limitations to what choices are supported, depending on terminal model, region and currency, and payment method.
Donation types
You can present the following donation types on the payment terminal screen:
- Fixed amounts: configure up to three fixed amounts to present to your shoppers.
- Round-up: allow shoppers to 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.
The terminal will always show a "Not now" option that the shopper can select to skip donating.
Donation moments
You can choose when the payment terminal asks for a donation:
- Automatically after every payment. This is possible with all integrations, including 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.
Donation interaction flows
Regardless of whether a donation is prompted automatically after every payment or through your payment request, you can choose to use a one-step flow or a two-step flow.
Technically, there are two transactions: one for the payment and one for the donation. But in the one-step flow, the payment and the donation are shown as a single transaction, and shoppers need to present their card only once. In the two-step flow, shoppers need to present their card twice. With a Terminal API integration, this enables you to provide the shopper with a receipt for their donation, because you can retrieve the full donation transaction response.
-
After you have set up your donation campaign, both flows start in the same way:
- You initiate a payment for the goods your shopper is purchasing.
- The shopper presents their card on the payment terminal and completes the payment.
-
From this moment, the flows are different:
One-step flow Two-step flow The terminal screen shows that the payment is approved.
The terminal presents the options to donate to the nonprofit.
The terminal presents the options to donate to the nonprofit.
If the shopper chooses to donate, the terminal processes the donation.
If the shopper chooses to donate, the terminal starts the donation transaction for the amount the shopper specified and asks for the card.
The shopper presents their card on the terminal and completes the donation transaction.The terminal shows a confirmation screen to thank the shopper.
The terminal shows a confirmation screen to thank the shopper.
The terminal screen shows that the payment is approved.
In both flows:
- The terminal does not prompt for a donation when it is offline or after a gift card payment.
- If the shopper selects the donation option Not now, the terminal shows a confirmation screen with a message that no donation was made.
Manage your donation campaign
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.
- 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.
(Optional) Configure a logo
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 |
| M450 | Dimensions: 1280 x 800 File size: max. 100 MB |
| 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 |
| SFO1 | Dimensions: 1280 x 800 File size: max. 100 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 |

(Optional) 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 payment request that contains a SaleData.SaleToAcquirerData parameter with the tender option AskGiving 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
AdditionalResponsethat you receive.If there are more tender options and other data elements that you need to pass in the
SaleToAcquirerDatafield, see Add information to a payment for instructions. -
-
If you use the two-step flow, in the PaymentResponse note the
AdditionalResponsedata which you can use in a subsequentTransactionStatusRequestto 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
AdditionalResponsedata in the two-step flow, 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 of by your POS app.
(Optional) Get the two-step donation response
If you are using the two-step flow in a Terminal API integration, you can retrieve the full response for the donation transaction 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.
A reason to retrieve the donation response is that this includes a PaymentReceipt object that you can use to generate a shopper receipt for the donation.
It is only possible to retrieve the donation transaction response in the two-step flow.
-
Make a transaction status request, specifying:
-
The standard
SaleToPOIRequest.MessageHeaderobject, withMessageClassset to Service andMessageCategoryset to TransactionStatus.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].
-
The TransactionStatusRequest object with:
-
ReceiptReprintFlag: true -
DocumentQualifier: The 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 MessageCategoryPayment. SaleIDAdyenGiving. If you specify this SaleIDand omit theServiceID, you will get the response for the latest donation made on the terminal that you route the transaction status request to.ServiceIDThe adyen_giving_service_idfrom 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_id8ha5925831. -
-
In the TransactionStatusResponse, note the
RepeatedMessageResponse. This contains the response for the donation transaction.
Check the Giving webhook
Regardless of whether donations are prompted automatically after every payment or through your payment requests, you can use Giving webhook messages to verify if donations succeeded.To receive these webhook messages, enable the Adyen Giving merchant webhook, which includes eventCode: DONATION.
For a successful donation, the event contains:
success: true.originalReference: use this value to associate the donation with the shopper's original transaction.
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, and some terminals or features require software version 1.110 or later. A combination of Round up and Fixed amounts in the one-step flow is only available for terminals on software version 1.124 or later.
| Model | Fixed amounts | Round up | Two step | One step |
|---|---|---|---|---|
| AMS1 | ![]() |
![]() Requires 1.110 or later |
![]() |
![]() |
| P630 | ![]() |
![]() |
![]() |
![]() |
| e280 | ![]() |
![]() |
![]() |
![]() |
| e285p | ![]() |
![]() |
![]() |
![]() |
| M400 | ![]() |
![]() |
![]() |
![]() |
| M450 Requires 1.110 or later |
![]() |
![]() |
![]() |
![]() |
| P400 Plus | ![]() |
![]() |
![]() |
![]() |
| S1E | ![]() |
![]() Requires 1.110 or later |
![]() |
![]() |
| S1E2L | ![]() |
![]() Requires 1.110 or later |
![]() |
![]() |
| S1F2 | ![]() |
![]() Requires 1.110 or later |
![]() |
![]() |
| S1U2 | ![]() |
![]() Requires 1.110 or later |
![]() |
![]() |
| SFO1 Requires 1.110 or later |
![]() |
![]() Requires 1.110 or later |
![]() |
![]() Requires 1.125 or later |
| V240m Plus | ![]() |
![]() |
![]() |
![]() |
| V400c Plus | ![]() |
![]() |
![]() |
![]() |
| V400m | ![]() |
![]() |
![]() |
![]() |
Supported regions and currencies
Giving is available in the following countries/regions and currencies.
Supported currencies may vary between nonprofits depending on where they are registered.
| Country/region | Currencies |
|---|---|
| Asia-Pacific 1 | AUD, JPY, HKD, NZD, SGD |
| Europe | CHF, CZK, DKK, EUR, HUF, ISK, NOK, PLN, RON, SEK |
| United Arab Emirates | AED |
| North America | CAD, USD |
| Mexico | MXN |
| United Kingdom | GBP |
1Fundraising in Singapore is only possible for local nonprofits.
Supported payment methods and flows
The following table show the payment methods that support donations at the point of sale. Note that not all of these payment methods are supported for ecommerce 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.