{"title":"Partner platform requirements","category":"Classic Platforms","creationDate":1676908080,"content":"<div class=\"sc-notice note\"><div>\n<p>The content on this page only applies when you have a partner arrangement for Adyen for Platforms.<\/p>\n<p>For information about platform integrations built after August 1, 2022, refer to our <a href=\"\/pt\/adyen-for-platforms-model\">new integration guide<\/a> instead.<\/p>\n<\/div><\/div>\n<p>On your partner platform, you cannot process payments on behalf of your sub-merchants. Instead, Adyen establishes a direct relationship between each sub-merchant and the card schemes.<\/p>\n<p>For us to be able to establish that relationship, and for your sub-merchants to be able to process ecommerce transactions, we need you to:<\/p>\n<ul>\n<li>Collect additional PCI DSS compliance documentation in the form of the <a href=\"https:\/\/www.pcisecuritystandards.org\/documents\/PCI-DSS-v3_2_1-SAQ-A.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Self-Assessment Questionnaire<\/a> (SAQ A).<\/li>\n<li>Create online stores for each sub-merchant to establish a direct connection between them and the schemes.<\/li>\n<\/ul>\n<div class=\"sc-notice note\"><div>\n<p>Sub-merchants that process point-of-sale (POS) transactions also need stores to be created for them. However, they do not have to complete the SAQ A. The connection between the card networks and each store is established through the POS terminals, as are the PCI DSS requirements. See <a href=\"\/pt\/classic-platforms\/platforms-for-pos\">Point of sale for platforms<\/a> for more information.<\/p>\n<\/div><\/div>\n<p>This is an overview of the steps to take:<\/p>\n<ol>\n<li><a href=\"\/pt\/#create-account-holder-platform\">Create an account holder<\/a> for your sub-merchant.<\/li>\n<li><a href=\"#onboard-partner-platform\">Onboard account holders and collect the SAQ A information<\/a>.<\/li>\n<li><a href=\"#add-store\">Add a store<\/a> for the account holder.<\/li>\n<li><a href=\"#add-allowed-origins\">Add allowed origins<\/a> for sub-merchants that use their own domains.<\/li>\n<li><a href=\"#route-payments\">Route payments<\/a> to the account holder's store.<\/li>\n<\/ol>\n<h2>Requirements<\/h2>\n<p>Before you start with your integration, you must:<\/p>\n<ul>\n<li>Be familiar with the features of <a href=\"\/pt\/platforms\">Adyen for Platforms<\/a>, such as the <a href=\"\/pt\/classic-platforms\/account-structure\">account structure<\/a>, the <a href=\"\/pt\/classic-platforms\/onboard-users\">onboarding and verification process<\/a>, and notifications. The only differences for partner platforms are:\n<ul>\n<li>While onboarding, you have to gather the additional PCI compliance data in the form of the SAQ A.<\/li>\n<li>You have to create an online store for each account holder on the platform.<\/li>\n<\/ul><\/li>\n<li>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> and provide the following required information.\n<ul>\n<li>Countries<\/li>\n<li>Currencies<\/li>\n<li>Merchant category codes (MCCs)<\/li>\n<li>Payment methods<\/li>\n<\/ul><\/li>\n<\/ul>\n<p>You can specify different currencies, MCCs, and payment methods for each country\/region. We use this information to enable you to create stores based on the type of payments that must be processed in the store.<\/p>\n<h2 id=\"create-account-holder-platform\">Step 1: Create an account holder<\/h2>\n<p>Create an account holder for your sub-merchant. For details, see <a href=\"\/pt\/classic-platforms\/account-holders-and-accounts\">account holders and accounts<\/a>.<\/p>\n<p>You need to create the account holder before you can proceed to onboard your sub-merchants. Apart from the <a href=\"\/pt\/classic-platforms\/account-holders-and-accounts?tab=minimum-info-business_2#minimum-required-information\">minimum information<\/a> needed to create an account holder, also collect the following details from your sub-merchant. You will need these details later when you create a store.<\/p>\n<ul>\n<li>Website address for the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/createAccountHolder#request-accountHolderDetails-storeDetails-webAddress\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">webAddress<\/a> field.<\/li>\n<li>Telephone number (including country code) for the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/createAccountHolder#request-accountHolderDetails-storeDetails-fullPhoneNumber\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">fullPhoneNumber<\/a> field.<\/li>\n<\/ul>\n<h2 id=\"onboard-partner-platform\">Step 2: Onboard account holders and collect SAQ A details<\/h2>\n<p>The onboarding process is the same as onboarding regular sub-merchants, with the added requirement to send them the SAQ A.<\/p>\n<p>Make sure that each sub-merchant has completed the SAQ A and has passed the KYC verification process before you add a store.<\/p>\n<h3>Collect SAQ A details using the Hosted Onboarding Page<\/h3>\n<p>If you use our <a href=\"\/pt\/classic-platforms\/onboard-users\/hosted-onboarding-page\">Hosted Onboarding Page<\/a> (HOP), the SAQ A will automatically appear for the sub-merchant as part of the onboarding flow.<\/p>\n<h3>Collect SAQ A details using your own onboarding flow<\/h3>\n<p>If you have built your <a href=\"\/pt\/classic-platforms\/onboard-users\/custom-onboarding\">own onboarding implementation<\/a>, you have to include an additional call in your onboarding flow.<\/p>\n<ol>\n<li>\n<p>Make a POST request to the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Hop\/latest\/post\/getPciQuestionnaireUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/getPciQuestionnaireUrl<\/a> endpoint, specifying:<\/p>\n<ul>\n<li><code>accountHolderCode<\/code>: The unique reference to the account holder.<\/li>\n<li><code>returnUrl<\/code>: The URL to your partner platform website.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Get a PCI questionnaire link'\" :id=\"'\/getPciQuestionnaireUrl request'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/cal-test.adyen.com\\\/cal\\\/services\\\/Hop\\\/v6\\\/getPciQuestionnaireUrl \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n  \\&quot;accountHolderCode\\&quot;: \\&quot;YOUR_UNIQUE_ACCOUNT_HOLDER_CODE\\&quot;,\\n  \\&quot;returnUrl\\&quot;: \\&quot;URL_TO_YOUR_PLATFORM_PORTAL\\&quot;\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response contains:<\/p>\n<ul>\n<li><code>redirectURL<\/code>: The page to where you redirect your account holder. This URL must be used within 15 seconds and can only be used once.<\/li>\n<li><code>pspReference<\/code>: The reference to this session. We recommend that you store this for troubleshooting purposes.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"invalidFields\\\": [],\\n    \\\"pspReference\\\": \\\"8315748692943050\\\",\\n    \\\"resultCode\\\": \\\"Success\\\",\\n    \\\"redirectUrl\\\": \\\"https:\\\/\\\/hop-test.adyen.com\\\/hop\\\/pci\\\/?token=&lt;token&gt;\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Redirect the account holder to the redirect URL within 15 seconds after you received the response. When they are successfully redirected to the questionnaire, the session starts. The session is valid for 30 minutes.<\/p>\n<p>The account holder receives an HTTP 401 status code if:<\/p>\n<ul>\n<li>The redirection did not occur within 15 seconds.<\/li>\n<li>The account holder refreshes or reloads the browser after the session has started.<\/li>\n<\/ul>\n<p>To restart the session, make another POST request to  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Hop\/latest\/post\/getPciQuestionnaireUrl\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/getPciQuestionnaireUrl<\/a>.<\/p>\n<\/li>\n<li>\n<p>Make sure that you have <a href=\"\/pt\/classic-platforms\/configure-notifications\">configured webhooks<\/a> so you can get the <a href=\"\/pt\/classic-platforms\/verification-process\/check-verification-results#verification-statuses\">verification statuses<\/a> in the <span translate=\"no\"><strong>ACCOUNT_HOLDER_VERIFICATION<\/strong><\/span> notification.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Example notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"eventDate\\\": \\\"2020-11-05T14:48:10+01:00\\\",\\n  \\\"eventType\\\": \\\"ACCOUNT_HOLDER_VERIFICATION\\\",\\n  \\\"executingUserKey\\\": \\\"Account Holder Update\\\",\\n  \\\"live\\\": false,\\n  \\\"pspReference\\\": \\\"8515659450108980\\\",\\n  \\\"content\\\": {\\n      \\\"accountHolderCode\\\": \\\"YOUR_UNIQUE_ACCOUNT_HOLDER_CODE\\\",\\n      \\\"kycCheckStatusData\\\": {\\n          \\\"type\\\": \\\"PCI_VERIFICATION\\\",\\n          \\\"status\\\": \\\"PASSED\\\"\\n      }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<p>When you have verified that the account holder provided the SAQ A successfully and that the KYC verification is complete, you can continue with the next steps.<\/p>\n<h2 id=\"add-store\">Step 3: Create a store for the account holder<\/h2>\n<p>An account holder is successfully onboarded on your platform when they have passed the KYC checks and completed the SAQ A. Now, you need to provide us with the details of their store.<\/p>\n<div class=\"notices yellow\">\n<p>Make sure 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> has enabled creating stores. If you haven't requested this yet, refer to the <a href=\"#requirements\">requirements<\/a>.<\/p>\n<\/div>\n<p>Once our Support Team has enabled creating stores, you can start adding stores for your account holders.<\/p>\n<ol>\n<li>\n<p>Make sure that you have <a href=\"\/pt\/classic-platforms\/configure-notifications\">configured webhooks<\/a> so that you are able to receive notifications. Create a <a href=\"\/pt\/classic-platforms\/configure-notifications#create-a-notification-configuration\">notification configuration<\/a> with an <code>eventConfigs<\/code> array with:<\/p>\n<ul>\n<li><code>eventType<\/code>: <span translate=\"no\"><strong>ACCOUNT_HOLDER_STORE_STATUS_CHANGE<\/strong><\/span><\/li>\n<li><code>includeMode<\/code>: <span translate=\"no\"><strong>INCLUDE<\/strong><\/span><\/li>\n<\/ul>\n<\/li>\n<li>\n<p>To provide the store details, include a <code>storeDetails<\/code> array when you update an existing account holder. Make a POST request to <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Account\/updateAccountHolder\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/updateAccountHolder<\/a>.<\/p>\n<p>In the request body, include an  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">accountHolderDetails.storeDetails<\/a> array, specifying:<\/p>\n<ul>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-address\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">address<\/a>&#58; The address of the store.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-fullPhoneNumber\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">fullPhoneNumber<\/a>&#58; The phone number of the store.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-merchantAccount\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchantAccount<\/a>&#58; The merchant account used for accepting payments.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-merchantCategoryCode\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">merchantCategoryCode<\/a>&#58; The merchant category code (MCC) that classifies the business of the account holder.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-storeName\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">storeName<\/a>&#58; The name of the account holder's store. This will be included in the shopper statement.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-storeReference\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">storeReference<\/a>&#58; Your unique reference for the account holder's store.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-webAddress\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">webAddress<\/a>&#58; The URL of the account holder's online store.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Account\/latest\/post\/updateAccountHolder#request-accountHolderDetails-storeDetails-shopperInteraction\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">shopperInteraction<\/a>&#58; The sales channel. In this case, use <span translate=\"no\"><strong>Ecommerce<\/strong><\/span>.<\/li>\n<\/ul>\n<p>The next example shows an <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Account\/updateAccountHolder\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/updateAccountHolder<\/a> request to add a store to an account holder.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Add store'\" :id=\"'\/updateAccountHolder request'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/cal-test.adyen.com\\\/cal\\\/services\\\/Account\\\/v6\\\/updateAccountHolder \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n   \\&quot;accountHolderCode\\&quot;: \\&quot;YOUR_UNIQUE_ACCOUNT_HOLDER_CODE\\&quot;,\\n   \\&quot;accountHolderDetails\\&quot;: {\\n     \\&quot;storeDetails\\&quot; : [\\n       {\\n       \\t\\&quot;address\\&quot; : {\\n           \\&quot;city\\&quot;: \\&quot;Store City\\&quot;,\\n           \\&quot;country\\&quot;: \\&quot;US\\&quot;,\\n           \\&quot;houseNumberOrName\\&quot;: \\&quot;1\\&quot;,\\n           \\&quot;postalCode\\&quot;: \\&quot;123\\&quot;,\\n           \\&quot;stateOrProvince\\&quot;: \\&quot;CA\\&quot;,\\n           \\&quot;street\\&quot;: \\&quot;Store Street\\&quot;\\n         },\\n         \\&quot;fullPhoneNumber\\&quot;: \\&quot;+31201234567\\&quot;,\\n         \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n         \\&quot;merchantCategoryCode\\&quot;: \\&quot;7999\\&quot;,\\n         \\&quot;storeName\\&quot;: \\&quot;Store Name\\&quot;,\\n         \\&quot;storeReference\\&quot;: \\&quot;YOUR_SUBMERCHANT_STORE_ID\\&quot;,\\n         \\&quot;webAddress\\&quot;: \\&quot;URL_TO_SUBMERCHANT_WEBSITE\\&quot;,\\n         \\&quot;shopperInteraction\\&quot;: \\&quot;Ecommerce\\&quot;\\n       }\\n     ]\\n   }\\n }'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response contains various account holder details, including the <code>storeDetails<\/code> showing that the status of the store is <span translate=\"no\"><strong>Pending<\/strong><\/span>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"invalidFields\\\": [],\\n   ...\\n   \\\"accountHolderDetails\\\":{\\n      ...\\n      \\\"storeDetails\\\" : [\\n         {\\n             \\\"address\\\" : {\\n              \\\"city\\\": \\\"Store City\\\",\\n              \\\"country\\\": \\\"US\\\",\\n              \\\"houseNumberOrName\\\": \\\"1\\\",\\n              \\\"postalCode\\\": \\\"123\\\",\\n              \\\"stateOrProvince\\\": \\\"CA\\\",\\n              \\\"street\\\": \\\"Store Street\\\"\\n            },\\n          \\t\\\"fullPhoneNumber\\\": \\\"+31201234567\\\",\\n            \\\"merchantAccount\\\": \\\"YOUR_MERCHANT_ACCOUNT\\\",\\n            \\\"merchantCategoryCode\\\": \\\"7999\\\",\\n            \\\"status\\\": \\\"Pending\\\",\\n            \\\"store\\\": \\\"UNIQUE_SUBMERCHANT_STORE_ID\\\",\\n            \\\"storeName\\\": \\\"Store Name\\\",\\n            \\\"storeReference\\\": \\\"YOUR_SUBMERCHANT_STORE_ID\\\",\\n            \\\"webAddress\\\": \\\"URL_TO_SUBMERCHANT_WEBSITE\\\",\\n            \\\"shopperInteraction\\\": \\\"Ecommerce\\\"\\n         }\\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>Before processing any payments, wait until you receive an  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Notification\/latest\/post\/ACCOUNT_HOLDER_STORE_STATUS_CHANGE\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ACCOUNT_HOLDER_STORE_STATUS_CHANGE<\/a> notification showing that the new status of the store is <span translate=\"no\"><strong>Active<\/strong><\/span>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"eventType\\\":\\\"ACCOUNT_HOLDER_STORE_STATUS_CHANGE\\\",\\n   \\\"eventDate\\\":\\\"2018-04-23T13:13:44+02:00\\\",\\n   \\\"executingUserKey\\\":\\\"ws\\\",\\n   \\\"live\\\":true,\\n   \\\"pspReference\\\":\\\"1313642467023511\\\",\\n   \\\"content\\\":{\\n      \\\"accountHolderCode\\\":\\\"YOUR_UNIQUE_ACCOUNT_HOLDER_CODE\\\",\\n      \\\"store\\\": \\\"UNIQUE_SUBMERCHANT_STORE_ID\\\",\\n      \\\"storeReference\\\":\\\"YOUR_SUBMERCHANT_STORE_ID\\\",\\n      \\\"newStatus\\\":\\\"Active\\\",\\n      \\\"oldStatus\\\":\\\"Pending\\\",\\n      \\\"reason\\\":\\\"YOUR_REASON\\\"\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2 id=\"add-allowed-origins\">Step 4: Add sub-merchant domains to allowed origin<\/h2>\n<p>If any of your sub-merchants take payments from their own domains, you need to <a href=\"\/pt\/development-resources\/client-side-authentication#manage-allowed-origins\">add their domains to your allowed origins<\/a>.<\/p>\n<h2 id=\"route-payments\">Step 5: Route a payment to a store<\/h2>\n<p>Each sub-merchant has their own unique connection to the card networks. This connection is represented by their store.<\/p>\n<p>When processing payments, you have to direct them to the appropriate store. To route a payment to a store, include the <code>store<\/code> field 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. You can get the value for this field from the response you received when you <a href=\"#add-store\">added the store<\/a>, or from the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Notification\/latest\/post\/ACCOUNT_HOLDER_STORE_STATUS_CHANGE\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ACCOUNT_HOLDER_STORE_STATUS_CHANGE<\/a> notification webhook.<\/p>\n<p>When processing payments through a store, you can <a href=\"\/pt\/classic-platforms\/split-configuration-for-stores\">create a split configuration<\/a> to automatically split payments or you can provide <a href=\"\/pt\/classic-platforms\/processing-payments#processing-split-payments\">split instructions<\/a> in every API request.<\/p>\n<div class=\"notices green\">\n<p>You can split payments across multiple account holders, but you can only process a payment through a single store.<\/p>\n<\/div>\n<p>The following example shows how to provide split instructions in the API, routing them over a single store.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Process a payment'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;# Set your X-API-KEY with the API key from the Customer Area.\\ncurl https:\\\/\\\/checkout-test.adyen.com\\\/v68\\\/payments \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n    \\&quot;amount\\&quot;: {\\n        \\&quot;currency\\&quot;: \\&quot;USD\\&quot;,\\n        \\&quot;value\\&quot;: 5000\\n    },\\n    \\&quot;store\\&quot;: \\&quot;UNIQUE_SUBMERCHANT_STORE_ID\\&quot;,\\n    \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n    \\&quot;paymentMethod\\&quot;: {\\n        \\&quot;type\\&quot;: \\&quot;scheme\\&quot;,\\n        \\&quot;encryptedCardNumber\\&quot;: \\&quot;test_4111111111111111\\&quot;,\\n        \\&quot;encryptedExpiryMonth\\&quot;: \\&quot;test_03\\&quot;,\\n        \\&quot;encryptedExpiryYear\\&quot;: \\&quot;test_2030\\&quot;,\\n        \\&quot;encryptedSecurityCode\\&quot;: \\&quot;test_737\\&quot;,\\n        \\&quot;holderName\\&quot;: \\&quot;John Smith\\&quot;\\n    },\\n    \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n    \\&quot;splits\\&quot;:[\\n        {\\n          \\&quot;amount\\&quot;:{\\n              \\&quot;value\\&quot;:4000\\n          },\\n          \\&quot;type\\&quot;:\\&quot;MarketPlace\\&quot;,\\n          \\&quot;account\\&quot;:\\&quot;8815628270908491\\&quot;,\\n          \\&quot;reference\\&quot;:\\&quot;YOUR_REFERENCE_TO_SPLIT_#1\\&quot;\\n        },\\n        {\\n          \\&quot;amount\\&quot;:{\\n              \\&quot;value\\&quot;:500\\n          },\\n          \\&quot;type\\&quot;:\\&quot;MarketPlace\\&quot;,\\n          \\&quot;account\\&quot;:\\&quot;181472818\\&quot;,\\n          \\&quot;reference\\&quot;:\\&quot;YOUR_REFERENCE_TO_SPLIT_#2\\&quot;\\n        },\\n        {\\n          \\&quot;amount\\&quot;:{\\n              \\&quot;value\\&quot;:500\\n          },\\n          \\&quot;type\\&quot;:\\&quot;Commission\\&quot;,\\n          \\&quot;reference\\&quot;:\\&quot;YOUR_REFERENCE_TO_SPLIT_#3\\&quot;\\n        }\\n      ]\\n  }'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/platforms\"\n                        target=\"_self\"\n                        >\n                    Adyen for Platforms\n                <\/a><\/li><li><a href=\"\/classic-platforms\/account-holders-and-accounts\"\n                        target=\"_self\"\n                        >\n                    Account holders and accounts \n                <\/a><\/li><li><a href=\"\/classic-platforms\/onboard-users\"\n                        target=\"_self\"\n                        >\n                    Onboard and verify users\n                <\/a><\/li><li><a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Account\/latest\/overview\"\n                        target=\"_blank\"\n                         class=\"external\">\n                    Adyen for Platforms Account API \n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/classic-platforms\/platforms-for-partners","articleFields":{"description":"Onboard sub-merchants and add online stores so that they can process ecommerce transactions.","search_category":"Classic Platforms","feedback_component":true,"last_edit_on":"20-02-2023 16:48","parameters":{"directoryPath":"\/classic-platforms"}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/classic-platforms\/platforms-for-partners","title":"Partner platform requirements","content":"\nThe content on this page only applies when you have a partner arrangement for Adyen for Platforms.\nFor information about platform integrations built after August 1, 2022, refer to our new integration guide instead.\n\nOn your partner platform, you cannot process payments on behalf of your sub-merchants. Instead, Adyen establishes a direct relationship between each sub-merchant and the card schemes.\nFor us to be able to establish that relationship, and for your sub-merchants to be able to process ecommerce transactions, we need you to:\n\nCollect additional PCI DSS compliance documentation in the form of the Self-Assessment Questionnaire (SAQ A).\nCreate online stores for each sub-merchant to establish a direct connection between them and the schemes.\n\n\nSub-merchants that process point-of-sale (POS) transactions also need stores to be created for them. However, they do not have to complete the SAQ A. The connection between the card networks and each store is established through the POS terminals, as are the PCI DSS requirements. See Point of sale for platforms for more information.\n\nThis is an overview of the steps to take:\n\nCreate an account holder for your sub-merchant.\nOnboard account holders and collect the SAQ A information.\nAdd a store for the account holder.\nAdd allowed origins for sub-merchants that use their own domains.\nRoute payments to the account holder's store.\n\nRequirements\nBefore you start with your integration, you must:\n\nBe familiar with the features of Adyen for Platforms, such as the account structure, the onboarding and verification process, and notifications. The only differences for partner platforms are:\n\nWhile onboarding, you have to gather the additional PCI compliance data in the form of the SAQ A.\nYou have to create an online store for each account holder on the platform.\n\nContact our Support Team and provide the following required information.\n\nCountries\nCurrencies\nMerchant category codes (MCCs)\nPayment methods\n\n\nYou can specify different currencies, MCCs, and payment methods for each country\/region. We use this information to enable you to create stores based on the type of payments that must be processed in the store.\nStep 1: Create an account holder\nCreate an account holder for your sub-merchant. For details, see account holders and accounts.\nYou need to create the account holder before you can proceed to onboard your sub-merchants. Apart from the minimum information needed to create an account holder, also collect the following details from your sub-merchant. You will need these details later when you create a store.\n\nWebsite address for the  webAddress field.\nTelephone number (including country code) for the  fullPhoneNumber field.\n\nStep 2: Onboard account holders and collect SAQ A details\nThe onboarding process is the same as onboarding regular sub-merchants, with the added requirement to send them the SAQ A.\nMake sure that each sub-merchant has completed the SAQ A and has passed the KYC verification process before you add a store.\nCollect SAQ A details using the Hosted Onboarding Page\nIf you use our Hosted Onboarding Page (HOP), the SAQ A will automatically appear for the sub-merchant as part of the onboarding flow.\nCollect SAQ A details using your own onboarding flow\nIf you have built your own onboarding implementation, you have to include an additional call in your onboarding flow.\n\n\nMake a POST request to the  \/getPciQuestionnaireUrl endpoint, specifying:\n\naccountHolderCode: The unique reference to the account holder.\nreturnUrl: The URL to your partner platform website.\n\n\n\n\nThe response contains:\n\nredirectURL: The page to where you redirect your account holder. This URL must be used within 15 seconds and can only be used once.\npspReference: The reference to this session. We recommend that you store this for troubleshooting purposes.\n\n\n\n\n\n\nRedirect the account holder to the redirect URL within 15 seconds after you received the response. When they are successfully redirected to the questionnaire, the session starts. The session is valid for 30 minutes.\nThe account holder receives an HTTP 401 status code if:\n\nThe redirection did not occur within 15 seconds.\nThe account holder refreshes or reloads the browser after the session has started.\n\nTo restart the session, make another POST request to  \/getPciQuestionnaireUrl.\n\n\nMake sure that you have configured webhooks so you can get the verification statuses in the ACCOUNT_HOLDER_VERIFICATION notification.\n\n\n\n\n\nWhen you have verified that the account holder provided the SAQ A successfully and that the KYC verification is complete, you can continue with the next steps.\nStep 3: Create a store for the account holder\nAn account holder is successfully onboarded on your platform when they have passed the KYC checks and completed the SAQ A. Now, you need to provide us with the details of their store.\n\nMake sure our Support Team has enabled creating stores. If you haven't requested this yet, refer to the requirements.\n\nOnce our Support Team has enabled creating stores, you can start adding stores for your account holders.\n\n\nMake sure that you have configured webhooks so that you are able to receive notifications. Create a notification configuration with an eventConfigs array with:\n\neventType: ACCOUNT_HOLDER_STORE_STATUS_CHANGE\nincludeMode: INCLUDE\n\n\n\nTo provide the store details, include a storeDetails array when you update an existing account holder. Make a POST request to \/updateAccountHolder.\nIn the request body, include an  accountHolderDetails.storeDetails array, specifying:\n\n address&#58; The address of the store.\n fullPhoneNumber&#58; The phone number of the store.\n merchantAccount&#58; The merchant account used for accepting payments.\n merchantCategoryCode&#58; The merchant category code (MCC) that classifies the business of the account holder.\n storeName&#58; The name of the account holder's store. This will be included in the shopper statement.\n storeReference&#58; Your unique reference for the account holder's store.\n webAddress&#58; The URL of the account holder's online store.\n shopperInteraction&#58; The sales channel. In this case, use Ecommerce.\n\nThe next example shows an \/updateAccountHolder request to add a store to an account holder.\n\n\n\nThe response contains various account holder details, including the storeDetails showing that the status of the store is Pending.\n\n\n\n\n\nBefore processing any payments, wait until you receive an  ACCOUNT_HOLDER_STORE_STATUS_CHANGE notification showing that the new status of the store is Active.\n\n\n\n\n\nStep 4: Add sub-merchant domains to allowed origin\nIf any of your sub-merchants take payments from their own domains, you need to add their domains to your allowed origins.\nStep 5: Route a payment to a store\nEach sub-merchant has their own unique connection to the card networks. This connection is represented by their store.\nWhen processing payments, you have to direct them to the appropriate store. To route a payment to a store, include the store field in your  \/payments request. You can get the value for this field from the response you received when you added the store, or from the  ACCOUNT_HOLDER_STORE_STATUS_CHANGE notification webhook.\nWhen processing payments through a store, you can create a split configuration to automatically split payments or you can provide split instructions in every API request.\n\nYou can split payments across multiple account holders, but you can only process a payment through a single store.\n\nThe following example shows how to provide split instructions in the API, routing them over a single store.\n\n    \n\nSee also\n\n\n                    Adyen for Platforms\n                \n                    Account holders and accounts \n                \n                    Onboard and verify users\n                \n                    Adyen for Platforms Account API \n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Classic integration","lvl2":"Partner platform requirements"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/classic-platforms","lvl2":"\/pt\/classic-platforms\/platforms-for-partners"},"levels":3,"category":"Classic Platforms","category_color":"green","tags":["Partner","platform","requirements"]}}
