Point-of-sale 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 options and results

You can present a combination of the following donation options to the shopper on the payment terminal screen:

  • A fixed donation amount
  • An option to enter a custom donation amount
  • An option to round up the transaction amount to the nearest whole number
  • An option to skip the donation process

To be informed about your customers' donations, you can:

How it works

Regardless of whether donation is prompted automatically after every payment or through your payment request, the donation flow is as follows:

  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.
    In a Terminal API or Classic integration, you receive the response to your payment request. In a Terminal API integration, this response includes Giving parameters which you can later use to retrieve the donation response.

  3. The terminal shows the payment is Approved and 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 selects Not now, the flow stops.
    If the shopper chooses to donate, the terminal starts a new transaction (the donation) for the amount that the shopper specified.

  5. The shopper completes the donation transaction.

    The donation is routed to the nonprofit, and settled directly to their bank account.
    In a Terminal API or classic integration, your POS app won't receive a response for the donation because it is initiated by the terminal instead of by the POS app.

  6. In a Terminal API integration, optionally retrieve the donation response through a transaction status request.
    For this, you use the Giving parameters that you received in the original payment response. Retrieving the donation response allows you, for example, to gain insight into the usage of the donation feature, or to generate a shopper receipt for the donation. Optionally, you can enable the Adyen Giving merchant webhook to get the outcome of each donation.

Your shopper will see two separate charges on their bank statement, one for the payment, and one for the donation.

Before you begin

Giving is supported with Terminal API and Classic integrations and also with standalone terminals.

Be aware that there are limitations with regard to supported terminals, donations options, and payment methods.

Terminals and supported options

The following table shows the payment terminal models that support Giving, and the donation options that are supported on those terminals.

Model Fixed amounts Custom amount Round-up
AMS1 -white_check_mark- -x- -x-
e280 -white_check_mark- -white_check_mark- -white_check_mark-
e285p -white_check_mark- -white_check_mark- -white_check_mark-
M400 -white_check_mark- -white_check_mark- -white_check_mark-
P400 Plus -white_check_mark- -white_check_mark- -white_check_mark-
S1E -white_check_mark- -x- -x-
S1E2L -white_check_mark- -x- -x-
S1F2 -white_check_mark- -x- -x-
S1U2 -white_check_mark- -x- -x-
V240m Plus -white_check_mark- -white_check_mark- -white_check_mark-
V400c Plus -white_check_mark- -white_check_mark- -white_check_mark-
V400m -white_check_mark- -white_check_mark- -white_check_mark-

Supported payment methods

In-store donations are supported for the following payment methods:

  • Credit and debit cards: American Express, Bancontact, Cartes Bancaires, Diners, Discover, JCB, Mastercard, UnionPay, Visa, Visa Debit.
  • Wallets: Apple Pay and Google Pay.

Onboarding with Giving

Before your nonprofit can receive donations, they need to be onboarded with Giving.

You should approach your chosen nonprofit and get their consent before beginning the onboarding process.

To begin the onboarding process, contact your Adyen Account Manager or our Support Team. They will handle the onboarding with the nonprofit. The nonprofit will get their own Customer Area account, where they can see an overview of donations, and handle any refunds and chargebacks.

Configure Giving

Video tutorial

Watch our video tutorial on how to configure Giving.

When the nonprofit is onboarded:

  1. Contact your Adyen Account Manager or our Support Team to:

    • Enable Giving.
    • Configure whether you want to automatically prompt for a donation after every payment, or prompt for a donation through your payment request. The latter is possible with a Terminal API integration.
    • (Optional) Enable the round-up feature, which lets shoppers donate by rounding up the transaction amount of their purchase. Specify if you want to use the round-up feature on its own, or together with a fixed amount.
  2. In your Customer Area go to In-person payments > Terminal settings > Payment features, and under Adyen Giving fill out the donation settings.

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

Donation settings

Settings Description
Enable Adyen Giving Enable and disable the donation feature.
Merchant Account The merchant account of the nonprofit organization. The donation transaction will be routed over this merchant account.
Charity name The name of the nonprofit shown on the terminal screen.
Amounts The amounts for any fixed amount donation options that you want to show on the terminal screen. For an explanation, see Donation amount options.
Show custom amount Enables the option to let the shopper add a custom amount. If three fixed amounts are configured, adding custom amount replaces the third fixed amount option. You need to set a Maximum amount for custom donations.
The custom option is not supported on Android payment terminals.
Timeout for Giving screen The default value is 30 000 milliseconds (30 seconds).
To change the timeout for the donation payment, contact our Support Team.

Donation amount options

The donation options include:

  • The Not now option. This option is shown by default. It enables shoppers to skip donating.
  • Up to three other donation options, which you need to specify in the Customer Area:
    • Specify the amounts of the donation options.
    • Enable or disable Show custom amount. When enabled, customers can select the Custom option to enter an amount of their own choice.
  • The round-up option. 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 a fixed amount. See if the round-up feature is available on your terminal.

You can see how the donation options are presented on the payment terminal screen below.

You can present the shopper with up to three donation amounts to choose from.

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

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

To get the outcome of each donation asynchronously, enable the Adyen Giving merchant webhook. The webhook 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.

See also