{"componentChunkName":"component---src-templates-article-template-tsx","path":"/ec/en/branch-office-management/branch-office-management","result":{"data":{"article":{"title":"How to Onboard Submerchants via API","subtitle":"Validate, query , and enable submerchants using Onboarding API endpoints.","fullWidth":null,"hero":null,"heroTextColor":null,"heroImg":null,"content":[{"body":{"childMdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\nvar Aside = makeShortcode(\"Aside\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Kushki provides a structured onboarding flow for Payment Service Providers (PSPs) to create submerchants while complying with operational and regulatory requirements. We explain how to validate submerchants (in batch or individually), interpret webhook notifications, check their status, and obtain credentials to operate in production.\"), mdx(\"p\", null, \"For this process, there are three key endpoints\"), mdx(\"h2\", {\n    \"id\": \"general-onboarding-flow\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#general-onboarding-flow\",\n    \"aria-label\": \"general onboarding flow permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"General Onboarding Flow\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"maxWidth\": \"1200px\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\"\n    }\n  }, \"\\n        \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"40.834057341442225%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAQACgDAREAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAgMFBAn/xAAnEAACAQIGAQMFAAAAAAAAAAABAgMEEQAFEhQhQRMGMWEiQlFx8f/EABkBAAMBAQEAAAAAAAAAAAAAAAACBAEFA//EAB8RAAEEAwEBAQEAAAAAAAAAAAEAAhEhAwQSQTETIv/aAAwDAQACEQMRAD8A6b12d5Jly666rp6NWqNsrTzKoaU/YOff4w0OCg2d7V0g121kawOPI6IEk+CfVWVfHCVhUAWOnnvGK3ykFH53p49zZZtI1opBAP7wJWdOYOxB9U/f03p85bQVVTK09XK0cJ8ZfW3LclVsOOzbGkhxmIUubbw6r8eLKT1kMCibgmyBAofTAVIwMapJdXCgi35v/MYrIuUMlFBKCJIEmXX5AHAYBujz3g+pH42ZKe0H206xv2Pi+Beimw5I0WfT5nv61xLEsWzeYGnSxJ1KtuGN/e+Bc5umW7btv9XGQBzP8CJsCPpm7W6kpVpY2VSxDOz/AFsWNyb94Zzi4yV0AIT8ImX/2Q==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }, \"\\n          \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg?w=576&fm=webp 576w\", \"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg?w=1151&fm=webp 1151w\", \"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg?w=2302&fm=webp 2302w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg?w=576 576w\", \"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg?w=1151 1151w\", \"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg?w=2302 2302w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\",\n      \"boxShadow\": \"inset 0px 0px 0px 400px transparent\"\n    },\n    \"alt\": \"en_onboarding appian\",\n    \"title\": \"\",\n    \"src\": \"https://images.ctfassets.net/mmjbm94f6iyd/5ZOskpTqlAv5NClzFaGWXs/f7a19052fe03d316e8cfaab31f90d1a0/en__Onboarding_appian.jpg\",\n    \"loading\": \"lazy\"\n  }), \"\\n        \"), \"\\n        \"), \"\\n      \")), mdx(\"h3\", {\n    \"id\": \"1-submerchant-validation-in-batch\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#1-submerchant-validation-in-batch\",\n    \"aria-label\": \"1 submerchant validation in batch permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"1. Submerchant Validation in Batch\"), mdx(\"p\", null, \"This first endpoint or service allows you to submit one or more submerchants to validate their information before starting the onboarding process. In this initial step, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"submerchants are not created yet; we only verify that the data is well-structured and valid to proceed\"), \".\"), mdx(Aside, {\n    title: \"Important\",\n    type: \"danger\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Only submerchants that pass this validation can continue with the process. If any have errors, you must correct them and resubmit the request.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"What to include?\"), \"\\nThe required data includes: country, legal representatives \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.google.com/document/d/1dvVugH7DKi7GTm2rGktzumyNMtK9LRrwTewTjcyiNYA/edit?tab=t.0\"\n  }, \"here\")), mdx(\"h3\", {\n    \"id\": \"possible-responses\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#possible-responses\",\n    \"aria-label\": \"possible responses permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"Possible Responses\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"INITIALIZED\")), \": Kushki received your request and is processing it.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"VALIDATION_FAILED\")), \": One or more submerchants have errors and cannot continue.\")), mdx(\"p\", null, \"Additionally, the response will also include: \"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"submerchantId\")), \": Unique identifier assigned to the submerchant.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"submerchantName\")), \": Name of the submerchant sent in the request.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"status\")), \": Indicates the result of the individual submerchant validation. You may receive these responses:\"))), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"VALID\")), \":  The submerchant was successfully validated and can continue with the process.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"INVALID\")), \": The submerchant contains errors in the data submitted and requires correction before continuing.\")), mdx(\"p\", null, \"Once submitted for validation, you can check if the submerchant is ready for onboarding via a webhook notification.\"), mdx(Aside, {\n    title: \"Important\",\n    type: \"danger\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Once a submerchant has been approved and is ready for onboarding, each request generates a unique identifier called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"requestId\"), \", which you can later use in the second endpoint to query the creation process status.\")), mdx(\"h3\", {\n    \"id\": \"11-webhook-notification-submerchant-status\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#11-webhook-notification-submerchant-status\",\n    \"aria-label\": \"11 webhook notification submerchant status permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"1.1 Webhook Notification: Submerchant Status\")), mdx(\"p\", null, \"Once the request is processed, Kushki will send a webhook notification with the status of each submerchant. This message can arrive individually or in a batch.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Webhooks are optional and apply specifically to this second validation phase to notify the merchant about the process status.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Notifications can be individual (one for each record) or in batch (when a block of records is completed).\")), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"The configuration of webhooks is not done in Kushki but is part of the operational conditions established during the PSP\\u2019s affiliation with Kushki.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Statuses you will receive via webhook\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"READY_FOR_ONBOARDING\")), \": The submerchant passed validation and is ready to start the onboarding process.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"ERROR\")), \": The creation failed due to validation or processing errors. You must correct and resend the request.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Example of a successful webhook notification\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"[\\n  {\\n    \\\"requestId\\\": \\\"d7eb557c-8385-4282-b196-6fb1ccec6a06\\\",\\n    \\\"submerchantId\\\": \\\"e5c40357-7bed-4e43-bd6c-4815e9341eaf\\\",\\n    \\\"status\\\": \\\"READY_FOR_ONBOARDING\\\",\\n    \\\"message\\\": \\\"Success\\\"\\n  }\\n]\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"strong\", {\n    parentName: \"strong\"\n  }, \"Example of a webhook notification with errors\"))), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"[\\n  {\\n    \\\"requestId\\\": \\\"d7eb557c-8385-4282-b196-6fb1ccec6a06\\\",\\n    \\\"submerchantId\\\": \\\"804e0d11-f298-4015-8662-1c31af577164\\\",\\n    \\\"status\\\": \\\"ERROR\\\",\\n    \\\"message\\\": \\\"Submerchant Onboarding Request has failed\\\",\\n    \\\"errorDetails\\\": {\\n      \\\"fields\\\": {\\n        \\\"operationCountry\\\": \\\"Operation Country not registered\\\",\\n        \\\"legalRepresentative\\\": {\\n          \\\"firstName\\\": \\\"Value is required\\\",\\n          \\\"dateBirth\\\": \\\"Date of Birth was invalid\\\"\\n        }\\n      }\\n    }\\n  }\\n]\\n\")), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/appian-submerchant-register/dpe71pv64wxv6-submerchant-register#-webhook-notifications-via-appian:~:text=%F0%9F%94%94%20Webhook%20Notifications%20via%20Appian\"\n  }, \"Consult the webhook documentation here\")), mdx(\"h2\", {\n    \"id\": \"2-get-submerchant-by-requestidsubmerchantid\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#2-get-submerchant-by-requestidsubmerchantid\",\n    \"aria-label\": \"2 get submerchant by requestidsubmerchantid permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"2. Get submerchant by requestId/submerchantId\"), mdx(\"p\", null, \"Once the submerchant is approved, you can use this service. It allows you to query the onboarding status of a submerchant, either by a batch request or a specific submerchant.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"How to use this endpoint?\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"To query a batch request: send the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"requestId\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"To query a specific submerchant: send the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"submerchantId\"), \".\")), mdx(\"h3\", {\n    \"id\": \"possible-statuses\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#possible-statuses\",\n    \"aria-label\": \"possible statuses permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"Possible Statuses\")), mdx(\"p\", null, \"With this endpoint, you can query the different statuses of a submerchant during the process.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"1. To determine if the submerchant entered onboarding or not:\"), \":\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"READY_FOR_ONBOARDING\")), \": The submerchant passed validation and is ready to start the onboarding process.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"ERROR\")), \": The creation failed due to validation or processing issues. You must correct and resend the request.\")), mdx(Aside, {\n    title: \"Important\",\n    type: \"danger\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Only submerchants with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"READY_FOR_ONBOARDING\"), \"  status will continue the process and may show subsequent status updates.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"2. To check the onboarding status (only for approved submerchants):\")), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Status\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"REJECTED\"))), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The submerchant was not approved. The process has ended.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"PSP_PENDING_INFORMATION\"))), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The submerchant has pending tasks in the PSP portal that must be completed to continue.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"KUSHKI_KYC: ONGOING\"))), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Kushki is reviewing the information. If additional information is required, the status will change to \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"PSP_PENDING_INFORMATION\"), \".\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"KUSHKI_ACCOUNT_CREATION: ONGOING\"))), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The submerchant\\u2019s account is being created in Kushki\\u2019s systems.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"APPROVED_WITH_CONDITIONS\"))), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Approved, but requires completing post-production tasks listed in the portal.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"strong\"\n  }, \"APPROVED\"))), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Fully approved and ready to operate.\")))), mdx(\"h2\", {\n    \"id\": \"3-get-subermchantsids\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#3-get-subermchantsids\",\n    \"aria-label\": \"3 get subermchantsids permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"3. Get subermchantsIds\"), mdx(\"p\", null, \"This service allows PSPs to obtain all \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"submerchantIds\"), \" in bulk. It works as a preparatory step for obtaining credentials.\"), mdx(Aside, {\n    title: \"Important\",\n    type: \"danger\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"This endpoint will only return approved submerchants associated with the authenticated PSP.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"What is required?\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"The \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"PSP\\u2019s API Key\"), \", generated from the Appian portal, is required\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Access is limited to submerchants associated with the authenticated PSP.\"))), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Expected Response\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The response will include an array with all the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"submerchantIds\"), \" corresponding to the PSP.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Example response:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n    \\\"idPsp\\\": \\\"122\\\",\\n    \\\"submerchatIds\\\": [\\n        \\\"20000000101933870000\\\",\\n        \\\"20000000106045330000\\\",\\n        \\\"20000000102324298000\\\",\\n        \\\"20000000100416365000\\\",\\n        \\\"20000000106241217000\\\",\\n        \\\"20000000100908143000\\\",\\n        \\\"20000000108017426000\\\",\\n    ]\\n}\\n\\n\")), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"This endpoint is optional but recommended if the PSP needs to operate in bulk with submerchants, as it speeds up access to information prior to obtaining credentials. \")), mdx(\"h2\", {\n    \"id\": \"4-obtain-submerchant-credentials\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#4-obtain-submerchant-credentials\",\n    \"aria-label\": \"4 obtain submerchant credentials permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"4. Obtain Submerchant Credentials\"), mdx(\"p\", null, \"This service allows PSPs to obtain the public and private credentials for one or more submerchants that have been successfully created in Kushki.\"), mdx(Aside, {\n    title: \"Important\",\n    type: \"danger\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Only submerchants with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"APPROVED\"), \" status can obtain credentials.\")), mdx(\"h3\", {\n    \"id\": \"authentication\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#authentication\",\n    \"aria-label\": \"authentication permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"Authentication\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"This service uses the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"PSP\\u2019s API Key\"), \", generated through the Appian portal\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It is designed for PSPs managing multiple submerchants within their ecosystem, providing secure access to the credentials for each authorized submerchant.\")), mdx(\"h3\", {\n    \"id\": \"important-considerations\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#important-considerations\",\n    \"aria-label\": \"important considerations permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"Important Considerations\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"It is possible to include multiple \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"merchantIds\"), \" in the same request to obtain credentials for several submerchants simultaneously.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"The response will provide, for each valid submerchant:\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"publicCredential\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"privateCredential\"), \": keys needed to execute transactional operations such as charges, subscriptions, among others.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Credentials will only be delivered for submerchants correctly associated with the authenticated PSP.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"If an error occurs while processing any of the requested IDs, the corresponding \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"submerchantId\"), \" will be included along with a message detailing the reason:\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"The submerchant does not belong to the authenticated PSP\"), \": The ID is valid but is linked to another PSP.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Submerchant not found\"), \": The ID does not exist or the onboarding process has not concluded yet.\")))));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"Kushki provides a structured onboarding flow for Payment Service Providers (PSPs) to create submerchants while complying with operational…","timeToRead":3,"tableOfContents":{"items":[{"url":"#general-onboarding-flow","title":"General Onboarding Flow","items":[{"url":"#1-submerchant-validation-in-batch","title":"1. Submerchant Validation in Batch"},{"url":"#possible-responses","title":"Possible Responses"},{"url":"#11-webhook-notification-submerchant-status","title":"1.1 Webhook Notification: Submerchant Status"}]},{"url":"#2-get-submerchant-by-requestidsubmerchantid","title":"2. Get submerchant by requestId/submerchantId","items":[{"url":"#possible-statuses","title":"Possible Statuses"}]},{"url":"#3-get-subermchantsids","title":"3. Get subermchantsIds"},{"url":"#4-obtain-submerchant-credentials","title":"4. Obtain Submerchant Credentials","items":[{"url":"#authentication","title":"Authentication"},{"url":"#important-considerations","title":"Important Considerations"}]}]}}},"updatedAt":"February 20, 2026","tabTitle":"Mex"}]}},"pageContext":{"country":"ec","id":"102fdcc6-599d-52b1-8b4d-f16854265618","locale":"en","localeDateFormat":"MMMM DD, YYYY"}},"staticQueryHashes":["1632712422","2408418099","63159454"]}