Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Tender options

Use parameters to change how a transaction is processed.

Using our Standalone solution?

With our Standalone solution, Support can configure tender options and transaction conditions for your account.

Tender options are parameters that change how the tender is processed. For example, the tender option AskGratuity triggers the payment terminal to ask the shopper for a tip.

Tender options are passed in the SaleToAcquirerData field.

Other ways to change transaction processing

Apart from passing tender options, there are other ways to influence the transaction processing. You can:

  • Pass a transaction condition in your payment request. This forces the payment terminal to accept a specific card entry method or payment method for that payment. This is used for example with Manual Keyed Entry (MKE) payments and payments in Brazil.
  • Configure default tender options and transaction conditions. The terminal will then use these for every payment. Ask our POS Support Team for help.

Tender options

These are the tender options you can pass in the SaleData.SaleToAcquirerData field.

NameDescription
AllowPartialAuthorisationFlags that a partial approval is allowed and it's possible that the authorised amount is lower than the requested amount.
AskGivingTriggers Adyen Giving, where the terminal asks if the shopper wants to donate to charity.
AskGratuityTriggers tipping from the terminal, where the terminal asks if the shopper wants to tip.
BypassPinBypasses PIN entry when the shopper says they don't know the PIN for the card and you either know they are the legitimate cardholder or want to give them the benefit of the doubt.This is the process:
  1. Your store staff cancels the existing transaction and initiates a new transaction through the cash register.
  2. The shopper presses the green key (CONFIRM) when prompted for a PIN and provides a signature.
  3. Your store staff checks and approves the signature.
Because a cardholder is expected to know the PIN for their card, we recommend verifying the signature as well as the cardholder name with some form of identification.
ForcedDeclineForces the transaction to be declined, for example, if fraud is suspected.
MOTOTriggers Mail Order/Telephone Order transactions on the payment terminal from the cash register. MOTO transactions are card-not-present transactions, where the shopper provides the merchant with the payment details by means of mail (not email), fax, or telephone.
ReceiptHandlerSpecifies that the cash register handles printing the receipt (or emailing the receipt). When you omit this tender option, the payment terminal must print the receipt. But if the terminal doesn't have a built-in printer, the transaction will fail.
SkipAIDPrioritySkip the application identifier (AID) priority that has been set in your Customer Area. This allows a shopper to select their preferred application (payment method).

Specify tender options

To specify a tender option:

  1. Make a PaymentRequest with a SaleData object that contains a SaleToAcquirerData field with one or more comma-separated values specified in one of the following formats:

    • Option 1: a JSON object {"tenderOption": "option"} converted to a Base64 encoded string.
      For example, you encode {"tenderOption": "AskGratuity,ReceiptHandler"} to Base64, and pass the result:
      "SaleToAcquirerData": "eyJ0ZW5kZXJPcHRpb24iOiAiQXNrR3JhdHVpdHksUmVjZWlwdEhhbmRsZXIifQ=="

    • Option 2: tenderOption=option.
      For example: "SaleToAcquirerData": "tenderOption=AskGratuity,ReceiptHandler"

    The format that you use here, will also be the format of the AdditionalResponse that you receive.

    The following example shows how you would pass the AskGratuity and ReceiptHandler tender options to the terminal.

    {
        "SaleToPOIRequest":{
            "PaymentRequest":{
                "SaleData":{
                    "SaleTransactionID":{
                        "TransactionID":"733",
                        "TimeStamp":"2022-03-16T07:51:15.685Z"
                    },
                    "SaleToAcquirerData":"tenderOption=AskGratuity,ReceiptHandler"
                },
                "PaymentTransaction":{
                    "AmountsReq":{
                        "Currency":"EUR",
                        "RequestedAmount":155.75
                    }
                }
            },
            "MessageHeader":{
                "ProtocolVersion":"3.0",
                "MessageClass":"Service",
                "MessageCategory":"Payment",
                "MessageType":"Request",
                "ServiceID":"0110123015",
                "SaleID":"POSSystemID12345",
                "POIID":"M400-260193322"
            }
        }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    PaymentRequest paymentRequest = new PaymentRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    saleData.setSaleToAcquirerData("tenderOption=AskGratuity,ReceiptHandler");
    paymentRequest.setSaleData(saleData);
    
    PaymentTransaction paymentTransaction = new PaymentTransaction();
    AmountsReq amountsReq = new AmountsReq();
    amountsReq.setCurrency("EUR");
    amountsReq.setRequestedAmount( BigDecimal.valueOf(155.75) );
    paymentTransaction.setAmountsReq(amountsReq);
    paymentRequest.setPaymentTransaction(paymentTransaction);
    saleToPOIRequest.setPaymentRequest(paymentRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

    The response shows the shopper added a tip.

    {
        "SaleToPOIResponse": {
            "MessageHeader": {...},
            "PaymentResponse": {
                "POIData": {
                    "POIReconciliationID": "1000",
                    "POITransactionID": {
                        "TimeStamp": "2022-03-16T07:51:17.000Z",
                        "TransactionID": "u6W7001525183770000.QFQTPCQ8HXSKGK82"
                    }
                },
                "PaymentReceipt": [...],
                "PaymentResult": {
                    "AmountsResp": {
                        "AuthorizedAmount": 163.53,
                        "Currency": "EUR",
                        "TipAmount": 7.78
                    },
                    "AuthenticationMethod": [
                        "OnlinePIN"
                    ],
                    "OnlineFlag": true,
                    "PaymentAcquirerData": {...},
                    "PaymentInstrumentData": {...},
                        "PaymentInstrumentType": "Card"
                    }
                },
                "Response": {
                    "AdditionalResponse": "...posadditionalamounts.originalAmountValue=15575...gratuityAmount=778&posAmountGratuityValue=778...&posOriginalAmountValue=15575...posAuthAmountValue=16353&posadditionalamounts.gratuityAmount=778",
                    "Result": "Success"
                },
                "SaleData": {
                    "SaleTransactionID": {
                        "TimeStamp": "2022-03-16T07:51:15.685Z",
                        "TransactionID": "733"
                    }
                }
            }
        }
    }

Combining tender options and other data elements

In case of a tender options that is passed in the SaleToAcquirerData field, you can also add other information in that field. For example, you can add application info, or add data elements for shopper recognition.

To combine tender options and other data elements, see Add information to a payment.

See also