Terminal-2 icon

Donations using Giving

Let your shoppers donate to a nonprofit when they make an in-store purchase.

  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

  1. You initiate a payment for the goods your shopper is purchasing.
  2. The shopper presents their card on the payment terminal and completes the payment.
  3. 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.

  4. 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.
  5. The shopper completes the donation transaction.
  6. You get the donation outcome in a webhook.

One step flow

  1. You initiate a payment for the goods your shopper is purchasing.

  2. The shopper presents their card on the payment terminal and completes the payment.

  3. 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.

  4. If the shopper chooses to donate, the terminal processes the donation.
    If the shopper selects Not now, the donation flow stops.

  5. The terminal screen shows that the initial purchase is Approved.

  6. 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:

  1. Log in to your Customer Area and make sure you are on your company account.
  2. Go to Giving > Campaigns.
  3. Select Create new campaign.
  4. On the Campaign details page:
    1. Give your campaign a name, this name is not visible to your shoppers.
    2. Select a nonprofit.
    3. Select your donation channel(s).
  5. Configure your donation campaign:
    • The donation type, currency, and flow.
    • The merchant accounts, and stores that are participating.
    • Screen timeouts.
  6. Optionally, configure your terminal's standby screen to show a logo for your donation campaign.
  7. 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.

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.

ModelRequirements
AMS 1Dimensions: 480 x 800 File size: max. 1 MB
P630Dimensions: 320 x 480 File size: max. 1 MB
e280Dimensions: 320 x 444 File size: max. 512 KB
e285pDimensions: 240 x 284 File size: max. 512 KB
M400Dimensions: 854 x 432 File size: max. 512 KB
P400 PlusDimensions: 320 x 450 File size: max. 512 KB
S1EDimensions: 720 x 1280 File size: max. 1 MB
S1E2LDimensions: 720 x 1280 File size: max. 1 MB
S1F2Dimensions: 720 x 1280 File size: max. 1 MB
S1F2LDimensions: 720 x 1280 File size: max. 1 MB
S1U2Dimensions: 720 x 1280 File size: max. 1 MB
V240m PlusDimensions: 320 x 450 File size: max. 512 KB
V400c PlusDimensions: 320 x 450 File size: max. 512 KB
V400mDimensions: 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:

  1. Make a PaymentRequest that contains a SaletoAcquirerData field 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 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.

  2. In the response, note the AdditionalResponse data which you can use in a subsequent TransactionStatusRequest 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.

  1. To start a TransactionStatusRequest , make a POST request to a Terminal API endpoint, specifying:

    • MessageHeader: the standard SaleToPOIRequest.MessageHeader object. Specify:

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Service
      MessageCategory -white_check_mark- TransactionStatus
      MessageType -white_check_mark- Request
      SaleID -white_check_mark- Your unique ID for the POS system component to send this request from.
      ServiceID -white_check_mark- 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 -white_check_mark- 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 the ServiceID, 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.

  2. In the TransactionStatusResponse , note the RepeatedMessageResponse. 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 -white_check_mark- -x- -white_check_mark- -white_check_mark-
P630 -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
e280 -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
e285p -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
M400 -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
P400 Plus -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
S1E -white_check_mark- -x- -white_check_mark- -white_check_mark-
S1E2L -white_check_mark- -x- -white_check_mark- -white_check_mark-
S1F2 -white_check_mark- -x- -white_check_mark- -white_check_mark-
S1U2 -white_check_mark- -x- -white_check_mark- -white_check_mark-
V240m Plus -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
V400c Plus -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
V400m -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-

Supported payment methods

Online donations

See the supported payment methods for online donations.

Payment method
In-person donations
Two step flowOne step flow
American Express-white_check_mark--white_check_mark-
Apple Pay 1-white_check_mark--white_check_mark-
Bancontact-white_check_mark-
Cartes Bancaires
In-person only for French non-profits.
-white_check_mark--white_check_mark-
China UnionPay-white_check_mark--white_check_mark-
Diners-white_check_mark--white_check_mark-
Discover-white_check_mark--white_check_mark-
eftpos-white_check_mark-
girocard-white_check_mark-
Google Pay 1-white_check_mark--white_check_mark-
Interac-white_check_mark-
JCB-white_check_mark--white_check_mark-
Mastercard-white_check_mark--white_check_mark-
Maestro-white_check_mark-
Maestro USA-white_check_mark-
Visa-white_check_mark--white_check_mark-
Visa Debit-white_check_mark-

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.

See also