{"title":"Dynamic surcharge","category":"default","creationDate":1776961627,"content":"<p>If you want to be in full control of surcharges, you can specify the surcharge amount in your in-person payment request. We refer to this as dynamic surcharge. To calculate the surcharge amount, you can use a third-party service or create your own calculation logic. If you accept ecommerce as well as point-of-sale payments, you can use the same calculation logic for both sales channels, taking into account all applicable compliance requirements.<\/p>\n<p>Depending on your <a href=\"\/pt\/point-of-sale\/surcharge#surcharge-methods\">use case<\/a>, you can combine dynamic surcharge with <a href=\"\/pt\/point-of-sale\/surcharge\/configuration\">configuration-based surcharge<\/a>.<\/p>\n<h2>Requirements<\/h2>\n<p>In addition to the general <a href=\"\/pt\/point-of-sale\/surcharge#requirements\">surcharge requirements<\/a>, take into account the following information.<\/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;\">Dynamic surcharge is supported with a <a href=\"\/pt\/point-of-sale\/design-your-integration\/\">Terminal API integration<\/a> with payment terminals on terminal software version <strong>1.118<\/strong> or later.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/api-credentials\">API credentials<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">To configure showing the <a href=\"\/pt\/point-of-sale\/surcharge#surcharge-confirmation-screen\">surcharge confirmation screen<\/a>, you must have an API credential with an API key and the following <a href=\"\/pt\/development-resources\/api-credentials#api-permissions\">roles<\/a>: <ul><li markdown=\"1\">Management API\u2014Terminal settings read<\/li> <li markdown=\"1\">Management API\u2014Terminal settings read and write<\/li><\/ul> If you have a Terminal API integration with <a href=\"\/pt\/point-of-sale\/design-your-integration\/choose-your-architecture#cloud-communications\">cloud-based communications<\/a>, you can use the existing API key that you use for Terminal API requests.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">It is recommended to subscribe to <strong>Standard<\/strong> webhooks and <a href=\"\/pt\/point-of-sale\/surcharge#surcharge-in-authorisation-webhooks\">enable<\/a> receiving the surcharge amount in AUTHORISATION webhook messages.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Requests to live Management API endpoints related to terminal settings are subject to <a href=\"\/pt\/point-of-sale\/automating-terminal-management#rate-limits-in-the-live-environment\">rate limits<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you start: <ul><li markdown=\"1\"><a href=\"\/pt\/point-of-sale\/card-acquisition\/identifiers\">Enable receiving the issuer country\/region<\/a> in API responses and webhook messages.<\/li> <li>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> to enable single tap.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>To use dynamic surcharge:<\/p>\n<ol>\n<li>\n<p>Design the customer experience. We recommend the following:<\/p>\n<ul>\n<li>\n<p>To inform customers about the changed amount after the surcharge is calculated, <a href=\"#show-confirmation\">configure showing<\/a> the <a href=\"\/pt\/point-of-sale\/surcharge#surcharge-confirmation-screen\">surcharge confirmation screen<\/a>. If you hide this screen, regulations require you to provide another form of surcharge disclosure.<\/p>\n<\/li>\n<li>\n<p>Use the single tap flow. This means that for contactless payments, customers do not need to tap again when they confirm they accept the surcharge. Contact 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> to enable single tap.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>To get the details that are needed to calculate the surcharge amount, you <a href=\"#card-acquisition-request\">make a card acquisition request<\/a>. These details include, for example, the transaction amount and currency, card brand, funding source, and issuing country of the card.<\/p>\n<p>Note the following:<\/p>\n<ul>\n<li>In Australia the surcharge compliance requirements are simple enough that you can consider skipping card acquisition.<\/li>\n<li>\n<p>Also note that Mobile solutions currently do not support card acquisition.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>On the payment terminal, a payment screen appears and  the customer  taps, inserts, or swipes their card.<\/p>\n<\/li>\n<li>\n<p>When you receive the card acquisition response, you pass the details for the surcharge calculation to your own surcharge calculation logic or to the third-party surcharge calculation service.<\/p>\n<\/li>\n<li>\n<p>When you get the calculated surcharge amount from your own system or the third party, you <a href=\"#payment-with-surcharge\">make a payment request with the surcharge amount<\/a>  as the <code>surchargeFee<\/code>  in the <code>SaleToAcquirerData<\/code>. The payment request must also refer to the card acquisition.<\/p>\n<\/li>\n<li>\n<p>The surcharge confirmation screen appears. This enables  the customer  to accept the surcharge, or cancel the transaction.<\/p>\n<div class=\"notices green\">\n<p>In a Mobile solution or if you configured to skip this Adyen-provided confirmation screen, you must provide another form of disclosure.<\/p>\n<\/div>\n<\/li>\n<li>\n<p>If  the customer  accepts the surcharge, the payment is processed and the payment response shows the surcharge amount in the <code>TotalFeesAmount<\/code> field.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"show-confirmation\">Show the confirmation screen<\/h2>\n<p>Adyen provides a surcharge confirmation screen that appears on the payment terminal to let the customer review and accept the surcharge, or cancel the transaction. You can configure this screen to be skipped. But if you do, you must provide another form of disclosure.<\/p>\n<p>To configure showing or hiding the surcharge confirmation screen:<\/p>\n<ol>\n<li>\n<p>Optionally, check the current setting for the surcharge confirmation screen by making a GET request to the <code>\/terminalSettings<\/code> endpoint for the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\/(companyId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">company account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchant account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\/(storeId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">store<\/a> or  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\/(terminalId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">terminal<\/a>. Check the <code>surcharge.askConfirmation<\/code> parameter.<\/p>\n<\/li>\n<li>\n<p>Make a PATCH request to the <code>\/terminalSettings<\/code> endpoint for the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/companies\/(companyId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">company account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/merchants\/(merchantId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchant account<\/a>,  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/stores\/(storeId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">store<\/a> or  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/get\/terminals\/(terminalId)\/terminalSettings\" class=\" external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">terminal<\/a>.<br \/>\nIn the request body, specify a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-surcharge\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">surcharge<\/a> object with the following parameter:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Data&nbsp;type<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Management\/latest\/patch\/companies\/(companyId)\/terminalSettings#request-surcharge-askConfirmation\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">askConfirmation<\/a><\/td>\n<td style=\"text-align: left;\">Boolean<\/td>\n<td style=\"text-align: left;\">Indicates whether to show (<strong>true<\/strong>) or hide (<strong>false<\/strong>) the <a href=\"#how-it-works\">surcharge confirmation screen<\/a> on the payment terminal.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Show the surcharge confirmation screen'\" :id=\"'code-sample-configure-confirmation'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/management-test.adyen.com\\\/v3\\\/stores\\\/{storeId}\\\/terminalSettings \\\\\\n-H 'x-API-key: YOUR_X-API-KEY' \\\\\\n-X PATCH \\\\\\n-d '{\\n    \\&quot;surcharge\\&quot;: {\\n        \\&quot;askConfirmation\\&quot;: true\\n    }\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Note that the response returns the setting for the surcharge confirmation screen as well as all other terminal settings at the level where you made the request.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"card-acquisition-request\">1. Make a card acquisition request<\/h2>\n<p>To calculate the surcharge amount, you need to know certain details. For example, if the customer is using a credit or debit card, and where the card was issued.<\/p>\n<p>We recommend getting these details through a card acquisition request. The response provides the details of the card that the customer presents to the payment terminal.<\/p>\n<ol>\n<li>\n<p>Make a <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> card acquisition request, 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>CardAcquisition<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th>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><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><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><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>CardAcquisition<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td><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><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><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><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\/cardacquisition\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionRequest<\/a> object with:<\/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>SaleData.SaleTransactionID<\/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;\">An object with: <ul><li markdown=\"1\"><code>TransactionID<\/code>: Your reference to identify a payment. We recommend using a unique value per payment.<\/li> <li markdown=\"1\"><code>TimeStamp<\/code>: The date and time of the request in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601#Coordinated_Universal_Time_(UTC)\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">UTC format<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>CardAcquisitionTransaction<\/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;\">An object with: <ul><li markdown=\"1\"><code>TotalAmount<\/code>: The amount due for the goods or services that the customer wants to purchase.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The examples show a card acquisition when the customer wants to purchase USD&nbsp;620.00 worth of goods or services.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Simple card acquisition request'\" :id=\"'surcharge-card-acquisition'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIRequest\\\":\\n        \\\"MessageHeader\\\": {\\n            \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n            \\\"MessageClass\\\": \\\"Service\\\",\\n            \\\"MessageCategory\\\": \\\"CardAcquisition\\\",\\n            \\\"MessageType\\\": \\\"Request\\\",\\n            \\\"ServiceID\\\": \\\"797\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"POIID\\\": \\\"V400m-324688179\\\"\\n        },\\n        \\\"CardAcquisitionRequest\\\": {\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TransactionID\\\": \\\"369\\\",\\n                    \\\"TimeStamp\\\": \\\"2026-01-05T15:57:06.973Z\\\"\\n                }\\n            },\\n            \\\"CardAcquisitionTransaction\\\": {\\n                \\\"TotalAmount\\\": 620.00\\n            }\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>When the card acquisition succeeds, the response contains a <code>message<\/code> of  <strong>CARD_ACQ_COMPLETED<\/strong> in the <code>AdditionalResponse<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"CardAcquisitionResponse\\\": {\\n            \\\"POIData\\\": {\\n                \\\"POIReconciliationID\\\": \\\"1000\\\",\\n                \\\"POITransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2026-01-05T15:57:20.465Z\\\",\\n                    \\\"TransactionID\\\": \\\"BV0q001767628639000\\\"\\n                }\\n            },\\n            \\\"PaymentInstrumentData\\\": {\\n                \\\"CardData\\\": {\\n                    \\\"CardCountryCode\\\": \\\"840\\\",\\n                    \\\"MaskedPan\\\": \\\"600007 **** 7003\\\",\\n                    \\\"PaymentBrand\\\": \\\"mc\\\",\\n                    \\\"SensitiveCardData\\\": {\\n                        \\\"ExpiryDate\\\": \\\"0330\\\"\\n                    }\\n                },\\n                \\\"PaymentInstrumentType\\\": \\\"Card\\\"\\n            },\\n            \\\"Response\\\": {\\n                \\\"AdditionalResponse\\\": \\\"PaymentAccountReference=t9BVKrTbgJT11Igro8dtfsmUVrLnL&amp;alias=P601291289070502&amp;aliasType=Default&amp;backendGiftcardIndicator=false&amp;cardBin=600007&amp;cardHolderName=S%2Hopper&amp;cardIssuerCountryId=840&amp;cardIssuingBank=Adyen%20TEST&amp;cardScheme=mc&amp;cardSummary=7003&amp;cardType=mc&amp;dcc.dccRefusalReason=Currencies%20are%20the%20same&amp;expiryMonth=03&amp;expiryYear=2030&amp;fundingSource=CREDIT&amp;giftcardIndicator=false&amp;isCardCommercial=false&amp;iso8601TxDate=2026-01-05T15%3a57%3a20.465Z&amp;issuerCountry=US&amp;merchantReference=577&amp;message=CARD_ACQ_COMPLETED&amp;paymentMethod=mc&amp;paymentMethodVariant=mccredit&amp;posAmountCashbackValue=0&amp;posAmountGratuityValue=0&amp;posAuthAmountCurrency=USD&amp;posAuthAmountValue=62000&amp;posEntryMode=ICC&amp;posOriginalAmountValue=62000&amp;posadditionalamounts.originalAmountCurrency=USD&amp;posadditionalamounts.originalAmountValue=62000&amp;shopperCountry=US&amp;store=YOUR_STORE&amp;tid=47069832&amp;transactionType=GOODS_SERVICES&amp;txdate=05-01-2026&amp;txtime=16%3a57%3a20\\\",\\n                \\\"Result\\\": \\\"Success\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2026-01-05T15:57:06.973Z\\\",\\n                    \\\"TransactionID\\\": \\\"577\\\"\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\": {\\n            \\\"MessageCategory\\\": \\\"CardAcquisition\\\",\\n            \\\"MessageClass\\\": \\\"Service\\\",\\n            \\\"MessageType\\\": \\\"Response\\\",\\n            \\\"POIID\\\": \\\"V400m-324688179\\\",\\n            \\\"ProtocolVersion\\\": \\\"3.0\\\",\\n            \\\"SaleID\\\": \\\"POSSystemID12345\\\",\\n            \\\"ServiceID\\\": \\\"979\\\"\\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>From the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition#responses-200-Response\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionResponse<\/a>, get the details that are needed for the surcharge calculation. Also get the <code>POITransactionID<\/code> details, which you will need to specify later in your payment request.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Usage<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>POIData.POITransactionID<\/code><\/td>\n<td style=\"text-align: left;\">Keep the <code>TimeStamp<\/code> and <code>TransactionID<\/code>, because you need these card acquisition details in your payment request.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentInstrumentData.CardData<\/code><\/td>\n<td style=\"text-align: left;\">Includes details you may need for the surcharge calculation: <ul><li markdown=\"1\"><code>CardCountryCode<\/code>: The three-digit code of the issuer country\/region.<\/li> <li markdown=\"1\"><code>PaymentBrand<\/code>: The type of payment card.<\/li> <\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Response.AdditionalResponse<\/code><\/td>\n<td style=\"text-align: left;\">Includes details you may need for the surcharge calculation.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As an example, the <code>AdditionalResponse<\/code> from the <code>CardAcquisitionResponse<\/code> above includes the following details that can be useful for the surcharge calculation:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter + value<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>cardIssuerCountryId=840<\/code><\/td>\n<td style=\"text-align: left;\">The three-digit code of the issuer country\/region.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>cardScheme=mc<\/code><\/td>\n<td style=\"text-align: left;\">The card scheme.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>cardType=mc<\/code><\/td>\n<td style=\"text-align: left;\">The card type.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>fundingSource=CREDIT<\/code><\/td>\n<td style=\"text-align: left;\">The funding source used for the transaction, such as a credit, debit, prepaid, or charge card. In other words: where the customer's money comes from.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>isCardCommercial=false<\/code><\/td>\n<td style=\"text-align: left;\">Indicates if this is a commercial card or a consumer card. When <strong>true<\/strong>, it is a commercial card. When <strong>false<\/strong>, it is a consumer card.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>issuerCountry=US<\/code><\/td>\n<td style=\"text-align: left;\">The two-letter code of the issuer country\/region.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>paymentMethod=mc<\/code><\/td>\n<td style=\"text-align: left;\">The payment method on the brand or scheme level.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>paymentMethodVariant=mccredit<\/code><\/td>\n<td style=\"text-align: left;\">The payment method on the product level.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>posAuthAmountCurrency=USD<\/code><\/td>\n<td style=\"text-align: left;\">The three-letter code of the transaction currency.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>posAuthAmountValue=62000<\/code><\/td>\n<td style=\"text-align: left;\">The transaction amount in minor units.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>posOriginalAmountValue=62000<\/code><\/td>\n<td style=\"text-align: left;\">The transaction amount before surcharge, gratuity, adjustments, and such (if any).<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>shopperCountry=US<\/code><\/td>\n<td style=\"text-align: left;\">The two-letter code of the customer's country\/region.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sc-notice note\"><div>\n<p>If the <code>AdditionalResponse<\/code> doesn't include the expected details, check if you enabled receiving those details. Refer to <a href=\"\/pt\/point-of-sale\/card-acquisition\/identifiers#receiving-identifiers-in-responses\">Receive identifiers<\/a>.<\/p>\n<\/div><\/div>\n<\/li>\n<li>\n<p>Pass the relevant details to your own surcharge calculation system or to your third-party surcharge calculation service.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"payment-with-surcharge\">2. Add a surcharge to the payment request<\/h2>\n<p>When you have received the calculated surcharge amount from your own system or the third-party surcharge calculation service, make a Terminal API payment request with the surcharge amount specified using the <code>surchargeFee<\/code> field inside <code>SaleToAcquirerData<\/code>.<\/p>\n<p>In the following example, a surcharge of USD&nbsp;6.00 is added to an original amount of USD&nbsp;620.00.<\/p>\n<ol>\n<li>\n<p>Format a string in one of the following ways, using <code>surchargeFee<\/code> as the parameter and the calculated surcharge amount as the value.<\/p>\n<div class=\"notices yellow\">\n<p>Do not use minor units for the surcharge amount.<\/p>\n<\/div>\n<ul>\n<li>\n<p><strong>Option 1<\/strong>: as a JSON object converted to a Base64-encoded string.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Surcharge in JSON format'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"additionalData\\\": {\\n      \\\"surchargeFee\\\": \\\"6.00\\\"\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Note that the surcharge amount must be specified as a string value, not as a numeric value.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Converted to Base64'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"ewogICAiYWRkaXRpb25hbERhdGEiOiB7CiAgICAgICJzdXJjaGFyZ2VGZWUiOiAiNi4wMCIKICAgfQp9\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p><strong>Option 2<\/strong>: as a string consisting of a key-value pair.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Surcharge as a key-value pair'\" :id=\"''\" :code-data='[{\"language\":\"raw\",\"tabTitle\":\"\",\"content\":\"surchargeFee=6.00\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ul>\n<p>You will send the resulting string in the <code>SaleToAcquirerData<\/code>.<\/p>\n<\/li>\n<li>\n<p>Make a <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> payment request, 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: 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>SaleData.SaleTransactionID<\/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;\">An object with: <ul><li markdown=\"1\"><code>TransactionID<\/code>: Your reference to identify a payment. We recommend using a unique value per payment.<\/li> <li markdown=\"1\"><code>TimeStamp<\/code>: The date and time of the request in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601#Coordinated_Universal_Time_(UTC)\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">UTC format<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.SaleToAcquirerData<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The formatted string specifying the surcharge.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentTransaction.AmountsReq<\/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;\">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 transaction amount due for the goods or services, without surcharge, gratuity, or any other adjustment.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>PaymentData.CardAcquisitionReference<\/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;\">An object referring to the card acquisition: <ul><li markdown=\"1\"><code>TimeStamp<\/code>: The time stamp returned in the <code>POIData.POITransactionID<\/code> of the card acquisition response.<\/li> <li markdown=\"1\"><code>TransactionID<\/code>: The transaction ID returned in the <code>POIData.POITransactionID<\/code> of the card acquisition response.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment request with surcharge'\" :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\\\": \\\"V400m-324688179\\\"\\n      },\\n      \\\"PaymentRequest\\\": {\\n         \\\"SaleData\\\": {\\n            \\\"SaleTransactionID\\\": {\\n               \\\"TransactionID\\\": \\\"27908\\\",\\n               \\\"TimeStamp\\\": \\\"2026-01-05T15:59:49.294Z\\\"\\n            },\\n            \\\"SaleToAcquirerData\\\": \\\"surchargeFee=6.00\\\"\\n         },\\n         \\\"PaymentTransaction\\\": {\\n            \\\"AmountsReq\\\": {\\n               \\\"Currency\\\": \\\"USD\\\",\\n               \\\"RequestedAmount\\\": 620.00\\n            }\\n         },\\n         \\\"PaymentData\\\": {\\n            \\\"CardAcquisitionReference\\\": {\\n               \\\"TimeStamp\\\": \\\"026-01-05T15:57:20.465Z\\\",\\n               \\\"TransactionID\\\": \\\"BV0q001767628639000\\\"\\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><code>PaymentResult.AmountsResp<\/code>:\n<ul>\n<li><code>TotalFeesAmount<\/code>: The surcharge amount.<\/li>\n<li><code>AuthorizedAmount<\/code>: The total authorized amount, consisting of the original amount plus the surcharge amount.<\/li>\n<\/ul><\/li>\n<li><code>Response.AdditionalResponse<\/code>:\n<ul>\n<li><code>posAuthAmountValue<\/code>: The total authorized amount in minor units.<\/li>\n<li><code>surchargeAmount<\/code>: The surcharge amount in minor units.<\/li>\n<\/ul><\/li>\n<\/ul>\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        \\\"PaymentResponse\\\": {\\n            \\\"POIData\\\": {\\n                \\\"POIReconciliationID\\\": \\\"1000\\\",\\n                \\\"POITransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2026-01-06T11:27:24.575Z\\\",\\n                    \\\"TransactionID\\\": \\\"BV0q001767698805001.SWF7F9NR99LJCK75\\\"\\n                }\\n            },\\n            \\\"PaymentReceipt\\\": [...],\\n            \\\"PaymentResult\\\": {\\n                \\\"AmountsResp\\\": {\\n                    \\\"AuthorizedAmount\\\": 626,\\n                    \\\"Currency\\\": \\\"USD\\\",\\n                    \\\"TotalFeesAmount\\\": 6\\n                },\\n                ...\\n                \\\"PaymentInstrumentData\\\": {\\n                    \\\"CardData\\\": {\\n                        \\\"CardCountryCode\\\": \\\"840\\\",\\n                        \\\"EntryMode\\\": [\\n                            \\\"ICC\\\"\\n                        ],\\n                        \\\"MaskedPan\\\": \\\"600007 **** 7003\\\",\\n                        \\\"PaymentBrand\\\": \\\"mc\\\",\\n                        \\\"SensitiveCardData\\\": {\\n                            \\\"CardSeqNumb\\\": \\\"23\\\",\\n                            \\\"ExpiryDate\\\": \\\"0330\\\"\\n                        }\\n                    },\\n                    \\\"PaymentInstrumentType\\\": \\\"Card\\\"\\n                }\\n            },\\n            \\\"Response\\\": {\\n                \\\"AdditionalResponse\\\": \\\"...cardIssuerCountryId=840&amp;cardScheme=mc&amp;ccardType=mc&amp;fundingSource=CREDIT&amp;isCardCommercial=false&amp;issuerCountry=US&amp;paymentMethod=mc&amp;paymentMethodVariant=mccredit...&amp;posAuthAmountCurrency=USD&amp;posAuthAmountValue=62600&amp;posOriginalAmountValue=62000&amp;posadditionalamounts.originalAmountCurrency=USD&amp;posadditionalamounts.originalAmountValue=62000...shopperCountry=US...&amp;surchargeAmount=600...\\\",\\n                \\\"Result\\\": \\\"Success\\\"\\n            },\\n            \\\"SaleData\\\": {...}\\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=\"\/development-resources\/surcharge-compliance\"\n                        target=\"_self\"\n                        >\n                    Surcharge compliance guide\n                <\/a><\/li><li><a href=\"\/point-of-sale\/surcharge\/configuration\"\n                        target=\"_self\"\n                        >\n                    Configuration-based surcharge\n                <\/a><\/li><li><a href=\"\/point-of-sale\/card-acquisition\"\n                        target=\"_self\"\n                        >\n                    Card acquisition\n                <\/a><\/li><li><a href=\"\/point-of-sale\/automating-terminal-management\/configure-terminals-api\"\n                        target=\"_self\"\n                        >\n                    Use API calls to configure terminals\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/surcharge\/dynamic","articleFields":{"description":"Provide the surcharge amount in your Terminal API request.","parameters":{"integrationType":"direct","channel":"pos","ippPath":"\/point-of-sale"}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/surcharge\/dynamic","title":"Dynamic surcharge","content":"If you want to be in full control of surcharges, you can specify the surcharge amount in your in-person payment request. We refer to this as dynamic surcharge. To calculate the surcharge amount, you can use a third-party service or create your own calculation logic. If you accept ecommerce as well as point-of-sale payments, you can use the same calculation logic for both sales channels, taking into account all applicable compliance requirements.\nDepending on your use case, you can combine dynamic surcharge with configuration-based surcharge.\nRequirements\nIn addition to the general surcharge requirements, take into account the following information.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nDynamic surcharge is supported with a Terminal API integration with payment terminals on terminal software version 1.118 or later.\n\n\nAPI credentials\nTo configure showing the surcharge confirmation screen, you must have an API credential with an API key and the following roles: Management API\u2014Terminal settings read Management API\u2014Terminal settings read and write If you have a Terminal API integration with cloud-based communications, you can use the existing API key that you use for Terminal API requests.\n\n\nWebhooks\nIt is recommended to subscribe to Standard webhooks and enable receiving the surcharge amount in AUTHORISATION webhook messages.\n\n\nLimitations\nRequests to live Management API endpoints related to terminal settings are subject to rate limits.\n\n\nSetup steps\nBefore you start: Enable receiving the issuer country\/region in API responses and webhook messages. Ask our Support Team to enable single tap.\n\n\n\nHow it works\nTo use dynamic surcharge:\n\n\nDesign the customer experience. We recommend the following:\n\n\nTo inform customers about the changed amount after the surcharge is calculated, configure showing the surcharge confirmation screen. If you hide this screen, regulations require you to provide another form of surcharge disclosure.\n\n\nUse the single tap flow. This means that for contactless payments, customers do not need to tap again when they confirm they accept the surcharge. Contact our Support Team to enable single tap.\n\n\n\n\nTo get the details that are needed to calculate the surcharge amount, you make a card acquisition request. These details include, for example, the transaction amount and currency, card brand, funding source, and issuing country of the card.\nNote the following:\n\nIn Australia the surcharge compliance requirements are simple enough that you can consider skipping card acquisition.\n\nAlso note that Mobile solutions currently do not support card acquisition.\n\n\n\n\n\nOn the payment terminal, a payment screen appears and  the customer  taps, inserts, or swipes their card.\n\n\nWhen you receive the card acquisition response, you pass the details for the surcharge calculation to your own surcharge calculation logic or to the third-party surcharge calculation service.\n\n\nWhen you get the calculated surcharge amount from your own system or the third party, you make a payment request with the surcharge amount  as the surchargeFee  in the SaleToAcquirerData. The payment request must also refer to the card acquisition.\n\n\nThe surcharge confirmation screen appears. This enables  the customer  to accept the surcharge, or cancel the transaction.\n\nIn a Mobile solution or if you configured to skip this Adyen-provided confirmation screen, you must provide another form of disclosure.\n\n\n\nIf  the customer  accepts the surcharge, the payment is processed and the payment response shows the surcharge amount in the TotalFeesAmount field.\n\n\nShow the confirmation screen\nAdyen provides a surcharge confirmation screen that appears on the payment terminal to let the customer review and accept the surcharge, or cancel the transaction. You can configure this screen to be skipped. But if you do, you must provide another form of disclosure.\nTo configure showing or hiding the surcharge confirmation screen:\n\n\nOptionally, check the current setting for the surcharge confirmation screen by making a GET request to the \/terminalSettings endpoint for the  company account,  merchant account,  store or  terminal. Check the surcharge.askConfirmation parameter.\n\n\nMake a PATCH request to the \/terminalSettings endpoint for the  company account,  merchant account,  store or  terminal.\nIn the request body, specify a  surcharge object with the following parameter:\n\n\n\nParameter\nData&nbsp;type\nDescription\n\n\n\n\n askConfirmation\nBoolean\nIndicates whether to show (true) or hide (false) the surcharge confirmation screen on the payment terminal.\n\n\n\n\n\n\n\n\nNote that the response returns the setting for the surcharge confirmation screen as well as all other terminal settings at the level where you made the request.\n\n\n1. Make a card acquisition request\nTo calculate the surcharge amount, you need to know certain details. For example, if the customer is using a credit or debit card, and where the card was issued.\nWe recommend getting these details through a card acquisition request. The response provides the details of the card that the customer presents to the payment terminal.\n\n\nMake a Terminal API card acquisition request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to CardAcquisition.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nCardAcquisition\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  CardAcquisitionRequest object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleData.SaleTransactionID\n\nAn object with: TransactionID: Your reference to identify a payment. We recommend using a unique value per payment. TimeStamp: The date and time of the request in UTC format.\n\n\nCardAcquisitionTransaction\n\nAn object with: TotalAmount: The amount due for the goods or services that the customer wants to purchase.\n\n\n\n\n\nThe examples show a card acquisition when the customer wants to purchase USD&nbsp;620.00 worth of goods or services.\n\n\n\nWhen the card acquisition succeeds, the response contains a message of  CARD_ACQ_COMPLETED in the AdditionalResponse.\n\n\n\n\n\nFrom the  CardAcquisitionResponse, get the details that are needed for the surcharge calculation. Also get the POITransactionID details, which you will need to specify later in your payment request.\n\n\n\nParameter\nUsage\n\n\n\n\nPOIData.POITransactionID\nKeep the TimeStamp and TransactionID, because you need these card acquisition details in your payment request.\n\n\nPaymentInstrumentData.CardData\nIncludes details you may need for the surcharge calculation: CardCountryCode: The three-digit code of the issuer country\/region. PaymentBrand: The type of payment card. \n\n\nResponse.AdditionalResponse\nIncludes details you may need for the surcharge calculation.\n\n\n\nAs an example, the AdditionalResponse from the CardAcquisitionResponse above includes the following details that can be useful for the surcharge calculation:\n\n\n\nParameter + value\nDescription\n\n\n\n\ncardIssuerCountryId=840\nThe three-digit code of the issuer country\/region.\n\n\ncardScheme=mc\nThe card scheme.\n\n\ncardType=mc\nThe card type.\n\n\nfundingSource=CREDIT\nThe funding source used for the transaction, such as a credit, debit, prepaid, or charge card. In other words: where the customer's money comes from.\n\n\nisCardCommercial=false\nIndicates if this is a commercial card or a consumer card. When true, it is a commercial card. When false, it is a consumer card.\n\n\nissuerCountry=US\nThe two-letter code of the issuer country\/region.\n\n\npaymentMethod=mc\nThe payment method on the brand or scheme level.\n\n\npaymentMethodVariant=mccredit\nThe payment method on the product level.\n\n\nposAuthAmountCurrency=USD\nThe three-letter code of the transaction currency.\n\n\nposAuthAmountValue=62000\nThe transaction amount in minor units.\n\n\nposOriginalAmountValue=62000\nThe transaction amount before surcharge, gratuity, adjustments, and such (if any).\n\n\nshopperCountry=US\nThe two-letter code of the customer's country\/region.\n\n\n\n\nIf the AdditionalResponse doesn't include the expected details, check if you enabled receiving those details. Refer to Receive identifiers.\n\n\n\nPass the relevant details to your own surcharge calculation system or to your third-party surcharge calculation service.\n\n\n2. Add a surcharge to the payment request\nWhen you have received the calculated surcharge amount from your own system or the third-party surcharge calculation service, make a Terminal API payment request with the surcharge amount specified using the surchargeFee field inside SaleToAcquirerData.\nIn the following example, a surcharge of USD&nbsp;6.00 is added to an original amount of USD&nbsp;620.00.\n\n\nFormat a string in one of the following ways, using surchargeFee as the parameter and the calculated surcharge amount as the value.\n\nDo not use minor units for the surcharge amount.\n\n\n\nOption 1: as a JSON object converted to a Base64-encoded string.\n\n\n\nNote that the surcharge amount must be specified as a string value, not as a numeric value.\n\n\n\n\n\nOption 2: as a string consisting of a key-value pair.\n\n\n\n\n\nYou will send the resulting string in the SaleToAcquirerData.\n\n\nMake a Terminal API 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\nRequired\nDescription\n\n\n\n\nSaleData.SaleTransactionID\n\nAn object with: TransactionID: Your reference to identify a payment. We recommend using a unique value per payment. TimeStamp: The date and time of the request in UTC format.\n\n\nSaleData.SaleToAcquirerData\n\nThe formatted string specifying the surcharge.\n\n\nPaymentTransaction.AmountsReq\n\nAn object with: Currency: The transaction currency.RequestedAmount: The transaction amount due for the goods or services, without surcharge, gratuity, or any other adjustment.\n\n\nPaymentData.CardAcquisitionReference\n\nAn object referring to the card acquisition: TimeStamp: The time stamp returned in the POIData.POITransactionID of the card acquisition response. TransactionID: The transaction ID returned in the POIData.POITransactionID of the card acquisition response.\n\n\n\n\n\n\n\n\n\n\nIn the  PaymentResponse note the following:\n\nPaymentResult.AmountsResp:\n\nTotalFeesAmount: The surcharge amount.\nAuthorizedAmount: The total authorized amount, consisting of the original amount plus the surcharge amount.\n\nResponse.AdditionalResponse:\n\nposAuthAmountValue: The total authorized amount in minor units.\nsurchargeAmount: The surcharge amount in minor units.\n\n\n\n\n\n\n\nSee also\n\n\n                    Surcharge compliance guide\n                \n                    Configuration-based surcharge\n                \n                    Card acquisition\n                \n                    Use API calls to configure terminals\n                \n","type":"page","locale":"pt","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Surcharge","lvl3":"Dynamic surcharge"},"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\/surcharge","lvl3":"\/pt\/point-of-sale\/surcharge\/dynamic"},"levels":4,"category":"In-person payments","category_color":"green","tags":["Dynamic","surcharge"]}}
