{"title":"Override configured tipping options","category":"default","creationDate":1729773780,"content":"<p>If you have defined default tipping options in your Customer Area, you may want to present different tipping options depending on the type of goods or services that a shopper buys. For example, if a shopper buys a cup of coffee, percentage-based tipping results in a lower tip for your staff than predefined fixed amounts.<\/p>\n<p>You can override the settings defined in your Customer Area by specifying the tipping options in the payment request. This shows the new tipping options on the terminal screen during the payment flow. However, you need to implement logic in your system when to trigger the override, such as logic to offer fixed amount options instead of percentages if the total amount is low.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements and preparations.<\/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=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> integration with payment terminals on software version 1.97 or later.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin, you need to implement logic in your system when to trigger the override.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Tipping options<\/h2>\n<p>You can present your customer with either three percentage options or three tipping amount options. Additionally, you can enable the flag to present a <strong>Custom<\/strong> tip option. The <strong>No tip<\/strong> option is always included.<\/p>\n<h2>Specify tipping options in the payment request<\/h2>\n<p>To override the configured tipping options, in the payment request you need to include the <span translate=\"no\"><strong>AskGratuity<\/strong><\/span> <a href=\"\/pt\/point-of-sale\/add-data\/tender-options\">tender option<\/a> and a Base64-encoded <code>Operation<\/code> object with the new tipping options.<\/p>\n<div class=\"notices green\">\n<p>Software versions 1.97 to 1.100 use an outdated <code>Operation<\/code> object format. Choose the correct version tab in Step 1.<\/p>\n<\/div>\n<ol>\n<li>\n<p>Create an <code>Operation<\/code> JSON object. Select the tab for the software version that your terminal is using.<\/p>\n\n<div id=\"tabvSXUw\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Software version 1.101 and later&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Specify the following parameters:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;Type&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Payment&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;TipOptions&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;In the &lt;code&gt;TipSuggestions&lt;\\\/code&gt; object specify:&lt;br\\\/&gt; &lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Up to three tipping options for either a fixed tipping amount (&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Amount1&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Amount2&lt;\\\/strong&gt;&lt;\\\/span&gt;, and &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Amount3&lt;\\\/strong&gt;&lt;\\\/span&gt;) or a percentage of the original payment amount (&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Percentage1&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Percentage2&lt;\\\/strong&gt;&lt;\\\/span&gt;, and &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Percentage3&lt;\\\/strong&gt;&lt;\\\/span&gt;). The numeric value for the percentage tipping options must not be greater than 100.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TipCustom&lt;\\\/code&gt; (optional): lets the customer enter a custom tipping amount. Can be &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt; or &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;br\\\/&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Operation object with percentage options and TipCustom enabled&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;Operation\\\\\\&quot;:[\\\\n        {\\\\n            \\\\\\&quot;Type\\\\\\&quot;:\\\\\\&quot;Payment\\\\\\&quot;,\\\\n            \\\\\\&quot;TipOptions\\\\\\&quot;:{\\\\n                \\\\\\&quot;TipSuggestions\\\\\\&quot;:{\\\\n                \\\\\\&quot;Percentage1\\\\\\&quot;:15,\\\\n                \\\\\\&quot;Percentage2\\\\\\&quot;:18,\\\\n                \\\\\\&quot;Percentage3\\\\\\&quot;:20,\\\\n                \\\\\\&quot;TipCustom\\\\\\&quot;:true\\\\n                }\\\\n            }\\\\n        }\\\\n    ]\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;software_version_1.101_and_later_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Software version 1.97 to 1.100 &quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Specify the following parameters:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;Type&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Payment&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;Variant&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;TipSuggestions&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;Data&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;An object that contains:&lt;br\\\/&gt; &lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Up to three tipping options for either a fixed tipping amount (&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Amount1&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Amount2&lt;\\\/strong&gt;&lt;\\\/span&gt;, and &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Amount3&lt;\\\/strong&gt;&lt;\\\/span&gt;) or a percentage of the original payment amount (&lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Percent1&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Percent2&lt;\\\/strong&gt;&lt;\\\/span&gt;, and &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;Percent3&lt;\\\/strong&gt;&lt;\\\/span&gt;). The numeric value for the percentage tipping options must not be greater than 100.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;TipCustom&lt;\\\/code&gt; (optional): allows shopper to place a custom tipping amount. Can be &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt; or &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;false&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;br\\\/&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Operation object with percentage options and custom tips enabled&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;Operation\\\\\\&quot;:[\\\\n        {\\\\n            \\\\\\&quot;Type\\\\\\&quot;:\\\\\\&quot;Payment\\\\\\&quot;,\\\\n            \\\\\\&quot;Variant\\\\\\&quot;:\\\\\\&quot;TipSuggestions\\\\\\&quot;,\\\\n            \\\\\\&quot;Data\\\\\\&quot;:{\\\\n                \\\\\\&quot;Percent1\\\\\\&quot;:15,\\\\n                \\\\\\&quot;Percent2\\\\\\&quot;:18,\\\\n                \\\\\\&quot;Percent3\\\\\\&quot;:20,\\\\n                \\\\\\&quot;TipCustom\\\\\\&quot;:true\\\\n            }\\\\n        }\\\\n    ]\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;software_version_1.97_to_1.100__1_2&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<li>\n<p>Encode the <code>Operation<\/code> JSON object to Base64. You will pass the resulting string in <code>SaleData.SaleToPOIData<\/code>. The example below shows a Base64-encoded string of the <code>Operation<\/code> object for software version V1.101 and later.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Converted to a Base64-encoded string'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"ewogICAgIk9wZXJhdGlvbiI6WwogICAgICAgIHsKICAgICAgICAgICAgIlR5cGUiOiJQYXltZW50IiwKICAgICAgICAgICAgIlRpcE9wdGlvbnMiOnsKICAgICAgICAgICAgICAgICJUaXBTdWdnZXN0aW9ucyI6ewogICAgICAgICAgICAgICAgICAgICJQZXJjZW50YWdlMSI6MTUsCiAgICAgICAgICAgICAgICAgICAgIlBlcmNlbnRhZ2UyIjoxOCwKICAgICAgICAgICAgICAgICAgICAiUGVyY2VudGFnZTMiOjIwLAogICAgICAgICAgICAgICAgICAgICJUaXBDdXN0b20iOnRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIF0KfQ==\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p><a href=\"\/pt\/point-of-sale\/basic-tapi-integration\/make-a-payment#make-a-payment\">Make a payment request<\/a>, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api#request-message-header\">\n  <code>SaleToPOIRequest.MessageHeader<\/code>\n<\/a> object, with <code>MessageClass<\/code> set to <span translate=\"no\"><strong>Service<\/strong><\/span> and <code>MessageCategory<\/code> set to <span translate=\"no\"><strong>Payment<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>ProtocolVersion<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><strong>3.0<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageClass<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Service<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageCategory<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Payment<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Request<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ServiceID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (<code>POIID<\/code>) being used.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for the POS system component to send this request from.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>POIID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The unique ID of the terminal to send this request to. Format: <em>[device model]-[serial number]<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentRequest<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.SaleToAcquirerData<\/code><\/td>\n<td style=\"text-align: left;\">The <span translate=\"no\"><strong>AskGratuity<\/strong><\/span> tender option that triggers the terminal to start the tipping flow. <p>See <a href=\"\/pt\/point-of-sale\/add-data\/tender-options\/#pass-tender-options\">Specify tender options<\/a>.<\/p><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.SaleToPOIData<\/code><\/td>\n<td style=\"text-align: left;\">An object with the Base64-encoded <code>Operation<\/code> string that contains the new tipping options.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentTransaction.AmountsReq<\/code><\/td>\n<td style=\"text-align: left;\">An object with: <ul><li markdown=\"1\"><code>Currency<\/code>: The transaction <a href=\"\/pt\/development-resources\/currency-codes\">currency<\/a>.<\/li><li markdown=\"1\"><code>RequestedAmount<\/code>: The purchase amount, with decimals.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The example below shows how to present tipping options and initiate a transaction of <strong>EUR&nbsp;10.00<\/strong>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment request with tipping override'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"SaleToPOIRequest\\\":{\\n    \\\"MessageHeader\\\":{\\n      \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n      \\\"MessageClass\\\":\\\"Service\\\",\\n      \\\"MessageCategory\\\":\\\"Payment\\\",\\n      \\\"MessageType\\\":\\\"Request\\\",\\n      \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n      \\\"ServiceID\\\":\\\"0207111104\\\",\\n      \\\"POIID\\\":\\\"P400Plus-275688710\\\"\\n    },\\n    \\\"PaymentRequest\\\":{\\n      \\\"SaleData\\\":{\\n        \\\"SaleToAcquirerData\\\": \\\"tenderOption=AskGratuity\\\",\\n        \\\"SaleTransactionID\\\":{\\n          \\\"TransactionID\\\":\\\"27908\\\",\\n          \\\"TimeStamp\\\":\\\"2019-12-17T10:11:03.000Z\\\"\\n        },\\n        \\\"SaleToPOIData\\\":\\n            \\\"ewogICAgIk9wZXJhdGlvbiI6WwogICAgICAgIHsKICAgICAgICAgICAgIlR5cGUiOiJQYXltZW50IiwKICAgICAgICAgICAgIlRpcE9wdGlvbnMiOnsKICAgICAgICAgICAgICAgICJUaXBTdWdnZXN0aW9ucyI6ewogICAgICAgICAgICAgICAgICAgICJQZXJjZW50YWdlMSI6MTUsCiAgICAgICAgICAgICAgICAgICAgIlBlcmNlbnRhZ2UyIjoxOCwKICAgICAgICAgICAgICAgICAgICAiUGVyY2VudGFnZTMiOjIwLAogICAgICAgICAgICAgICAgICAgICJUaXBDdXN0b20iOnRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIF0KfQ==\\\"\\n      },\\n      \\\"PaymentTransaction\\\":{\\n        \\\"AmountsReq\\\":{\\n          \\\"Currency\\\":\\\"EUR\\\",\\n          \\\"RequestedAmount\\\":10.00\\n        }\\n      }\\n    }\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>In the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/payment#responses-200\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">PaymentResponse<\/a> note the following:<\/p>\n<ul>\n<li>\n<p><code>PaymentReceipt<\/code>: receipt data with the original purchase amount, the gratuity amount, and the total amount. If the customer didn't add a tip, the gratuity amount is not included.<\/p>\n<\/li>\n<li>\n<p><code>PaymentResult.AmountsResp<\/code>:<\/p>\n<ul>\n<li><code>TipAmount<\/code>: the amount of the tip. If the customer didn't add a tip, this field is not included.<\/li>\n<li><code>AuthorizedAmount<\/code>: the total authorized amount of the transaction, consisting of the original purchase amount plus the tip amount.<\/li>\n<li><code>Currency<\/code>: the currency of the payment.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>Response.AdditionalResponse<\/code>: additional transaction data. Depending on <a href=\"\/pt\/point-of-sale\/add-data\/#receive-additional-data\">your settings<\/a>, you receive either a string of form-encoded key-value pairs or a Base64 string that you need to decode to get a JSON object. This includes:<\/p>\n<ul>\n<li><code>posadditionalamounts.originalAmountValue<\/code>: the original purchase amount in <a href=\"\/pt\/development-resources\/currency-codes\">minor units<\/a>.<\/li>\n<li><code>posAmountGratuityValue<\/code>: the tip amount in minor units.<\/li>\n<li><code>authorisedAmountValue<\/code>: the total authorized amount in minor units.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The example below shows the response for a transaction of <strong>EUR 10.00<\/strong> with a 20 percent tip added.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIResponse\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"MessageCategory\\\":\\\"Payment\\\",\\n         \\\"MessageClass\\\":\\\"Service\\\",\\n         \\\"MessageType\\\":\\\"Response\\\",\\n         \\\"POIID\\\":\\\"P400Plus-275688710\\\",\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"ServiceID\\\":\\\"775\\\"\\n      },\\n      \\\"PaymentResponse\\\":{\\n         \\\"POIData\\\":{\\n            \\\"POIReconciliationID\\\":\\\"1000\\\",\\n            \\\"POITransactionID\\\":{\\n               \\\"TimeStamp\\\":\\\"2024-04-16T09:12:45.865Z\\\",\\n               \\\"TransactionID\\\":\\\"gGZx001713258765025.MLJL4MVNBC3GDXT5\\\"\\n            }\\n         },\\n         \\\"PaymentReceipt\\\":[\\n            \\\"...\\\"\\n         ],\\n         \\\"PaymentResult\\\":{\\n            \\\"AmountsResp\\\":{\\n               \\\"AuthorizedAmount\\\":12.00,\\n               \\\"Currency\\\":\\\"EUR\\\",\\n               \\\"TipAmount\\\":2.00\\n            },\\n            \\\"OnlineFlag\\\":true,\\n            \\\"PaymentAcquirerData\\\":{...},\\n            \\\"PaymentInstrumentData\\\":{...}\\n         },\\n         \\\"Response\\\":{\\n            \\\"AdditionalResponse\\\":\\\"...posAmountGratuityValue=200&amp;posAuthAmountCurrency=EUR&amp;posAuthAmountValue=1200&amp;posEntryMode=CLESS_CHIP&amp;posOriginalAmountValue=1000&amp;posadditionalamounts.gratuityAmount=200&amp;posadditionalamounts.originalAmountCurrency=EUR&amp;posadditionalamounts.originalAmountValue=1000&amp;...\\\",\\n            \\\"Result\\\":\\\"Success\\\"\\n         },\\n         \\\"SaleData\\\":{\\n            \\\"SaleTransactionID\\\":{\\n               \\\"TimeStamp\\\":\\\"2024-04-16T09:12:44.892Z\\\",\\n               \\\"TransactionID\\\":\\\"181\\\"\\n            }\\n         }\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/tipping\/tipping-from-terminal\"\n                        target=\"_self\"\n                        >\n                    Tipping from the terminal\n                <\/a><\/li><li><a href=\"\/point-of-sale\/tipping\/tipping-from-terminal\/change-amount-to-tip-on\"\n                        target=\"_self\"\n                        >\n                    Specify the amount to tip on\n                <\/a><\/li><li><a href=\"\/point-of-sale\/basic-tapi-integration\/make-a-payment\"\n                        target=\"_self\"\n                        >\n                    Make a payment\n                <\/a><\/li><li><a href=\"\/point-of-sale\/add-data\/tender-options\"\n                        target=\"_self\"\n                        >\n                    Tender options\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/tipping\/tipping-from-terminal\/override-tipping-configuration","articleFields":{"description":"Offer shoppers tipping options on the terminal to match different tipping scenarios.","type":"page","feedback_component":true,"filters_component":false,"decision_tree":"[]","page_id":"db25bc41-b3b7-4cea-aa66-c7d58021ad90","last_edit_on":"30-10-2024 09:25"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/tipping\/tipping-from-terminal\/override-tipping-configuration","title":"Override configured tipping options","content":"If you have defined default tipping options in your Customer Area, you may want to present different tipping options depending on the type of goods or services that a shopper buys. For example, if a shopper buys a cup of coffee, percentage-based tipping results in a lower tip for your staff than predefined fixed amounts.\nYou can override the settings defined in your Customer Area by specifying the tipping options in the payment request. This shows the new tipping options on the terminal screen during the payment flow. However, you need to implement logic in your system when to trigger the override, such as logic to offer fixed amount options instead of percentages if the total amount is low.\nRequirements\nBefore you begin, take into account the following requirements and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals on software version 1.97 or later.\n\n\nSetup steps\nBefore you begin, you need to implement logic in your system when to trigger the override.\n\n\n\nTipping options\nYou can present your customer with either three percentage options or three tipping amount options. Additionally, you can enable the flag to present a Custom tip option. The No tip option is always included.\nSpecify tipping options in the payment request\nTo override the configured tipping options, in the payment request you need to include the AskGratuity tender option and a Base64-encoded Operation object with the new tipping options.\n\nSoftware versions 1.97 to 1.100 use an outdated Operation object format. Choose the correct version tab in Step 1.\n\n\n\nCreate an Operation JSON object. Select the tab for the software version that your terminal is using.\n\n\n    \n        \n        \n    \n\n\n\n\nEncode the Operation JSON object to Base64. You will pass the resulting string in SaleData.SaleToPOIData. The example below shows a Base64-encoded string of the Operation object for software version V1.101 and later.\n\n\n\n\n\nMake a payment request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to Payment.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nPayment\n\n\nMessageType\n\nRequest\n\n\nServiceID\n\nYour 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.\n\n\nSaleID\n\nYour unique ID for the POS system component to send this request from.\n\n\nPOIID\n\nThe unique ID of the terminal to send this request to. Format: [device model]-[serial number].\n\n\n\n\n\n\n\nThe  PaymentRequest object with:\n\n\n\nParameter\nDescription\n\n\n\n\nSaleData.SaleToAcquirerData\nThe AskGratuity tender option that triggers the terminal to start the tipping flow. See Specify tender options.\n\n\nSaleData.SaleToPOIData\nAn object with the Base64-encoded Operation string that contains the new tipping options.\n\n\nPaymentTransaction.AmountsReq\nAn object with: Currency: The transaction currency.RequestedAmount: The purchase amount, with decimals.\n\n\n\n\n\nThe example below shows how to present tipping options and initiate a transaction of EUR&nbsp;10.00.\n\n\n\n\n\nIn the  PaymentResponse note the following:\n\n\nPaymentReceipt: receipt data with the original purchase amount, the gratuity amount, and the total amount. If the customer didn't add a tip, the gratuity amount is not included.\n\n\nPaymentResult.AmountsResp:\n\nTipAmount: the amount of the tip. If the customer didn't add a tip, this field is not included.\nAuthorizedAmount: the total authorized amount of the transaction, consisting of the original purchase amount plus the tip amount.\nCurrency: the currency of the payment.\n\n\n\nResponse.AdditionalResponse: additional transaction data. Depending on your settings, you receive either a string of form-encoded key-value pairs or a Base64 string that you need to decode to get a JSON object. This includes:\n\nposadditionalamounts.originalAmountValue: the original purchase amount in minor units.\nposAmountGratuityValue: the tip amount in minor units.\nauthorisedAmountValue: the total authorized amount in minor units.\n\n\n\nThe example below shows the response for a transaction of EUR 10.00 with a 20 percent tip added.\n\n\n\n\n\nSee also\n\n\n                    Tipping from the terminal\n                \n                    Specify the amount to tip on\n                \n                    Make a payment\n                \n                    Tender options\n                \n","type":"page","locale":"pt","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Gorjeta","lvl3":"Gorjeta pelo terminal","lvl4":"Override configured tipping options"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/point-of-sale","lvl2":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/tipping","lvl3":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/tipping\/tipping-from-terminal","lvl4":"\/pt\/point-of-sale\/tipping\/tipping-from-terminal\/override-tipping-configuration"},"levels":5,"category":"In-person payments","category_color":"green","tags":["Override","configured","tipping","options"]}}
