{"title":"Use tender options","category":"default","creationDate":1779796134,"content":"<div class=\"additional-info-block output-inline\">\n<h5 class=\"article__heading additional-info-block__title\">Using our Standalone solution?<\/h5><div class=\"additional-info-block__body\"><p>With our <a href=\"\/point-of-sale\/standalone\">standalone solution<\/a>, Support can configure tender options and transaction conditions for your account.<\/p><\/div><\/div>\n\n<p>Tender options are parameters that change how the <a href=\"\/get-started-with-adyen\/adyen-glossary\/#tender\">tender<\/a> is processed. For example, the tender option <code>AskGratuity<\/code> triggers the payment terminal to ask the shopper for a tip.<\/p>\n<p>Tender options are passed in the <code>SaleToAcquirerData<\/code> field of the Terminal API request.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">A <a href=\"\/point-of-sale\/basic-tapi-integration\/\">Terminal API<\/a> integration with payment terminals.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"tender-options-saletoacquirerdata\">Tender options<\/h2>\n<p>The following table shows the tender options you can pass in the <code>SaleData.SaleToAcquirerData<\/code> field.<\/p>\n<table><thead><tr class=\"header\"><th>Name<\/th><th>Description<\/th><\/tr><\/thead><tbody>\n<tr><td>\n<p><code>AllowPartialAuthorisation<\/code><\/p>\n<\/td><td>\n<p>Flags that a partial approval is allowed and it is possible that the authorized amount is lower than the requested amount.<\/p>\n<\/td><\/tr>\n<tr><td>\n<p><code>AskGiving<\/code><\/p>\n<\/td><td>\n<p>Triggers <a href=\"\/point-of-sale\/donate\">Adyen Giving<\/a>, where the terminal asks if the shopper wants to donate to charity.<\/p>\n<\/td><\/tr>\n<tr><td>\n<p><code>AskGratuity<\/code><\/p>\n<\/td><td>\n<p>Triggers <a href=\"\/point-of-sale\/tipping\/tipping-from-terminal\">tipping from the terminal<\/a>, where the terminal asks if the shopper wants to tip.<\/p>\n<\/td><\/tr>\n<tr><td>\n<p><code>ForcedDecline<\/code><\/p>\n<\/td><td>\n<p>Forces the transaction to be declined, for example, if fraud is suspected.<\/p>\n<\/td><\/tr>\n<tr><td>\n<p><code>MOTO<\/code><\/p>\n<\/td><td>\n<p>Triggers <a href=\"\/point-of-sale\/mail-and-telephone-order-moto\">Mail Order\/Telephone Order transactions<\/a> on the payment terminal from the POS app. MOTO transactions are <a href=\"\/get-started-with-adyen\/adyen-glossary\/#card-not-present-cnp\">card-not-present transactions<\/a>, where the shopper provides the merchant with the payment details by means of mail (not email), fax, or telephone.<\/p>\n<\/td><\/tr>\n<tr><td>\n<p><code>ReceiptHandler<\/code><\/p>\n<\/td><td>\n<p>Specifies that the POS app 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.<\/p>\n<\/td><\/tr>\n<tr><td>\n<p><code>SkipAIDPriority<\/code><\/p>\n<\/td><td>\n<p>Skip the application identifier (AID) priority that has been set in your Customer Area. This allows a shopper to select their preferred application (payment method).<\/p>\n<\/td><\/tr>\n<\/tbody><\/table>\n<h2 id=\"pass-tender-options\">Specify tender options<\/h2>\n<p>To specify a tender option:<\/p>\n<ul>\n<li>\n<p><a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment\">Make a payment request<\/a> with a <code>SaleData<\/code> object that contains a <code>SaleToAcquirerData<\/code> field with one or more comma-separated values (without spaces) specified in one of the following formats:<\/p>\n<ul>\n<li>\n<p>Option 1: a JSON object <code>{\"tenderOption\": \"option\"}<\/code> converted to a Base64 encoded string.<br \/>\nFor example, you encode <code>{\"tenderOption\": \"AskGratuity,ReceiptHandler\"}<\/code> to Base64, and pass the result:<br \/>\n<code>\"SaleToAcquirerData\": \"eyJ0ZW5kZXJPcHRpb24iOiAiQXNrR3JhdHVpdHksUmVjZWlwdEhhbmRsZXIifQ==\"<\/code><\/p>\n<\/li>\n<li>\n<p>Option 2: a <code>tenderOption=<\/code> key\/value pair.<br \/>\nFor example: <code>\"SaleToAcquirerData\": \"tenderOption=AskGratuity,ReceiptHandler\"<\/code><\/p>\n<\/li>\n<\/ul>\n<p>The format that you use here, will also be the format of the <code>AdditionalResponse<\/code> that you receive.<\/p>\n<p>The following example shows how to pass the <code>AskGratuity<\/code> and <code>ReceiptHandler<\/code> tender options to the terminal.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"''\" :id=\"'tender-options_1'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"JSON\",\"content\":\"{\\n    \\\"SaleToPOIRequest\\\":{\\n        \\\"PaymentRequest\\\":{\\n            \\\"SaleData\\\":{\\n                \\\"SaleTransactionID\\\":{\\n                    \\\"TransactionID\\\":\\\"733\\\",\\n                    \\\"TimeStamp\\\":\\\"2022-03-16T07:51:15.685Z\\\"\\n                },\\n                \\\"SaleToAcquirerData\\\":\\\"tenderOption=AskGratuity,ReceiptHandler\\\"\\n            },\\n            \\\"PaymentTransaction\\\":{\\n                \\\"AmountsReq\\\":{\\n                    \\\"Currency\\\":\\\"EUR\\\",\\n                    \\\"RequestedAmount\\\":155.75\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\":{\\n            \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n            \\\"MessageClass\\\":\\\"Service\\\",\\n            \\\"MessageCategory\\\":\\\"Payment\\\",\\n            \\\"MessageType\\\":\\\"Request\\\",\\n            \\\"ServiceID\\\":\\\"0110123015\\\",\\n            \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n            \\\"POIID\\\":\\\"M400-260193322\\\"\\n        }\\n    }\\n}\"},{\"language\":\"java\",\"tabTitle\":\"Java\",\"content\":\"String serviceID = \\\"YOUR_UNIQUE_ATTEMPT_ID\\\";\\nString saleID = \\\"YOUR_CASH_REGISTER_ID\\\";\\nString POIID = \\\"YOUR_TERMINAL_ID\\\";\\nString transactionID = \\\"YOUR_UNIQUE_TRANSACTION_ID\\\";\\n\\nSaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();\\nMessageHeader messageHeader = new MessageHeader();\\nmessageHeader.setProtocolVersion(\\\"3.0\\\");\\nmessageHeader.setMessageClass( MessageClassType.SERVICE );\\nmessageHeader.setMessageCategory( MessageCategoryType.PAYMENT );\\nmessageHeader.setMessageType( MessageType.REQUEST );\\nmessageHeader.setServiceID(serviceID);\\nmessageHeader.setSaleID(saleID);\\nmessageHeader.setPOIID(POIID);\\nsaleToPOIRequest.setMessageHeader(messageHeader);\\n\\nPaymentRequest paymentRequest = new PaymentRequest();\\nSaleData saleData = new SaleData();\\nTransactionIdentification saleTransactionID = new TransactionIdentification();\\nsaleTransactionID.setTransactionID(transactionID);\\nsaleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));\\nsaleData.setSaleTransactionID(saleTransactionID);\\nsaleData.setSaleToAcquirerData(\\\"tenderOption=AskGratuity,ReceiptHandler\\\");\\npaymentRequest.setSaleData(saleData);\\n\\nPaymentTransaction paymentTransaction = new PaymentTransaction();\\nAmountsReq amountsReq = new AmountsReq();\\namountsReq.setCurrency(\\\"EUR\\\");\\namountsReq.setRequestedAmount( BigDecimal.valueOf(155.75) );\\npaymentTransaction.setAmountsReq(amountsReq);\\npaymentRequest.setPaymentTransaction(paymentTransaction);\\nsaleToPOIRequest.setPaymentRequest(paymentRequest);\\nterminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response shows the shopper added a tip.<\/p>\n<pre><code class=\"language-json\">{\n    \"SaleToPOIResponse\": {\n        \"MessageHeader\": {...},\n        \"PaymentResponse\": {\n            \"POIData\": {\n                \"POIReconciliationID\": \"1000\",\n                \"POITransactionID\": {\n                    \"TimeStamp\": \"2022-03-16T07:51:17.000Z\",\n                    \"TransactionID\": \"u6W7001525183770000.QFQTPCQ8HXSKGK82\"\n                }\n            },\n            \"PaymentReceipt\": [...],\n            \"PaymentResult\": {\n                \"AmountsResp\": {\n                    \"AuthorizedAmount\": 163.53,\n                    \"Currency\": \"EUR\",\n                    \"TipAmount\": 7.78\n                },\n                \"AuthenticationMethod\": [\n                    \"OnlinePIN\"\n                ],\n                \"OnlineFlag\": true,\n                \"PaymentAcquirerData\": {...},\n                \"PaymentInstrumentData\": {...},\n                    \"PaymentInstrumentType\": \"Card\"\n                }\n            },\n            \"Response\": {\n                \"AdditionalResponse\": \"...posadditionalamounts.originalAmountValue=15575...gratuityAmount=778&amp;posAmountGratuityValue=778...&amp;posOriginalAmountValue=15575...posAuthAmountValue=16353&amp;posadditionalamounts.gratuityAmount=778\",\n                \"Result\": \"Success\"\n            },\n            \"SaleData\": {\n                \"SaleTransactionID\": {\n                    \"TimeStamp\": \"2022-03-16T07:51:15.685Z\",\n                    \"TransactionID\": \"733\"\n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>Combining tender options and other data elements<\/h2>\n<p>When you pass tender options in the <code>SaleToAcquirerData<\/code> field, you can also add other information in that field. For example, you can add <a href=\"\/point-of-sale\/basic-tapi-integration\/pass-application-information\">application info<\/a>, or add data for <a href=\"\/point-of-sale\/shopper-recognition\">shopper recognition<\/a>.<\/p>\n<p>To combine tender options and other data elements, see <a href=\"\/point-of-sale\/add-data\">Add information to a payment<\/a>.<\/p>\n<h2>Other ways to change transaction processing<\/h2>\n<p>Apart from passing tender options, there are other ways to influence the transaction processing. You can:<\/p>\n<ul>\n<li>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 <a href=\"\/point-of-sale\/enter-payment-manually\">Manual Keyed Entry (MKE) payments<\/a> and <a href=\"\/point-of-sale\/installments\/brazil-installments\">payments in Brazil<\/a>.<\/li>\n<li>Configure default tender options and transaction conditions. The terminal will then use these for every payment. Ask our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> for help.<\/li>\n<\/ul>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/enter-payment-manually\"\n                        target=\"_self\"\n                        >\n                    Manually entering payments (MKE)\n                <\/a><\/li><li><a href=\"\/point-of-sale\/add-data\"\n                        target=\"_self\"\n                        >\n                    Add information to a payment\n                <\/a><\/li><li><a href=\"\/point-of-sale\/error-scenarios\"\n                        target=\"_self\"\n                        >\n                    Handle responses\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/point-of-sale\/add-data\/tender-options","articleFields":{"description":"Use parameters to change how a transaction is processed.","id":"24217621","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"17-04-2020 11:21","page_id":"38b333ab-551b-472b-bab7-060873954dc5","feedback_component":true,"filters_component":false,"decision_tree":"[]"},"algolia":{"url":"https:\/\/docs.adyen.com\/point-of-sale\/add-data\/tender-options","title":"Use tender options","content":"\nUsing our Standalone solution?With our standalone solution, Support can configure tender options and transaction conditions for your account.\n\nTender 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.\nTender options are passed in the SaleToAcquirerData field of the Terminal API request.\nRequirements\nBefore you begin, take into account the following requirements.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals.\n\n\n\nTender options\nThe following table shows the tender options you can pass in the SaleData.SaleToAcquirerData field.\nNameDescription\n\nAllowPartialAuthorisation\n\nFlags that a partial approval is allowed and it is possible that the authorized amount is lower than the requested amount.\n\n\nAskGiving\n\nTriggers Adyen Giving, where the terminal asks if the shopper wants to donate to charity.\n\n\nAskGratuity\n\nTriggers tipping from the terminal, where the terminal asks if the shopper wants to tip.\n\n\nForcedDecline\n\nForces the transaction to be declined, for example, if fraud is suspected.\n\n\nMOTO\n\nTriggers Mail Order\/Telephone Order transactions on the payment terminal from the POS app. 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.\n\n\nReceiptHandler\n\nSpecifies that the POS app 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.\n\n\nSkipAIDPriority\n\nSkip the application identifier (AID) priority that has been set in your Customer Area. This allows a shopper to select their preferred application (payment method).\n\n\nSpecify tender options\nTo specify a tender option:\n\n\nMake a payment request with a SaleData object that contains a SaleToAcquirerData field with one or more comma-separated values (without spaces) specified in one of the following formats:\n\n\nOption 1: a JSON object {\"tenderOption\": \"option\"} converted to a Base64 encoded string.\nFor example, you encode {\"tenderOption\": \"AskGratuity,ReceiptHandler\"} to Base64, and pass the result:\n\"SaleToAcquirerData\": \"eyJ0ZW5kZXJPcHRpb24iOiAiQXNrR3JhdHVpdHksUmVjZWlwdEhhbmRsZXIifQ==\"\n\n\nOption 2: a tenderOption= key\/value pair.\nFor example: \"SaleToAcquirerData\": \"tenderOption=AskGratuity,ReceiptHandler\"\n\n\nThe format that you use here, will also be the format of the AdditionalResponse that you receive.\nThe following example shows how to pass the AskGratuity and ReceiptHandler tender options to the terminal.\n\n\n\nThe response shows the shopper added a tip.\n{\n    \"SaleToPOIResponse\": {\n        \"MessageHeader\": {...},\n        \"PaymentResponse\": {\n            \"POIData\": {\n                \"POIReconciliationID\": \"1000\",\n                \"POITransactionID\": {\n                    \"TimeStamp\": \"2022-03-16T07:51:17.000Z\",\n                    \"TransactionID\": \"u6W7001525183770000.QFQTPCQ8HXSKGK82\"\n                }\n            },\n            \"PaymentReceipt\": [...],\n            \"PaymentResult\": {\n                \"AmountsResp\": {\n                    \"AuthorizedAmount\": 163.53,\n                    \"Currency\": \"EUR\",\n                    \"TipAmount\": 7.78\n                },\n                \"AuthenticationMethod\": [\n                    \"OnlinePIN\"\n                ],\n                \"OnlineFlag\": true,\n                \"PaymentAcquirerData\": {...},\n                \"PaymentInstrumentData\": {...},\n                    \"PaymentInstrumentType\": \"Card\"\n                }\n            },\n            \"Response\": {\n                \"AdditionalResponse\": \"...posadditionalamounts.originalAmountValue=15575...gratuityAmount=778&amp;posAmountGratuityValue=778...&amp;posOriginalAmountValue=15575...posAuthAmountValue=16353&amp;posadditionalamounts.gratuityAmount=778\",\n                \"Result\": \"Success\"\n            },\n            \"SaleData\": {\n                \"SaleTransactionID\": {\n                    \"TimeStamp\": \"2022-03-16T07:51:15.685Z\",\n                    \"TransactionID\": \"733\"\n                }\n            }\n        }\n    }\n}\n\n\nCombining tender options and other data elements\nWhen you pass tender options in the SaleToAcquirerData field, you can also add other information in that field. For example, you can add application info, or add data for shopper recognition.\nTo combine tender options and other data elements, see Add information to a payment.\nOther ways to change transaction processing\nApart from passing tender options, there are other ways to influence the transaction processing. You can:\n\nPass 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.\nConfigure default tender options and transaction conditions. The terminal will then use these for every payment. Ask our Support Team for help.\n\nSee also\n\n\n                    Manually entering payments (MKE)\n                \n                    Add information to a payment\n                \n                    Handle responses\n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"In-person payments","lvl2":"Add information to a payment","lvl3":"Use tender options"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/point-of-sale\/add-data","lvl3":"\/point-of-sale\/add-data\/tender-options"},"levels":4,"category":"In-person payments","category_color":"green","tags":["tender","options"]},"articleFiles":{"tender-options_1.json":"<p alt=\"\">tender-options_1.json<\/p>"}}
