{"title":"FSA\/HSA healthcare payments","category":"default","creationDate":1790173822,"content":"<p>Flexible Spending Account (FSA) and Health Savings Account (HSA) cards let US shoppers pay for eligible healthcare purchases with tax-advantaged funds. This page shows how to accept FSA\/HSA card payments in your online payments integration. FSA\/HSA payments are supported for US-issued Visa and Mastercard cards.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, 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;\"><ul><li markdown=\"1\">An <a href=\"\/online-payments\/build-your-integration\/advanced-flow\">online payments integration that uses the advanced flow<\/a>, on Checkout API <strong>v72<\/strong> or later.<\/li><li markdown=\"1\">To detect card eligibility in the shopper's browser with Components or Drop-in, use adyen-web <strong>6.41.0<\/strong> or later.<\/li><li markdown=\"1\">Support for <a href=\"\/online-payments\/partial-authorizations\">partial authorizations<\/a>. FSA\/HSA payments require partial authorizations, because an FSA\/HSA card might not cover the full payment amount.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\"><ul><li markdown=\"1\">Supported only for US-issued Visa and Mastercard cards.<\/li><li markdown=\"1\">You determine the healthcare-eligible amounts from your inventory and the <a href=\"https:\/\/sig-is.org\/eligible-product-list\/eligible-product-list-overview\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">SIG-IS Eligible Product List<\/a>. Adyen does not compute eligibility or the amounts.<\/li><li markdown=\"1\">A healthcare-eligible card does not mean that your business is certified to accept FSA\/HSA payments.<\/li><\/ul><\/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: <ul><li markdown=\"1\">Contact your Adyen account team to enable FSA\/HSA payments and partial authorizations. FSA\/HSA payments are in limited release.<\/li><li markdown=\"1\">Register or certify your business with SIG-IS. The program that applies depends on your business type. See <a href=\"\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa\/sig-is-setup\">SIG-IS registration and certification<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"about-fsa-hsa-payments\">About FSA\/HSA payments<\/h2>\n<p>FSA and HSA cards are US-only prepaid cards linked to tax-advantaged healthcare accounts. Shoppers can use them only for healthcare purchases that the US Internal Revenue Service (IRS) recognizes as eligible. To accept these cards for eligible everyday health products, you must prove that the purchase qualifies.<\/p>\n<p><strong>Auto-substantiation<\/strong> is the process that proves product eligibility automatically, so the shopper does not need to submit paper receipts for most healthcare-eligible purchases. However, a shopper's benefit provider might still ask them for proof of the purchase later. It relies on the <strong>Inventory Information Approval System (IIAS)<\/strong>: you identify the healthcare-eligible items in the basket and send the eligible amount with the payment. The card issuer uses this data to approve the eligible amount.<\/p>\n<p>This page covers the <strong>Everyday Health Products<\/strong> category. You send the healthcare amount data through IIAS auto-substantiation. This maps to the SIG-IS <strong>IIAS<\/strong> program, which needs both SIG-IS certification and this integration.<\/p>\n<p>Not every business needs this integration. Adyen also supports two categories that do not send healthcare data: businesses on healthcare-only <a href=\"\/get-started-with-adyen\/adyen-glossary\/#merchant-category-code\">merchant category codes<\/a> (<strong>Direct Medical Services<\/strong>), and pharmacies and drug stores that use the <strong>90% Rule<\/strong>. The program that applies to your business, and whether you register with SIG-IS, depends on your business type and MCC. See <a href=\"\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa\/sig-is-setup\">SIG-IS registration and certification<\/a>.<\/p>\n<p>The following terms are used on this page:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Term<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>SIG-IS<\/strong><\/td>\n<td style=\"text-align: left;\">The Special Interest Group for IIAS Standards. The industry body that manages the standards for FSA and HSA card acceptance and maintains the Eligible Product List.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>IIAS<\/strong><\/td>\n<td style=\"text-align: left;\">Inventory Information Approval System. You are responsible for implementing an IIAS that uses the SIG-IS Eligible Product List and meets the IIAS Merchant Certification requirements. Complete the applicable Merchant Self-Assessment\/Checklist and certification with your acquirer. An IIAS combines inventory management and point-of-sale systems to confirm the eligibility of FSA\/HRA purchases, generate transactions with the required IIAS information, and maintain an archive for IRS audits. See <a href=\"\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa\/sig-is-setup\">SIG-IS registration and certification<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Auto-substantiation<\/strong><\/td>\n<td style=\"text-align: left;\">Automatic proof that a purchase is FSA\/HSA-eligible, based on the healthcare amount data you send. This can remove the need for paper receipts during checkout, but the shopper's benefit provider might still ask for proof of the purchase.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Eligible amount<\/strong><\/td>\n<td style=\"text-align: left;\">The part of the payment amount that is for eligible healthcare products, as you determine it from the SIG-IS Eligible Product List.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>To accept an FSA\/HSA payment, you identify an eligible card, send the healthcare amount breakdown, and handle the result.<\/p>\n<p><img alt=\"Sequence diagram of an FSA\/HSA payment: the shopper enters card details, you check eligibility with Adyen, derive the healthcare amounts, submit the payment with the healthcare data, and Adyen sends the IIAS data to the card scheme and issuer for auto-substantiation before returning the authorization result.\" src=\"\/media\/41680b6c0614b13c00419a12079e6588e20f6e20cbbf510427b567c20f8b7b9d.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/p>\n<ol>\n<li>The shopper enters their card details in your checkout.<\/li>\n<li>You check whether the card is healthcare-eligible. See <a href=\"#check-card-eligibility\">Check card eligibility<\/a>.<\/li>\n<li>You derive the healthcare-eligible amount, and any sub-amounts, from your inventory and the <a href=\"https:\/\/sig-is.org\/eligible-product-list\/eligible-product-list-overview\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">SIG-IS Eligible Product List<\/a>.<\/li>\n<li>You submit the payment with the healthcare amount breakdown, and allow partial authorizations. See <a href=\"#send-the-healthcare-amount-data\">Send the healthcare amount data<\/a>.<\/li>\n<li>Adyen sends the IIAS data to Visa or Mastercard in the authorization message.<\/li>\n<li>The card issuer auto-substantiates the eligible amount. The issuer authorizes the full amount, or a partial amount if the available balance is lower, and returns the authorization result.<\/li>\n<li>You handle the result, including partial authorizations, and complete the payment. See <a href=\"#handle-the-authorization-result\">Handle the authorization result<\/a>.<\/li>\n<\/ol>\n<h2 id=\"check-card-eligibility\">Check card eligibility<\/h2>\n<p>Before you show FSA\/HSA options to the shopper, check whether the entered card is healthcare-eligible. Adyen returns a <code>healthcare<\/code> boolean at the card brand level. For a co-branded card, each brand entry carries its own value.<\/p>\n<p>The <code>healthcare<\/code> field appears only when the card is healthcare-eligible. If the field is absent, treat the card as not eligible.<\/p>\n\n<div id=\"tabW4Rxd\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;API-only&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;To check card eligibility with the API:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Call  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/cardDetails\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/cardDetails&lt;\\\/a&gt; with the first 8 digits of the card number.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Example \\\/cardDetails request&#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;cardNumber\\\\\\&quot;: \\\\\\&quot;42043021\\\\\\&quot;,\\\\n   \\\\\\&quot;merchantAccount\\\\\\&quot;: \\\\\\&quot;YOUR_MERCHANT_ACCOUNT\\\\\\&quot;,\\\\n   \\\\\\&quot;countryCode\\\\\\&quot;: \\\\\\&quot;US\\\\\\&quot;\\\\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&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Read the &lt;code&gt;healthcare&lt;\\\/code&gt; boolean inside each &lt;code&gt;brands&lt;\\\/code&gt; entry.&lt;\\\/p&gt;\\n&lt;p&gt;For a healthcare-eligible card, the response includes &lt;code&gt;healthcare&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Example \\\/cardDetails response for a healthcare-eligible card&#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;brands\\\\\\&quot;: [\\\\n      {\\\\n         \\\\\\&quot;supported\\\\\\&quot;: true,\\\\n         \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;visa\\\\\\&quot;,\\\\n         \\\\\\&quot;healthcare\\\\\\&quot;: true\\\\n      }\\\\n   ],\\\\n   \\\\\\&quot;issuingCountryCode\\\\\\&quot;: \\\\\\&quot;US\\\\\\&quot;\\\\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&lt;p&gt;For a card that is not healthcare-eligible, the &lt;code&gt;healthcare&lt;\\\/code&gt; field is absent.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Example \\\/cardDetails response for a standard card&#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;brands\\\\\\&quot;: [\\\\n      {\\\\n         \\\\\\&quot;supported\\\\\\&quot;: true,\\\\n         \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;visa\\\\\\&quot;\\\\n      }\\\\n   ],\\\\n   \\\\\\&quot;issuingCountryCode\\\\\\&quot;: \\\\\\&quot;US\\\\\\&quot;\\\\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&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Components and Drop-in&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;When you use Adyen Web Components or Drop-in with the &lt;a href=\\&quot;\\\/online-payments\\\/build-your-integration\\\/advanced-flow\\&quot;&gt;advanced flow&lt;\\\/a&gt;, the SDK looks up the card details as the shopper types the card number. It returns the result in the &lt;a href=\\&quot;\\\/payment-methods\\\/cards\\\/web-drop-in#events\\&quot;&gt;\\n  &lt;code&gt;onBinLookup&lt;\\\/code&gt;\\n&lt;\\\/a&gt; callback. To read the &lt;code&gt;healthcare&lt;\\\/code&gt; value in &lt;code&gt;onBinLookup&lt;\\\/code&gt;, use adyen-web &lt;strong&gt;6.41.0&lt;\\\/strong&gt; or later.&lt;\\\/p&gt;\\n&lt;p&gt;In the callback data, the &lt;code&gt;healthcare&lt;\\\/code&gt; flag is on the per-brand entries in the &lt;code&gt;supportedBrandsRaw&lt;\\\/code&gt; array, not on the &lt;code&gt;brands&lt;\\\/code&gt; array. Each entry in &lt;code&gt;supportedBrandsRaw&lt;\\\/code&gt; has a &lt;code&gt;paymentMethodVariant&lt;\\\/code&gt;, and only the healthcare-eligible variant carries &lt;code&gt;healthcare&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;. A single card can return more than one entry. For example, a Mastercard returns a credit entry (&lt;code&gt;mc&lt;\\\/code&gt;) without the flag and a debit entry (&lt;code&gt;mcstandarddebit&lt;\\\/code&gt;) with &lt;code&gt;healthcare&lt;\\\/code&gt; set to &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;true&lt;\\\/strong&gt;&lt;\\\/span&gt;. Check all entries rather than matching on the brand name.&lt;\\\/p&gt;\\n&lt;p&gt;To check card eligibility with Components or Drop-in:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Check the &lt;code&gt;healthcare&lt;\\\/code&gt; flag across the &lt;code&gt;supportedBrandsRaw&lt;\\\/code&gt; entries in the &lt;code&gt;onBinLookup&lt;\\\/code&gt; callback.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Read the healthcare value in onBinLookup&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;javascript\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;const checkout = await AdyenCheckout({\\\\n   \\\\\\\/\\\\\\\/ ...your configuration\\\\n   onBinLookup(data) {\\\\n      const isHealthcareEligible = data.supportedBrandsRaw?.some(\\\\n         (brand) =&amp;gt; brand.healthcare === true\\\\n      );\\\\n\\\\n      if (isHealthcareEligible) {\\\\n         \\\\\\\/\\\\\\\/ Show the FSA\\\\\\\/HSA amount breakdown in your checkout,\\\\n         \\\\\\\/\\\\\\\/ and pass the eligibility signal to your server.\\\\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&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Pass the eligibility signal to your server, which then sends the healthcare amount data on the payment request.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:1,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2 id=\"send-the-healthcare-amount-data\">Send the healthcare amount data<\/h2>\n<p>When the card is healthcare-eligible, include the <code>enhancedSchemeData.healthcare<\/code> object in your  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> request. The presence of this object signals IIAS intent to Adyen, so you do not send a separate flag.<\/p>\n<p>You must also allow partial authorizations on every FSA\/HSA payment. An FSA\/HSA card holds only the eligible healthcare balance, so the card might not cover the full payment amount. For more information, see <a href=\"\/online-payments\/partial-authorizations\">Partial authorizations<\/a>.<\/p>\n<p>All amount fields are in <a href=\"\/development-resources\/currency-codes\">minor units<\/a> and use the currency of the top-level <code>amount<\/code>. For more information about the fields and the validation rules, see <a href=\"#healthcare-fields-reference\">Healthcare fields reference<\/a>.<\/p>\n<p>To send the healthcare amount data:<\/p>\n<ol>\n<li>\n<p>Add the following to your <code>\/payments<\/code> request:<\/p>\n<ul>\n<li>The <code>enhancedSchemeData.healthcare<\/code> object, with <code>totalHealthcareValue<\/code> and any sub-amounts that apply.<\/li>\n<li><code>additionalData.allowPartialAuth<\/code> set to <span translate=\"no\"><strong>true<\/strong><\/span>. This asks the issuer to authorize the available amount instead of declining the payment when the balance is lower than the payment amount.<\/li>\n<\/ul>\n<p>In a Components or Drop-in advanced flow, your server adds these fields when it makes the <code>\/payments<\/code> call after the <code>onSubmit<\/code> event.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Example \/payments request with healthcare data'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"merchantAccount\\\": \\\"YOUR_MERCHANT_ACCOUNT\\\",\\n   \\\"reference\\\": \\\"YOUR_ORDER_REFERENCE\\\",\\n   \\\"amount\\\": {\\n      \\\"currency\\\": \\\"USD\\\",\\n      \\\"value\\\": 6000\\n   },\\n   \\\"paymentMethod\\\": {\\n      \\\"type\\\": \\\"scheme\\\",\\n      \\\"encryptedCardNumber\\\": \\\"...\\\",\\n      \\\"encryptedExpiryMonth\\\": \\\"...\\\",\\n      \\\"encryptedExpiryYear\\\": \\\"...\\\",\\n      \\\"encryptedSecurityCode\\\": \\\"...\\\"\\n   },\\n   \\\"shopperInteraction\\\": \\\"Ecommerce\\\",\\n   \\\"enhancedSchemeData\\\": {\\n      \\\"healthcare\\\": {\\n         \\\"totalHealthcareValue\\\": 4500,\\n         \\\"prescriptionValue\\\": 1500,\\n         \\\"visionPrescriptionValue\\\": 500,\\n         \\\"dentalValue\\\": 1000\\n      }\\n   },\\n   \\\"additionalData\\\": {\\n      \\\"allowPartialAuth\\\": \\\"true\\\"\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>In this example, the payment amount is USD&nbsp;60.00 and the healthcare-eligible amount is USD&nbsp;45.00.<\/p>\n<\/li>\n<li>\n<p>Check the response to confirm the result of the payment. See <a href=\"#handle-the-authorization-result\">Handle the authorization result<\/a>.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"handle-the-authorization-result\">Handle the authorization result<\/h2>\n<p>Because you allow partial authorizations, an FSA\/HSA payment can return one of two successful result codes. An FSA\/HSA card holds only the eligible healthcare balance, so the issuer often authorizes only part of the payment amount.<\/p>\n<ol>\n<li>\n<p>Read the <code>resultCode<\/code> in the <code>\/payments<\/code> response.<\/p>\n<ul>\n<li><span translate=\"no\"><strong>Authorised<\/strong><\/span>: the issuer authorized the full payment amount.<\/li>\n<li><span translate=\"no\"><strong>PartiallyAuthorised<\/strong><\/span>: the issuer authorized only the amount available on the card. The <code>additionalData.authorisedAmountValue<\/code> field holds the authorized amount, in minor units. Do not treat this result as a failure.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Example \/payments response for a partial authorization'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"pspReference\\\": \\\"NXNS5ZQKCLL4N222\\\",\\n   \\\"resultCode\\\": \\\"PartiallyAuthorised\\\",\\n   \\\"amount\\\": {\\n      \\\"currency\\\": \\\"USD\\\",\\n      \\\"value\\\": 6000\\n   },\\n   \\\"additionalData\\\": {\\n      \\\"authorisedAmountValue\\\": \\\"3500\\\",\\n      \\\"authorisedAmountCurrency\\\": \\\"USD\\\"\\n   },\\n   \\\"merchantReference\\\": \\\"YOUR_ORDER_REFERENCE\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Complete the payment based on the result.<\/p>\n<ul>\n<li>For <span translate=\"no\"><strong>PartiallyAuthorised<\/strong><\/span>, follow up to collect the remaining amount, for example by prompting the shopper for another payment method. For the follow-up options, see <a href=\"\/online-payments\/partial-authorizations\">Partial authorizations<\/a>.<\/li>\n<li>For all other result codes, take the matching action. See <a href=\"\/online-payments\/payment-result-codes\">Payment result codes<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2 id=\"confirm-the-card-product\">Confirm the card product<\/h2>\n<p>To confirm after the payment that a shopper paid with an FSA\/HSA card, check the card product identifier in the <a href=\"\/development-resources\/webhooks\">AUTHORISATION webhook<\/a>. Adyen returns this identifier in <code>additionalData.cardProductId<\/code>. This is supported for Visa and Mastercard only.<\/p>\n<p>To receive <code>cardProductId<\/code> in your webhooks, you must enable it first. In your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, go to <strong>Developers<\/strong> &gt; <strong>Additional data<\/strong>, then enable the <strong>card product ID<\/strong> field.<\/p>\n<p>To confirm the card product:<\/p>\n<ol>\n<li>\n<p>In the AUTHORISATION webhook, read <code>additionalData.cardProductId<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Example AUTHORISATION webhook additionalData'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"additionalData\\\": {\\n      \\\"cardProductId\\\": \\\"J3\\\"\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Compare the value against the following healthcare card products.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Scheme<\/th>\n<th style=\"text-align: left;\"><code>cardProductId<\/code><\/th>\n<th style=\"text-align: left;\">Card product<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Visa<\/td>\n<td style=\"text-align: left;\">J3<\/td>\n<td style=\"text-align: left;\">FSA \/ HSA Card<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Mastercard<\/td>\n<td style=\"text-align: left;\">MPX<\/td>\n<td style=\"text-align: left;\">Prepaid Mastercard Flex Benefit Card<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Mastercard<\/td>\n<td style=\"text-align: left;\">MHB<\/td>\n<td style=\"text-align: left;\">Mastercard HSA Substantiated<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If <code>cardProductId<\/code> matches one of these values, the shopper paid with an FSA\/HSA card.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"healthcare-fields-reference\">Healthcare fields reference<\/h2>\n<p>The <code>enhancedSchemeData.healthcare<\/code> object contains the total healthcare-eligible amount and optional sub-amounts. All amounts are integers in minor units, and use the currency of the top-level <code>amount<\/code>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Field<\/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>totalHealthcareValue<\/code>  <br> Integer<\/td>\n<td style=\"text-align: center;\"><span class=\"hint--bottom\" data-hint=\"Required\" markdown=\"1\"><img style=\"width: 25px;\" alt=\"Required\" src=\"\/media\/732127089c689593ccb0331d565e5773bed94e60145cae96672212374facb8c6.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/span><\/td>\n<td style=\"text-align: left;\">The total healthcare-eligible amount, in minor units. Must be greater than 0 and must not exceed the payment amount (<code>amount.value<\/code>).<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>prescriptionValue<\/code>  <br> Integer<\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The prescription (Rx) amount, in minor units.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>visionPrescriptionValue<\/code>  <br> Integer<\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The vision or optical prescription amount, in minor units.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>dentalValue<\/code>  <br> Integer<\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The dental amount, in minor units.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>otherMedicalValue<\/code>  <br> Integer<\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The eligible medical amount that the other sub-amounts do not cover, in minor units.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img alt=\"This is the required icon.\" src=\"\/media\/732127089c689593ccb0331d565e5773bed94e60145cae96672212374facb8c6.svg?decoding=auto&amp;fetchpriority=auto\" \/> Required for all transactions. <br><img alt=\"This is the conditionally required icon.\" src=\"\/media\/e654d4104461d20836c817ee9d8f27faa0e45c1a8d08558f079561a50fc2797e.svg?decoding=auto&amp;fetchpriority=auto\" \/> Required for particular setups, or issuers and card schemes. <br><img alt=\"This is the recommended icon.\" src=\"\/media\/51cfe94e37a7426974002173390b3c7807ac234e65206fe14ed9fbdd45fb958e.svg?decoding=auto&amp;fetchpriority=auto\" \/> Recommended for all transactions, but not required.<\/p>\n<h3>Validation rules<\/h3>\n<p>Adyen validates the <code>enhancedSchemeData.healthcare<\/code> object before it processes the authorization. The amounts must meet the following rules:<\/p>\n<ul>\n<li><code>totalHealthcareValue<\/code> must be greater than 0.<\/li>\n<li><code>totalHealthcareValue<\/code> must not exceed the payment amount (<code>amount.value<\/code>).<\/li>\n<li>The sum of the four sub-amounts (<code>prescriptionValue<\/code>, <code>visionPrescriptionValue<\/code>, <code>dentalValue<\/code>, and <code>otherMedicalValue<\/code>) must not exceed <code>totalHealthcareValue<\/code>.<\/li>\n<\/ul>\n<h3>Errors<\/h3>\n<p>If the amounts do not meet the validation rules, Adyen rejects the request with HTTP <strong>422<\/strong> and the error <span translate=\"no\"><strong>InvalidFieldWithReason<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Condition<\/th>\n<th style=\"text-align: left;\">Result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>totalHealthcareValue<\/code> is 0 or a negative value.<\/td>\n<td style=\"text-align: left;\">HTTP <strong>422<\/strong>, <span translate=\"no\"><strong>InvalidFieldWithReason<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>totalHealthcareValue<\/code> exceeds the payment amount.<\/td>\n<td style=\"text-align: left;\">HTTP <strong>422<\/strong>, <span translate=\"no\"><strong>InvalidFieldWithReason<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">The sum of the four sub-amounts exceeds <code>totalHealthcareValue<\/code>.<\/td>\n<td style=\"text-align: left;\">HTTP <strong>422<\/strong>, <span translate=\"no\"><strong>InvalidFieldWithReason<\/strong><\/span>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To resolve an error, adjust the amounts so that they meet the validation rules, then send the request again.<\/p>\n<h2>Test and go live<\/h2>\n<p>Use the following test cards to make test FSA\/HSA payments. Both cards are healthcare-eligible.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Card number<\/th>\n<th style=\"text-align: left;\">Card scheme<\/th>\n<th style=\"text-align: left;\">Issuing country\/region<\/th>\n<th style=\"text-align: left;\">Expiry date<\/th>\n<th style=\"text-align: left;\">Card security code<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">4001 2300 0000 0004<\/td>\n<td style=\"text-align: left;\">Visa<\/td>\n<td style=\"text-align: left;\">US<\/td>\n<td style=\"text-align: left;\">03\/2030<\/td>\n<td style=\"text-align: left;\">737<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">2292 2400 0000 0005<\/td>\n<td style=\"text-align: left;\">Mastercard<\/td>\n<td style=\"text-align: left;\">US<\/td>\n<td style=\"text-align: left;\">03\/2030<\/td>\n<td style=\"text-align: left;\">737<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Use the following scenarios to verify your integration before you go live.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Scenario<\/th>\n<th style=\"text-align: left;\">Expected result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Submit <code>enhancedSchemeData.healthcare<\/code> with sub-amounts (Visa, <strong>v72<\/strong>).<\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Authorised<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Submit <code>enhancedSchemeData.healthcare<\/code> with sub-amounts (Mastercard, <strong>v72<\/strong>).<\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Authorised<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Submit <code>enhancedSchemeData.healthcare<\/code> with <code>totalHealthcareValue<\/code> only (<strong>v72<\/strong>).<\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Authorised<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Trigger a partial authorization on a healthcare payment. See <a href=\"\/online-payments\/partial-authorizations#testing\">Partial authorizations<\/a>.<\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>PartiallyAuthorised<\/strong><\/span>, with the authorized amount in <code>additionalData.authorisedAmountValue<\/code>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Submit a <code>totalHealthcareValue<\/code> of 0.<\/td>\n<td style=\"text-align: left;\">HTTP <strong>422<\/strong> validation error.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Submit a <code>totalHealthcareValue<\/code> that exceeds <code>amount.value<\/code>.<\/td>\n<td style=\"text-align: left;\">HTTP <strong>422<\/strong> validation error.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Submit sub-amounts that sum to more than <code>totalHealthcareValue<\/code>.<\/td>\n<td style=\"text-align: left;\">HTTP <strong>422<\/strong> validation error.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa\/sig-is-setup\"\n                        target=\"_self\"\n                        >\n                    SIG-IS registration and certification\n                <\/a><\/li><li><a href=\"\/payment-methods\/cards\/enhanced-scheme-data\"\n                        target=\"_self\"\n                        >\n                    Enhanced scheme data\n                <\/a><\/li><li><a href=\"\/payment-methods\/cards\/enhanced-scheme-data\/amex\"\n                        target=\"_self\"\n                        >\n                    Enhanced scheme data for American Express\n                <\/a><\/li><li><a href=\"\/online-payments\/build-your-integration\/advanced-flow\"\n                        target=\"_self\"\n                        >\n                    Advanced flow\n                <\/a><\/li><li><a href=\"\/online-payments\/partial-authorizations\"\n                        target=\"_self\"\n                        >\n                    Partial authorizations\n                <\/a><\/li><li><a href=\"\/online-payments\/payment-result-codes\"\n                        target=\"_self\"\n                        >\n                    Payment result codes\n                <\/a><\/li><li><a href=\"\/development-resources\/webhooks\"\n                        target=\"_self\"\n                        >\n                    Webhooks\n                <\/a><\/li><li><a href=\"\/development-resources\/test-cards-and-credentials\/test-card-numbers\"\n                        target=\"_self\"\n                        >\n                    Test card numbers\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa","articleFields":{"description":"Accept FSA\/HSA healthcare card payments in your Checkout integration with IIAS auto-substantiation.","robots":"noindex,nofollow","feedback_component":true,"filters_component":false,"page_id":"2bd134a5-3bb8-43bd-8a07-e4e50b9eab0d","decision_tree":"[]"},"algolia":{"url":"https:\/\/docs.adyen.com\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa","title":"FSA\/HSA healthcare payments","content":"Flexible Spending Account (FSA) and Health Savings Account (HSA) cards let US shoppers pay for eligible healthcare purchases with tax-advantaged funds. This page shows how to accept FSA\/HSA card payments in your online payments integration. FSA\/HSA payments are supported for US-issued Visa and Mastercard cards.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn online payments integration that uses the advanced flow, on Checkout API v72 or later.To detect card eligibility in the shopper's browser with Components or Drop-in, use adyen-web 6.41.0 or later.Support for partial authorizations. FSA\/HSA payments require partial authorizations, because an FSA\/HSA card might not cover the full payment amount.\n\n\nLimitations\nSupported only for US-issued Visa and Mastercard cards.You determine the healthcare-eligible amounts from your inventory and the SIG-IS Eligible Product List. Adyen does not compute eligibility or the amounts.A healthcare-eligible card does not mean that your business is certified to accept FSA\/HSA payments.\n\n\nSetup steps\nBefore you begin: Contact your Adyen account team to enable FSA\/HSA payments and partial authorizations. FSA\/HSA payments are in limited release.Register or certify your business with SIG-IS. The program that applies depends on your business type. See SIG-IS registration and certification.\n\n\n\nAbout FSA\/HSA payments\nFSA and HSA cards are US-only prepaid cards linked to tax-advantaged healthcare accounts. Shoppers can use them only for healthcare purchases that the US Internal Revenue Service (IRS) recognizes as eligible. To accept these cards for eligible everyday health products, you must prove that the purchase qualifies.\nAuto-substantiation is the process that proves product eligibility automatically, so the shopper does not need to submit paper receipts for most healthcare-eligible purchases. However, a shopper's benefit provider might still ask them for proof of the purchase later. It relies on the Inventory Information Approval System (IIAS): you identify the healthcare-eligible items in the basket and send the eligible amount with the payment. The card issuer uses this data to approve the eligible amount.\nThis page covers the Everyday Health Products category. You send the healthcare amount data through IIAS auto-substantiation. This maps to the SIG-IS IIAS program, which needs both SIG-IS certification and this integration.\nNot every business needs this integration. Adyen also supports two categories that do not send healthcare data: businesses on healthcare-only merchant category codes (Direct Medical Services), and pharmacies and drug stores that use the 90% Rule. The program that applies to your business, and whether you register with SIG-IS, depends on your business type and MCC. See SIG-IS registration and certification.\nThe following terms are used on this page:\n\n\n\nTerm\nDescription\n\n\n\n\nSIG-IS\nThe Special Interest Group for IIAS Standards. The industry body that manages the standards for FSA and HSA card acceptance and maintains the Eligible Product List.\n\n\nIIAS\nInventory Information Approval System. You are responsible for implementing an IIAS that uses the SIG-IS Eligible Product List and meets the IIAS Merchant Certification requirements. Complete the applicable Merchant Self-Assessment\/Checklist and certification with your acquirer. An IIAS combines inventory management and point-of-sale systems to confirm the eligibility of FSA\/HRA purchases, generate transactions with the required IIAS information, and maintain an archive for IRS audits. See SIG-IS registration and certification.\n\n\nAuto-substantiation\nAutomatic proof that a purchase is FSA\/HSA-eligible, based on the healthcare amount data you send. This can remove the need for paper receipts during checkout, but the shopper's benefit provider might still ask for proof of the purchase.\n\n\nEligible amount\nThe part of the payment amount that is for eligible healthcare products, as you determine it from the SIG-IS Eligible Product List.\n\n\n\nHow it works\nTo accept an FSA\/HSA payment, you identify an eligible card, send the healthcare amount breakdown, and handle the result.\n\n\nThe shopper enters their card details in your checkout.\nYou check whether the card is healthcare-eligible. See Check card eligibility.\nYou derive the healthcare-eligible amount, and any sub-amounts, from your inventory and the SIG-IS Eligible Product List.\nYou submit the payment with the healthcare amount breakdown, and allow partial authorizations. See Send the healthcare amount data.\nAdyen sends the IIAS data to Visa or Mastercard in the authorization message.\nThe card issuer auto-substantiates the eligible amount. The issuer authorizes the full amount, or a partial amount if the available balance is lower, and returns the authorization result.\nYou handle the result, including partial authorizations, and complete the payment. See Handle the authorization result.\n\nCheck card eligibility\nBefore you show FSA\/HSA options to the shopper, check whether the entered card is healthcare-eligible. Adyen returns a healthcare boolean at the card brand level. For a co-branded card, each brand entry carries its own value.\nThe healthcare field appears only when the card is healthcare-eligible. If the field is absent, treat the card as not eligible.\n\n\n    \n        \n        \n    \n\n\nSend the healthcare amount data\nWhen the card is healthcare-eligible, include the enhancedSchemeData.healthcare object in your  \/payments request. The presence of this object signals IIAS intent to Adyen, so you do not send a separate flag.\nYou must also allow partial authorizations on every FSA\/HSA payment. An FSA\/HSA card holds only the eligible healthcare balance, so the card might not cover the full payment amount. For more information, see Partial authorizations.\nAll amount fields are in minor units and use the currency of the top-level amount. For more information about the fields and the validation rules, see Healthcare fields reference.\nTo send the healthcare amount data:\n\n\nAdd the following to your \/payments request:\n\nThe enhancedSchemeData.healthcare object, with totalHealthcareValue and any sub-amounts that apply.\nadditionalData.allowPartialAuth set to true. This asks the issuer to authorize the available amount instead of declining the payment when the balance is lower than the payment amount.\n\nIn a Components or Drop-in advanced flow, your server adds these fields when it makes the \/payments call after the onSubmit event.\n\n\n\nIn this example, the payment amount is USD&nbsp;60.00 and the healthcare-eligible amount is USD&nbsp;45.00.\n\n\nCheck the response to confirm the result of the payment. See Handle the authorization result.\n\n\nHandle the authorization result\nBecause you allow partial authorizations, an FSA\/HSA payment can return one of two successful result codes. An FSA\/HSA card holds only the eligible healthcare balance, so the issuer often authorizes only part of the payment amount.\n\n\nRead the resultCode in the \/payments response.\n\nAuthorised: the issuer authorized the full payment amount.\nPartiallyAuthorised: the issuer authorized only the amount available on the card. The additionalData.authorisedAmountValue field holds the authorized amount, in minor units. Do not treat this result as a failure.\n\n\n\n\n\n\nComplete the payment based on the result.\n\nFor PartiallyAuthorised, follow up to collect the remaining amount, for example by prompting the shopper for another payment method. For the follow-up options, see Partial authorizations.\nFor all other result codes, take the matching action. See Payment result codes.\n\n\n\nConfirm the card product\nTo confirm after the payment that a shopper paid with an FSA\/HSA card, check the card product identifier in the AUTHORISATION webhook. Adyen returns this identifier in additionalData.cardProductId. This is supported for Visa and Mastercard only.\nTo receive cardProductId in your webhooks, you must enable it first. In your Customer Area, go to Developers &gt; Additional data, then enable the card product ID field.\nTo confirm the card product:\n\n\nIn the AUTHORISATION webhook, read additionalData.cardProductId.\n\n\n\n\n\nCompare the value against the following healthcare card products.\n\n\n\nScheme\ncardProductId\nCard product\n\n\n\n\nVisa\nJ3\nFSA \/ HSA Card\n\n\nMastercard\nMPX\nPrepaid Mastercard Flex Benefit Card\n\n\nMastercard\nMHB\nMastercard HSA Substantiated\n\n\n\nIf cardProductId matches one of these values, the shopper paid with an FSA\/HSA card.\n\n\nHealthcare fields reference\nThe enhancedSchemeData.healthcare object contains the total healthcare-eligible amount and optional sub-amounts. All amounts are integers in minor units, and use the currency of the top-level amount.\n\n\n\nField\nRequired\nDescription\n\n\n\n\ntotalHealthcareValue   Integer\n\nThe total healthcare-eligible amount, in minor units. Must be greater than 0 and must not exceed the payment amount (amount.value).\n\n\nprescriptionValue   Integer\n\nThe prescription (Rx) amount, in minor units.\n\n\nvisionPrescriptionValue   Integer\n\nThe vision or optical prescription amount, in minor units.\n\n\ndentalValue   Integer\n\nThe dental amount, in minor units.\n\n\notherMedicalValue   Integer\n\nThe eligible medical amount that the other sub-amounts do not cover, in minor units.\n\n\n\n Required for all transactions.  Required for particular setups, or issuers and card schemes.  Recommended for all transactions, but not required.\nValidation rules\nAdyen validates the enhancedSchemeData.healthcare object before it processes the authorization. The amounts must meet the following rules:\n\ntotalHealthcareValue must be greater than 0.\ntotalHealthcareValue must not exceed the payment amount (amount.value).\nThe sum of the four sub-amounts (prescriptionValue, visionPrescriptionValue, dentalValue, and otherMedicalValue) must not exceed totalHealthcareValue.\n\nErrors\nIf the amounts do not meet the validation rules, Adyen rejects the request with HTTP 422 and the error InvalidFieldWithReason.\n\n\n\nCondition\nResult\n\n\n\n\ntotalHealthcareValue is 0 or a negative value.\nHTTP 422, InvalidFieldWithReason.\n\n\ntotalHealthcareValue exceeds the payment amount.\nHTTP 422, InvalidFieldWithReason.\n\n\nThe sum of the four sub-amounts exceeds totalHealthcareValue.\nHTTP 422, InvalidFieldWithReason.\n\n\n\nTo resolve an error, adjust the amounts so that they meet the validation rules, then send the request again.\nTest and go live\nUse the following test cards to make test FSA\/HSA payments. Both cards are healthcare-eligible.\n\n\n\nCard number\nCard scheme\nIssuing country\/region\nExpiry date\nCard security code\n\n\n\n\n4001 2300 0000 0004\nVisa\nUS\n03\/2030\n737\n\n\n2292 2400 0000 0005\nMastercard\nUS\n03\/2030\n737\n\n\n\nUse the following scenarios to verify your integration before you go live.\n\n\n\nScenario\nExpected result\n\n\n\n\nSubmit enhancedSchemeData.healthcare with sub-amounts (Visa, v72).\nAuthorised.\n\n\nSubmit enhancedSchemeData.healthcare with sub-amounts (Mastercard, v72).\nAuthorised.\n\n\nSubmit enhancedSchemeData.healthcare with totalHealthcareValue only (v72).\nAuthorised.\n\n\nTrigger a partial authorization on a healthcare payment. See Partial authorizations.\nPartiallyAuthorised, with the authorized amount in additionalData.authorisedAmountValue.\n\n\nSubmit a totalHealthcareValue of 0.\nHTTP 422 validation error.\n\n\nSubmit a totalHealthcareValue that exceeds amount.value.\nHTTP 422 validation error.\n\n\nSubmit sub-amounts that sum to more than totalHealthcareValue.\nHTTP 422 validation error.\n\n\n\nSee also\n\n\n                    SIG-IS registration and certification\n                \n                    Enhanced scheme data\n                \n                    Enhanced scheme data for American Express\n                \n                    Advanced flow\n                \n                    Partial authorizations\n                \n                    Payment result codes\n                \n                    Webhooks\n                \n                    Test card numbers\n                \n","type":"page","locale":"en","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Payment methods","lvl2":"Cards","lvl3":"Enhanced scheme data","lvl4":"FSA\/HSA healthcare payments"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/payment-methods","lvl2":"https:\/\/docs.adyen.com\/payment-methods\/cards","lvl3":"https:\/\/docs.adyen.com\/payment-methods\/cards\/enhanced-scheme-data","lvl4":"\/payment-methods\/cards\/enhanced-scheme-data\/fsa-hsa"},"levels":5,"category":"Payment method","category_color":"green","tags":["FSA\/HSA","healthcare","payments"]},"articleFiles":{"fsa-hsa-flow.svg":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/media\/41680b6c0614b13c00419a12079e6588e20f6e20cbbf510427b567c20f8b7b9d.svg?decoding=auto&amp;fetchpriority=auto\" \/>"}}
