{
"type": "https://docs.etherfuse.com/ramp/v2/errors/quote-expired",
"title": "Quote expired",
"status": 400,
"detail": "quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist",
"instance": "tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
"errors": [
{
"pointer": "#/accountDetails/clabe",
"detail": "This field is required."
}
],
"required": [
"<string>"
],
"missing": [
"<string>"
]
}
{
"type": "https://docs.etherfuse.com/ramp/v2/errors/quote-expired",
"title": "Quote expired",
"status": 400,
"detail": "quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist",
"instance": "tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
"errors": [
{
"pointer": "#/accountDetails/clabe",
"detail": "This field is required."
}
],
"required": [
"<string>"
],
"missing": [
"<string>"
]
}
{
"type": "https://docs.etherfuse.com/ramp/v2/errors/quote-expired",
"title": "Quote expired",
"status": 400,
"detail": "quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist",
"instance": "tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
"errors": [
{
"pointer": "#/accountDetails/clabe",
"detail": "This field is required."
}
],
"required": [
"<string>"
],
"missing": [
"<string>"
]
}
{
"type": "https://docs.etherfuse.com/ramp/v2/errors/quote-expired",
"title": "Quote expired",
"status": 400,
"detail": "quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist",
"instance": "tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
"errors": [
{
"pointer": "#/accountDetails/clabe",
"detail": "This field is required."
}
],
"required": [
"<string>"
],
"missing": [
"<string>"
]
}
{
"type": "https://docs.etherfuse.com/ramp/v2/errors/quote-expired",
"title": "Quote expired",
"status": 400,
"detail": "quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist",
"instance": "tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
"errors": [
{
"pointer": "#/accountDetails/clabe",
"detail": "This field is required."
}
],
"required": [
"<string>"
],
"missing": [
"<string>"
]
}
{
"type": "https://docs.etherfuse.com/ramp/v2/errors/quote-expired",
"title": "Quote expired",
"status": 400,
"detail": "quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist",
"instance": "tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
"errors": [
{
"pointer": "#/accountDetails/clabe",
"detail": "This field is required."
}
],
"required": [
"<string>"
],
"missing": [
"<string>"
]
}
KYC
Import a verified session
Import a verification the customer already passed on the partner’s own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn’t transfer: KYC Sumsub Shared Token.
That breakdown covers the identity stage only. Send what it lists, then wait for kycUpdated and read the requirements again: proofOfAddress and customerAgreement appear only when the customer reaches their stages. See Requirements unlock in stages.
Only shareToken is accepted. The verification level and the customer’s identity are ours to decide. The token is a credential; it is never logged and appears in no response.
No country is sent: it is read from the shared verification and used to route the customer. The customer’s registered userInfo.email is required and is set on the imported applicant.
Nothing is trusted wholesale. Everything imported is re-checked against Etherfuse’s own requirements, so a session approved in the partner’s account is not automatically approved here.
Importing again. If the customer’s verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns 409.
The organization this call acts for: your API key's organization or one of its customer organizations. Any other id returns 404not-found.
Body
application/json
A verification session the partner already completed with the same provider, handed over as a share token they created for us. No other fields are accepted.
Information a shared session does not bring across. Custom fields on your own verification level are not copied when you share an applicant.
Show child attributes
Response
The session was imported. requirements lists what is still outstanding. If we could not read the requirements, we leave the field out; read GET /organization/{organizationId}/kyc?requirements=true instead.
What is still outstanding after the import: the same breakdown GET /organization/{organizationId}/kyc?requirements=true returns. Left out if we could not read the requirements after the import.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Etherfuse API","colors":{"primary":"#141414","light":"#E4FF3F","dark":"#141414"},"logo":{"light":"https://mintcdn.com/etherfuse/XRSchVFGUgreQatD/img/logo-black.svg?fit=max\u0026auto=format\u0026n=XRSchVFGUgreQatD\u0026q=85\u0026s=92cf84eca27df4a19f7b032da398d110","dark":"https://mintcdn.com/etherfuse/XRSchVFGUgreQatD/img/logo-white.svg?fit=max\u0026auto=format\u0026n=XRSchVFGUgreQatD\u0026q=85\u0026s=7c87780c9a248347ffe6357ccf6762ed","href":"https://etherfuse.com"},"favicon":"https://mintcdn.com/etherfuse/pF4txuzXWQE790kS/img/favicon.png?fit=max\u0026auto=format\u0026n=pF4txuzXWQE790kS\u0026q=85\u0026s=ac74be5f7f4605e75bc961be0c6e5ff9","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"],"autogenerate":true}},"navbar":{"links":[{"href":"https://cal.com/team/etherfuse/api-overview?overlayCalendar=true","label":"Book a demo"},{"href":"https://app.etherfuse.com","label":"App"}],"primary":{"type":"button","label":"Get sandbox keys","href":"https://sandbox.etherfuse.com/sign-in?returnTo=%2Faccount%2Fmanage"}},"footer":{"links":[{"items":[{"label":"Website","href":"https://etherfuse.com"},{"label":"App","href":"https://app.etherfuse.com"},{"label":"Book a demo","href":"https://cal.com/team/etherfuse/api-overview?overlayCalendar=true"}]}]},"fonts":{"family":"Figtree"},"integrations":{"posthog":{"apiKey":"phc_vJEpZk4aZr9PxdPqapjg8ZKWFybTTmDvAxZNg88LTuPu","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"etherfuse","hasAudioNarration":false,"actualSubdomain":"etherfuse","customDomains":["docs.etherfuse.com"],"gitSource":{"type":"github","owner":"etherfuse","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae547dfd382909612c83cf7","collectionId":"eee1a3e5-d040-4b45-980d-cc540ca77f29","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae547dfd382909612c83cf7"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae547dfd382909612c83cf7","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API Reference","count":151},{"language":"default","tag":"Ramp API","count":72},{"language":"default","tag":"Guides","count":65},{"language":"default","tag":"KYC","count":20},{"language":"default","tag":"Lookup API","count":18},{"language":"default","tag":"Orders","count":17},{"language":"default","tag":"Organizations","count":16},{"language":"default","tag":"User Authentication","count":12},{"language":"default","tag":"Blockchains","count":12},{"language":"default","tag":"Integration Guides","count":12}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"global.css","content":"body{scrollbar-gutter:stable}.sandbox-playground-cta{display:block;margin:1rem 0 1.25rem;padding:1rem 1.25rem;border-radius:.75rem;border:1px solid #141414;background-color:#e4ff3f;color:#141414!important;text-decoration:none;transition:background-color .15s ease,box-shadow .15s ease}.sandbox-playground-cta:hover{background-color:#d8f32f;box-shadow:0 2px 8px rgba(20,20,20,.12);color:#141414!important}.sandbox-playground-cta__body,.sandbox-playground-cta__detail,.sandbox-playground-cta__title{color:inherit!important}.dark .sandbox-playground-cta{border-color:#e4ff3f;background-color:#e4ff3f;color:#141414!important}.dark .sandbox-playground-cta:hover{background-color:#d8f32f;color:#141414!important}.sandbox-playground-cta__title{display:block;font-size:1rem;font-weight:600;margin-bottom:.35rem}.sandbox-playground-cta__body{display:block;font-size:.95rem;line-height:1.45;font-weight:500}.sandbox-playground-cta__detail{display:block;margin-top:.35rem;font-size:.85rem;line-height:1.45;opacity:.85}"}],"page":{"pagePath":"v2/api-reference/kyc/import-a-verified-session","slug":"/v2/api-reference/kyc/import-a-verified-session","pageMetadata":{"title":"Import a verified session","openapi":"openapi-v2.json POST /organization/{organizationId}/verification/import","description":"Import a verification the customer already passed on the partner's own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn't transfer: [KYC Sumsub Shared Token](/v2/guides/kyc-sumsub-shared-token).\n\nAnswers **`200`**, not `202`: the import is committed before the response, which carries the same requirements breakdown as [`GET /organization/{organizationId}/kyc?requirements=true`](/v2/api-reference/kyc/get-kyc-status).\n\nThat breakdown covers the identity stage only. Send what it lists, then wait for `kycUpdated` and read the requirements again: `proofOfAddress` and `customerAgreement` appear only when the customer reaches their stages. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n**Only `shareToken` is accepted.** The verification level and the customer's identity are ours to decide. The token is a credential; it is never logged and appears in no response.\n\nNo country is sent: it is read from the shared verification and used to route the customer. The customer's registered `userInfo.email` is required and is set on the imported applicant.\n\n**Nothing is trusted wholesale.** Everything imported is re-checked against Etherfuse's own requirements, so a session approved in the partner's account is not automatically approved here.\n\n**Importing again.** If the customer's verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns `409`.","href":"/v2/api-reference/kyc/import-a-verified-session"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Import a verification the customer already passed on the partner’s own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn’t transfer: \", _jsx(_components.a, {\n href: \"/v2/guides/kyc-sumsub-shared-token\",\n children: \"KYC Sumsub Shared Token\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Answers \", _jsx(_components.strong, {\n children: _jsx(_components.code, {\n children: \"200\"\n })\n }), \", not \", _jsx(_components.code, {\n children: \"202\"\n }), \": the import is committed before the response, which carries the same requirements breakdown as \", _jsx(_components.a, {\n href: \"/v2/api-reference/kyc/get-kyc-status\",\n children: _jsx(_components.code, {\n children: \"GET /organization/{organizationId}/kyc?requirements=true\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"That breakdown covers the identity stage only. Send what it lists, then wait for \", _jsx(_components.code, {\n children: \"kycUpdated\"\n }), \" and read the requirements again: \", _jsx(_components.code, {\n children: \"proofOfAddress\"\n }), \" and \", _jsx(_components.code, {\n children: \"customerAgreement\"\n }), \" appear only when the customer reaches their stages. See \", _jsx(_components.a, {\n href: \"/v2/guides/onboarding#requirements-unlock-in-stages\",\n children: \"Requirements unlock in stages\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsxs(_components.strong, {\n children: [\"Only \", _jsx(_components.code, {\n children: \"shareToken\"\n }), \" is accepted.\"]\n }), \" The verification level and the customer’s identity are ours to decide. The token is a credential; it is never logged and appears in no response.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"No country is sent: it is read from the shared verification and used to route the customer. The customer’s registered \", _jsx(_components.code, {\n children: \"userInfo.email\"\n }), \" is required and is set on the imported applicant.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Nothing is trusted wholesale.\"\n }), \" Everything imported is re-checked against Etherfuse’s own requirements, so a session approved in the partner’s account is not automatically approved here.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Importing again.\"\n }), \" If the customer’s verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns \", _jsx(_components.code, {\n children: \"409\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Import a verified session","openapi":"openapi-v2.json POST /organization/{organizationId}/verification/import","description":"Import a verification the customer already passed on the partner's own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn't transfer: [KYC Sumsub Shared Token](/v2/guides/kyc-sumsub-shared-token).\n\nAnswers **`200`**, not `202`: the import is committed before the response, which carries the same requirements breakdown as [`GET /organization/{organizationId}/kyc?requirements=true`](/v2/api-reference/kyc/get-kyc-status).\n\nThat breakdown covers the identity stage only. Send what it lists, then wait for `kycUpdated` and read the requirements again: `proofOfAddress` and `customerAgreement` appear only when the customer reaches their stages. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n**Only `shareToken` is accepted.** The verification level and the customer's identity are ours to decide. The token is a credential; it is never logged and appears in no response.\n\nNo country is sent: it is read from the shared verification and used to route the customer. The customer's registered `userInfo.email` is required and is set on the imported applicant.\n\n**Nothing is trusted wholesale.** Everything imported is re-checked against Etherfuse's own requirements, so a session approved in the partner's account is not automatically approved here.\n\n**Importing again.** If the customer's verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns `409`.","href":"/v2/api-reference/kyc/import-a-verified-session"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["KYC"],"summary":"Import a verified session","description":"Import a verification the customer already passed on the partner's own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn't transfer: [KYC Sumsub Shared Token](/v2/guides/kyc-sumsub-shared-token).\n\nAnswers **`200`**, not `202`: the import is committed before the response, which carries the same requirements breakdown as [`GET /organization/{organizationId}/kyc?requirements=true`](/v2/api-reference/kyc/get-kyc-status).\n\nThat breakdown covers the identity stage only. Send what it lists, then wait for `kycUpdated` and read the requirements again: `proofOfAddress` and `customerAgreement` appear only when the customer reaches their stages. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n**Only `shareToken` is accepted.** The verification level and the customer's identity are ours to decide. The token is a credential; it is never logged and appears in no response.\n\nNo country is sent: it is read from the shared verification and used to route the customer. The customer's registered `userInfo.email` is required and is set on the imported applicant.\n\n**Nothing is trusted wholesale.** Everything imported is re-checked against Etherfuse's own requirements, so a session approved in the partner's account is not automatically approved here.\n\n**Importing again.** If the customer's verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns `409`.","operationId":"v2ImportVerification","parameters":["df96b103-056c-4bd5-80d6-07cc3cc88006"],"requestBody":"3f9958b3-b730-42a9-a347-cd8f4b1cb540","responses":{"200":"3a8117b9-8d9c-4091-8654-1b0706079bcc","400":"80d47adc-84c4-47a0-871f-731cf4bb68b9","401":"130244df-72e2-4fd6-b267-c38b15d5f1d8","404":"3f625a85-2cb1-4d2e-8d2c-54275d48243a","409":"26d1f11a-8273-45c7-b9b4-d2a2a1a811ba","500":"7a0181ea-ac49-4627-82ea-890bd296319f","503":"1c6a120b-33cd-424e-a563-3c995f871b96"},"method":"post","type":"path","servers":["58ef8c25-fe99-4a3a-b3d6-63ae68d90d12"],"security":["e2afb556-03f4-4063-920b-822ee6d2cce7"],"path":"/organization/{organizationId}/verification/import","baseUrlOptions":["https://api.sand.etherfuse.com"],"title":"Import a verified session","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"df96b103-056c-4bd5-80d6-07cc3cc88006":{"name":"organizationId","in":"path","required":true,"description":"The organization this call acts for: your API key's organization or one of its customer organizations. Any other id returns `404` `not-found`.","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The organization this call acts for: your API key's organization or one of its customer organizations. Any other id returns `404` `not-found`.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"A verification session the partner already completed with the same provider, handed over as a share token they created for us. No other fields are accepted.","required":["shareToken"],"properties":{"shareToken":{"type":"string","description":"The single-use, short-lived share token created for the verified applicant, targeting Etherfuse's client id.","example":"_act-sbx-jwt-eyJhbGciOi...","isRequired":true,"uniqueKey":"shareToken","typeLabel":"string"},"additionalInfo":{"type":"object","description":"Information a shared session does not bring across. Custom fields on your own verification level are not copied when you share an applicant.","properties":{"curp":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^[A-Za-z0-9]{18}$","description":"The customer's CURP. A Mexican customer (`country: \"MEX\"`) needs one to complete verification. We check it before the share token is spent and store it on the imported verification. Send it here, or the customer enters it in the [`/idv` launch](/v2/guides/kyc-websdk).","example":"XEXX010101HNEXXXA4","uniqueKey":"additionalInfo.curp.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^[A-Za-z0-9]{18}$","description":"The customer's CURP. A Mexican customer (`country: \"MEX\"`) needs one to complete verification. We check it before the share token is spent and store it on the imported verification. Send it here, or the customer enters it in the [`/idv` launch](/v2/guides/kyc-websdk).","example":"XEXX010101HNEXXXA4","uniqueKey":"additionalInfo.curp.oneOf.1","typeLabel":"null"}],"uniqueKey":"additionalInfo.curp","typeLabel":"string | null"}},"uniqueKey":"additionalInfo","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"shareToken":"_act-sbx-jwt-eyJhbGciOi...","additionalInfo":{"curp":"XEXX010101HNEXXXA4"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3a8117b9-8d9c-4091-8654-1b0706079bcc":{"description":"The session was imported. `requirements` lists what is still outstanding. If we could not read the requirements, we leave the field out; read `GET /organization/{organizationId}/kyc?requirements=true` instead.","content":{"application/json":{"schema":{"type":"object","description":"The outcome of importing a verification session.","required":["organizationId","status"],"properties":{"organizationId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"organizationId","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["notStarted","inProgress","submitted","approved","denied"],"description":"- `notStarted`: verification has not started.\n- `inProgress`: the customer started but has not submitted everything.\n- `submitted`: submitted and waiting for review.\n- `approved`: cleared.\n- `denied`: rejected, or a previous approval was revoked.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"requirements":{"type":"array","description":"What is still outstanding after the import: the same breakdown `GET /organization/{organizationId}/kyc?requirements=true` returns. Left out if we could not read the requirements after the import.","items":{"type":"object","description":"One thing a customer's verification still needs, and where it stands.","required":["type","status","requiresLaunch"],"properties":{"type":{"type":"string","description":"Which requirement this is. Only the ones that apply to this customer are listed; their country decides which those are.\n\n1. `personalData`: name, date of birth, tax ID, country and address; Mexico also requires CURP\n2. `identityDocument`: a government-issued ID\n3. `proofOfAddress`: an address document; appears only when the identity document carried no address\n4. `occupation`: job title and occupation category\n5. `emailConfirmation`: the customer confirming their email address\n6. `selfie`: a live face capture; cannot be uploaded\n7. `customerAgreement`: the customer accepting the required agreements\n\nWe may add requirements, and will update these docs when we do. A country may also introduce one of its own; see [Country-specific requirements](/v2/guides/onboarding#country-specific-requirements).","enum":["personalData","identityDocument","proofOfAddress","occupation","emailConfirmation","selfie","customerAgreement"],"isRequired":true,"uniqueKey":"requirements.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"How far along this requirement is.\n\n- `satisfied`: accepted, nothing more to do\n- `pending`: nothing has been provided for this yet, so it is still owed\n- `awaitingReview`: provided, not yet reviewed\n- `actionRequired`: **reviewed and rejected**, so it must be provided again, corrected\n\nTell `pending` and `awaitingReview` apart: a shared verification whose identity document and selfie transferred reads `awaitingReview` for both, so do not read `pending` into it and send them again. More values may be added, so act on the two that carry an instruction (`satisfied` means done, `actionRequired` means send again) and treat anything else as in progress.","enum":["satisfied","pending","awaitingReview","actionRequired"],"isRequired":true,"uniqueKey":"requirements.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"requiresLaunch":{"type":"boolean","description":"True when only the customer can satisfy this in the hosted step, such as the liveness capture. A property of the requirement rather than of its progress, so it does not change as the customer advances. `selfie` reads true whether or not the selfie has been taken. A requirement with status `satisfied` needs no further action even when this flag is true.\n\nFalse does not mean the requirement is yours to submit. It means the API *can* submit it. The customer can always enter it in the hosted step instead, which is why launching them satisfies everything. So this flag says what the API cannot reach, not when to launch: an outstanding requirement reading true is one no API call will ever clear.","isRequired":true,"uniqueKey":"requirements.items.[INDEX].requiresLaunch","typeLabel":"boolean"}},"example":{"type":"identityDocument","status":"pending","requiresLaunch":false},"uniqueKey":"requirements.items.[INDEX]","typeLabel":"object"},"uniqueKey":"requirements","typeLabel":"object[]"}},"example":{"organizationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"inProgress","requirements":[{"type":"personalData","status":"satisfied","requiresLaunch":false},{"type":"identityDocument","status":"satisfied","requiresLaunch":false},{"type":"occupation","status":"pending","requiresLaunch":false},{"type":"selfie","status":"satisfied","requiresLaunch":true},{"type":"customerAgreement","status":"pending","requiresLaunch":false}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"organizationId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"inProgress","requirements":[{"type":"personalData","status":"satisfied","requiresLaunch":false},{"type":"identityDocument","status":"satisfied","requiresLaunch":false},{"type":"occupation","status":"pending","requiresLaunch":false},{"type":"selfie","status":"satisfied","requiresLaunch":true},{"type":"customerAgreement","status":"pending","requiresLaunch":false}]}}},"exampleType":"generated"}},"exampleType":"generated"},"80d47adc-84c4-47a0-871f-731cf4bb68b9":{"description":"`invalid-request`; `detail` says why. Any of: `shareToken` missing; `additionalInfo.curp` is not 18 letters or digits (nothing is created and the share token is not spent); the share token is expired, already spent, created for someone else, or shares nothing our requirements ask for; the shared verification has no country on file, or one we cannot verify (nothing is created and the share token is not spent); the customer has no email on file; or the organization is a business.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details. Every v2 error uses this body with content type `application/problem+json`. `errors` is present only on `validation-error`. `required` and `missing` are present only on `registration-info-required`.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri","description":"`https://docs.etherfuse.com/ramp/v2/errors/` followed by the problem slug, for example `https://docs.etherfuse.com/ramp/v2/errors/quote-expired`. Switch on this value.","example":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","example":"Quote expired","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Human-readable explanation of this occurrence. Do not parse it.","example":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Unique identifier for this occurrence. Quote it to support.","example":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"errors":{"type":"array","description":"Present on `validation-error`. One entry per invalid field.","items":{"type":"object","required":["pointer","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer to the field in the request, for example `#/accountDetails/clabe`.","example":"#/accountDetails/clabe","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"detail":{"type":"string","description":"What is wrong with the field.","example":"This field is required.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"required":{"type":"array","description":"Present on `registration-info-required`. Every registration field the route requires, as JSON Pointers into the request, for example `#/registrationInfo/taxId`.","items":{"type":"string","uniqueKey":"required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"required","typeLabel":"string[]"},"missing":{"type":"array","description":"Present on `registration-info-required`. The required fields you must still send, as JSON Pointers into the request.","items":{"type":"string","uniqueKey":"missing.items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","title":"Quote expired","status":400,"detail":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","instance":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","errors":[{"pointer":"#/accountDetails/clabe","detail":"This field is required."}],"required":["\u003cstring>"],"missing":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"130244df-72e2-4fd6-b267-c38b15d5f1d8":{"description":"`unauthorized`: the `Authorization` header is missing, not ASCII, or does not hold a valid API key.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details. Every v2 error uses this body with content type `application/problem+json`. `errors` is present only on `validation-error`. `required` and `missing` are present only on `registration-info-required`.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri","description":"`https://docs.etherfuse.com/ramp/v2/errors/` followed by the problem slug, for example `https://docs.etherfuse.com/ramp/v2/errors/quote-expired`. Switch on this value.","example":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","example":"Quote expired","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Human-readable explanation of this occurrence. Do not parse it.","example":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Unique identifier for this occurrence. Quote it to support.","example":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"errors":{"type":"array","description":"Present on `validation-error`. One entry per invalid field.","items":{"type":"object","required":["pointer","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer to the field in the request, for example `#/accountDetails/clabe`.","example":"#/accountDetails/clabe","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"detail":{"type":"string","description":"What is wrong with the field.","example":"This field is required.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"required":{"type":"array","description":"Present on `registration-info-required`. Every registration field the route requires, as JSON Pointers into the request, for example `#/registrationInfo/taxId`.","items":{"type":"string","uniqueKey":"required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"required","typeLabel":"string[]"},"missing":{"type":"array","description":"Present on `registration-info-required`. The required fields you must still send, as JSON Pointers into the request.","items":{"type":"string","uniqueKey":"missing.items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","title":"Quote expired","status":400,"detail":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","instance":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","errors":[{"pointer":"#/accountDetails/clabe","detail":"This field is required."}],"required":["\u003cstring>"],"missing":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"3f625a85-2cb1-4d2e-8d2c-54275d48243a":{"description":"`not-found`: your API key cannot act for this organization.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details. Every v2 error uses this body with content type `application/problem+json`. `errors` is present only on `validation-error`. `required` and `missing` are present only on `registration-info-required`.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri","description":"`https://docs.etherfuse.com/ramp/v2/errors/` followed by the problem slug, for example `https://docs.etherfuse.com/ramp/v2/errors/quote-expired`. Switch on this value.","example":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","example":"Quote expired","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Human-readable explanation of this occurrence. Do not parse it.","example":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Unique identifier for this occurrence. Quote it to support.","example":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"errors":{"type":"array","description":"Present on `validation-error`. One entry per invalid field.","items":{"type":"object","required":["pointer","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer to the field in the request, for example `#/accountDetails/clabe`.","example":"#/accountDetails/clabe","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"detail":{"type":"string","description":"What is wrong with the field.","example":"This field is required.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"required":{"type":"array","description":"Present on `registration-info-required`. Every registration field the route requires, as JSON Pointers into the request, for example `#/registrationInfo/taxId`.","items":{"type":"string","uniqueKey":"required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"required","typeLabel":"string[]"},"missing":{"type":"array","description":"Present on `registration-info-required`. The required fields you must still send, as JSON Pointers into the request.","items":{"type":"string","uniqueKey":"missing.items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","title":"Quote expired","status":400,"detail":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","instance":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","errors":[{"pointer":"#/accountDetails/clabe","detail":"This field is required."}],"required":["\u003cstring>"],"missing":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"26d1f11a-8273-45c7-b9b4-d2a2a1a811ba":{"description":"`conflict`: this customer's verification is approved, denied, or in review, so a new session cannot replace it; or our verification provider won't let a new session replace this customer's verification. Nothing was imported and the share token was not spent. Don't retry the second case; contact us.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details. Every v2 error uses this body with content type `application/problem+json`. `errors` is present only on `validation-error`. `required` and `missing` are present only on `registration-info-required`.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri","description":"`https://docs.etherfuse.com/ramp/v2/errors/` followed by the problem slug, for example `https://docs.etherfuse.com/ramp/v2/errors/quote-expired`. Switch on this value.","example":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","example":"Quote expired","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Human-readable explanation of this occurrence. Do not parse it.","example":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Unique identifier for this occurrence. Quote it to support.","example":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"errors":{"type":"array","description":"Present on `validation-error`. One entry per invalid field.","items":{"type":"object","required":["pointer","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer to the field in the request, for example `#/accountDetails/clabe`.","example":"#/accountDetails/clabe","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"detail":{"type":"string","description":"What is wrong with the field.","example":"This field is required.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"required":{"type":"array","description":"Present on `registration-info-required`. Every registration field the route requires, as JSON Pointers into the request, for example `#/registrationInfo/taxId`.","items":{"type":"string","uniqueKey":"required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"required","typeLabel":"string[]"},"missing":{"type":"array","description":"Present on `registration-info-required`. The required fields you must still send, as JSON Pointers into the request.","items":{"type":"string","uniqueKey":"missing.items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","title":"Quote expired","status":400,"detail":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","instance":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","errors":[{"pointer":"#/accountDetails/clabe","detail":"This field is required."}],"required":["\u003cstring>"],"missing":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"7a0181ea-ac49-4627-82ea-890bd296319f":{"description":"`internal-error`: an unexpected error on our side. Retry with backoff, and quote `instance` to support if it persists.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details. Every v2 error uses this body with content type `application/problem+json`. `errors` is present only on `validation-error`. `required` and `missing` are present only on `registration-info-required`.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri","description":"`https://docs.etherfuse.com/ramp/v2/errors/` followed by the problem slug, for example `https://docs.etherfuse.com/ramp/v2/errors/quote-expired`. Switch on this value.","example":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","example":"Quote expired","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Human-readable explanation of this occurrence. Do not parse it.","example":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Unique identifier for this occurrence. Quote it to support.","example":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"errors":{"type":"array","description":"Present on `validation-error`. One entry per invalid field.","items":{"type":"object","required":["pointer","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer to the field in the request, for example `#/accountDetails/clabe`.","example":"#/accountDetails/clabe","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"detail":{"type":"string","description":"What is wrong with the field.","example":"This field is required.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"required":{"type":"array","description":"Present on `registration-info-required`. Every registration field the route requires, as JSON Pointers into the request, for example `#/registrationInfo/taxId`.","items":{"type":"string","uniqueKey":"required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"required","typeLabel":"string[]"},"missing":{"type":"array","description":"Present on `registration-info-required`. The required fields you must still send, as JSON Pointers into the request.","items":{"type":"string","uniqueKey":"missing.items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","title":"Quote expired","status":400,"detail":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","instance":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","errors":[{"pointer":"#/accountDetails/clabe","detail":"This field is required."}],"required":["\u003cstring>"],"missing":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"1c6a120b-33cd-424e-a563-3c995f871b96":{"description":"`service-unavailable`: usually we could not reach our verification provider before the import, nothing was imported, and you can retry. If the retry returns a `400` `invalid-request` saying the share token was already used, the first import may have landed: contact us with the `organizationId`.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem details. Every v2 error uses this body with content type `application/problem+json`. `errors` is present only on `validation-error`. `required` and `missing` are present only on `registration-info-required`.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri","description":"`https://docs.etherfuse.com/ramp/v2/errors/` followed by the problem slug, for example `https://docs.etherfuse.com/ramp/v2/errors/quote-expired`. Switch on this value.","example":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi>"},"title":{"type":"string","description":"Short summary of the problem type.","example":"Quote expired","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","description":"The HTTP status code.","example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"Human-readable explanation of this occurrence. Do not parse it.","example":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"Unique identifier for this occurrence. Quote it to support.","example":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"errors":{"type":"array","description":"Present on `validation-error`. One entry per invalid field.","items":{"type":"object","required":["pointer","detail"],"properties":{"pointer":{"type":"string","description":"JSON Pointer to the field in the request, for example `#/accountDetails/clabe`.","example":"#/accountDetails/clabe","isRequired":true,"uniqueKey":"errors.items.[INDEX].pointer","typeLabel":"string"},"detail":{"type":"string","description":"What is wrong with the field.","example":"This field is required.","isRequired":true,"uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"},"required":{"type":"array","description":"Present on `registration-info-required`. Every registration field the route requires, as JSON Pointers into the request, for example `#/registrationInfo/taxId`.","items":{"type":"string","uniqueKey":"required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"required","typeLabel":"string[]"},"missing":{"type":"array","description":"Present on `registration-info-required`. The required fields you must still send, as JSON Pointers into the request.","items":{"type":"string","uniqueKey":"missing.items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"https://docs.etherfuse.com/ramp/v2/errors/quote-expired","title":"Quote expired","status":400,"detail":"quote 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b has expired or does not exist","instance":"tag:etherfuse.com,2026-08-28:R2-10120/0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d","errors":[{"pointer":"#/accountDetails/clabe","detail":"This field is required."}],"required":["\u003cstring>"],"missing":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"e2afb556-03f4-4063-920b-822ee6d2cce7":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header, with no `Bearer` prefix.","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"58ef8c25-fe99-4a3a-b3d6-63ae68d90d12":{"url":"https://api.sand.etherfuse.com","description":"Sandbox"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header, with no `Bearer` prefix.","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"API key sent in the Authorization header, with no `Bearer` prefix.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi-v2.json"},"subdomain":"etherfuse","siteName":"Etherfuse API","title":"Import a verified session - Etherfuse API","navMaps":{"firstHrefInVersion":{"v2 (beta)":{"href":"/v2/api-reference/kyc/import-a-verified-session","matchLevel":0},"v1 (legacy)":{"href":"/api-reference/kyc/import-a-verified-session","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T23:26:15.108Z","originalFileLocation":"v2/api-reference/kyc/import-a-verified-session.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Import a verification the customer already passed on the partner\u0026#x27;s own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn\u0026#x27;t transfer: KYC Sumsub Shared Token. Answers 200, not 202: the import is committed before the response, which carries the same requirements breakdown as GET /organization/{organizationId}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kycUpdated and read the requirements again: proofOfAddress and customerAgreement appear only when the customer reaches their stages. See Requirements unlock in stages. Only shareToken is accepted. The verification level and the customer\u0026#x27;s identity are ours to decide. The token is a credential; it is never logged and appears in no response. No country is sent: it is read from the shared verification and used to route the customer. The customer\u0026#x27;s registered userInfo.email is required and is set on the imported applicant. Nothing is trusted wholesale. Everything imported is re-checked against Etherfuse\u0026#x27;s own requirements, so a session approved in the partner\u0026#x27;s account is not automatically approved here. Importing again. If the customer\u0026#x27;s verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns 409.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Etherfuse API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Import a verified session - Etherfuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Import a verification the customer already passed on the partner\u0026#x27;s own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn\u0026#x27;t transfer: KYC Sumsub Shared Token. Answers 200, not 202: the import is committed before the response, which carries the same requirements breakdown as GET /organization/{organizationId}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kycUpdated and read the requirements again: proofOfAddress and customerAgreement appear only when the customer reaches their stages. See Requirements unlock in stages. Only shareToken is accepted. The verification level and the customer\u0026#x27;s identity are ours to decide. The token is a credential; it is never logged and appears in no response. No country is sent: it is read from the shared verification and used to route the customer. The customer\u0026#x27;s registered userInfo.email is required and is set on the imported applicant. Nothing is trusted wholesale. Everything imported is re-checked against Etherfuse\u0026#x27;s own requirements, so a session approved in the partner\u0026#x27;s account is not automatically approved here. Importing again. If the customer\u0026#x27;s verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns 409.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Etherfuse API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://etherfuse.mintlify.app/_mintlify/api/og/v2?division=KYC\u0026amp;title=Import+a+verified+session\u0026amp;description=Import+a+verification+the+customer+already+passed+on+the+partner%27s+own+Sumsub+level%2C+handed+over+as+a+share+token.+Prerequisites%2C+and+what+does+and+doesn%27t+tran\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=c04912c07ccf02f7b93c4418efc7d955cccea1194859c7747481ed0bd74ff456\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Import a verified session - Etherfuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Import a verification the customer already passed on the partner\u0026#x27;s own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn\u0026#x27;t transfer: KYC Sumsub Shared Token. Answers 200, not 202: the import is committed before the response, which carries the same requirements breakdown as GET /organization/{organizationId}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kycUpdated and read the requirements again: proofOfAddress and customerAgreement appear only when the customer reaches their stages. See Requirements unlock in stages. Only shareToken is accepted. The verification level and the customer\u0026#x27;s identity are ours to decide. The token is a credential; it is never logged and appears in no response. No country is sent: it is read from the shared verification and used to route the customer. The customer\u0026#x27;s registered userInfo.email is required and is set on the imported applicant. Nothing is trusted wholesale. Everything imported is re-checked against Etherfuse\u0026#x27;s own requirements, so a session approved in the partner\u0026#x27;s account is not automatically approved here. Importing again. If the customer\u0026#x27;s verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns 409.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://etherfuse.mintlify.app/_mintlify/api/og/v2?division=KYC\u0026amp;title=Import+a+verified+session\u0026amp;description=Import+a+verification+the+customer+already+passed+on+the+partner%27s+own+Sumsub+level%2C+handed+over+as+a+share+token.+Prerequisites%2C+and+what+does+and+doesn%27t+tran\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=c04912c07ccf02f7b93c4418efc7d955cccea1194859c7747481ed0bd74ff456\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Etherfuse API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#141414\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/api-reference/kyc/import-a-verified-session.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.etherfuse.com/#organization\",\"name\":\"Etherfuse API\",\"url\":\"https://docs.etherfuse.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/etherfuse/XRSchVFGUgreQatD/img/logo-black.svg?fit=max\u0026auto=format\u0026n=XRSchVFGUgreQatD\u0026q=85\u0026s=92cf84eca27df4a19f7b032da398d110\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.etherfuse.com#website\",\"name\":\"Etherfuse API\",\"url\":\"https://docs.etherfuse.com\",\"publisher\":{\"@id\":\"https://docs.etherfuse.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session#webpage\",\"url\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session\",\"name\":\"Import a verified session\",\"description\":\"Import a verification the customer already passed on the partner's own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn't transfer: KYC Sumsub Shared Token. Answers 200, not 202: the import is committed before the response, which carries the same requirements breakdown as GET /organization/{organizationId}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kycUpdated and read the requirements again: proofOfAddress and customerAgreement appear only when the customer reaches their stages. See Requirements unlock in stages. Only shareToken is accepted. The verification level and the customer's identity are ours to decide. The token is a credential; it is never logged and appears in no response. No country is sent: it is read from the shared verification and used to route the customer. The customer's registered userInfo.email is required and is set on the imported applicant. Nothing is trusted wholesale. Everything imported is re-checked against Etherfuse's own requirements, so a session approved in the partner's account is not automatically approved here. Importing again. If the customer's verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns 409.\",\"dateModified\":\"2026-10-28T23:26:15.108Z\",\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"KYC\",\"item\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Import a verified session\",\"item\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session#apireference\",\"headline\":\"Import a verified session\",\"name\":\"Import a verified session\",\"description\":\"Import a verification the customer already passed on the partner's own Sumsub level, handed over as a share token. Prerequisites, and what does and doesn't transfer: KYC Sumsub Shared Token. Answers 200, not 202: the import is committed before the response, which carries the same requirements breakdown as GET /organization/{organizationId}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kycUpdated and read the requirements again: proofOfAddress and customerAgreement appear only when the customer reaches their stages. See Requirements unlock in stages. Only shareToken is accepted. The verification level and the customer's identity are ours to decide. The token is a credential; it is never logged and appears in no response. No country is sent: it is read from the shared verification and used to route the customer. The customer's registered userInfo.email is required and is set on the imported applicant. Nothing is trusted wholesale. Everything imported is re-checked against Etherfuse's own requirements, so a session approved in the partner's account is not automatically approved here. Importing again. If the customer's verification has not reached review, a new import replaces it, for example after an earlier import left documents missing. Once the customer is approved, denied, or in review, the import returns 409.\",\"url\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session\",\"mainEntityOfPage\":{\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/import-a-verified-session#webpage\"},\"dateModified\":\"2026-10-28T23:26:15.108Z\",\"publisher\":{\"@id\":\"https://docs.etherfuse.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Etherfuse API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Etherfuse API","nav":{"global":null,"versions":[{"version":"v2 (beta)","default":true,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/v2"}]},{"tab":"API Reference","pages":[{"title":"Introduction","href":"/v2/api-reference/introduction"},{"title":"API Authentication","href":"/v2/authentication"},{"title":"Errors","href":"/v2/errors"},{"title":"Pagination","href":"/v2/pagination"},{"title":"Idempotency","href":"/v2/idempotency"},{"group":"User Authentication","icon":"key","pages":[{"openapi":"openapi-v2.json POST /auth/launch","title":"Launch a user into the app","href":"/v2/api-reference/authentication/launch-a-user-into-the-app"},{"openapi":"openapi-v2.json GET /auth/launch","title":"Launch a user via postMessage","href":"/v2/api-reference/authentication/launch-a-user-via-postmessage"},{"title":"Exchange a partner JWT","openapi":"openapi-v2.json POST /auth/token","href":"/v2/api-reference/authentication/exchange-a-partner-jwt"}]},{"group":"Payment Accounts","icon":"building-columns","pages":[{"title":"Register payment account","openapi":"openapi-v2.json POST /organization/{organizationId}/payment_account","href":"/v2/api-reference/payment-accounts/register-payment-account"},{"title":"Get registration requirements","openapi":"openapi-v2.json GET /organization/{organizationId}/payment_account/requirements","href":"/v2/api-reference/payment-accounts/get-registration-requirements"},{"title":"Get payment account","openapi":"openapi-v2.json GET /organization/{organizationId}/payment_account/{id}","href":"/v2/api-reference/payment-accounts/get-payment-account"},{"title":"Update payment account","openapi":"openapi-v2.json PATCH /organization/{organizationId}/payment_account/{id}","href":"/v2/api-reference/payment-accounts/update-payment-account"},{"title":"List payment accounts","openapi":"openapi-v2.json GET /organization/{organizationId}/payment_accounts","href":"/v2/api-reference/payment-accounts/list-payment-accounts"}]},{"group":"Quotes","icon":"tag","pages":[{"title":"Create quote","openapi":"openapi-v2.json POST /organization/{organizationId}/quote","href":"/v2/api-reference/quotes/create-quote"}]},{"group":"Orders","icon":"receipt","pages":[{"title":"Create order","openapi":"openapi-v2.json POST /organization/{organizationId}/order","href":"/v2/api-reference/orders/create-order"},{"title":"Get order","openapi":"openapi-v2.json GET /organization/{organizationId}/order/{id}","href":"/v2/api-reference/orders/get-order"},{"title":"List orders","openapi":"openapi-v2.json GET /orders","href":"/v2/api-reference/orders/list-orders"},{"title":"Cancel order","openapi":"openapi-v2.json POST /organization/{organizationId}/order/{id}/cancel","href":"/v2/api-reference/orders/cancel-order"},{"title":"Refresh funding instructions","openapi":"openapi-v2.json POST /organization/{organizationId}/order/{id}/funding_instructions/refresh","href":"/v2/api-reference/orders/refresh-funding-instructions"},{"title":"Prepare claim","openapi":"openapi-v2.json POST /organization/{organizationId}/order/{id}/claim","href":"/v2/api-reference/orders/prepare-claim"},{"title":"Submit authorization","openapi":"openapi-v2.json POST /organization/{organizationId}/order/{id}/authorization","href":"/v2/api-reference/orders/submit-authorization"}]},{"group":"Webhook Subscriptions","icon":"bell","pages":[{"title":"Create webhook subscription","openapi":"openapi-v2.json POST /webhook_subscription","href":"/v2/api-reference/webhook-subscriptions/create-webhook-subscription"},{"title":"Get webhook subscription","openapi":"openapi-v2.json GET /webhook_subscription/{id}","href":"/v2/api-reference/webhook-subscriptions/get-webhook-subscription"},{"title":"Delete webhook subscription","openapi":"openapi-v2.json DELETE /webhook_subscription/{id}","href":"/v2/api-reference/webhook-subscriptions/delete-webhook-subscription"},{"title":"List webhook subscriptions","openapi":"openapi-v2.json GET /webhook_subscriptions","href":"/v2/api-reference/webhook-subscriptions/list-webhook-subscriptions"}]},{"group":"Webhook Events","icon":"tower-broadcast","pages":[{"title":"orderUpdated","openapi":"openapi-v2.json webhook orderUpdated","href":"/v2/api-reference/webhook-events/orderupdated"},{"title":"paymentAccountUpdated","openapi":"openapi-v2.json webhook paymentAccountUpdated","href":"/v2/api-reference/webhook-events/paymentaccountupdated"},{"title":"kycUpdated","openapi":"openapi-v2.json webhook kycUpdated","href":"/v2/api-reference/webhooks/kycupdated"},{"title":"kybUpdated","openapi":"openapi-v2.json webhook kybUpdated","href":"/v2/api-reference/webhook-events/kybupdated"}]},{"group":"Organizations","icon":"building","pages":[{"title":"Get your organization","openapi":"openapi-v2.json GET /me","href":"/v2/api-reference/organizations/get-me"},{"title":"Set your default partner fee","openapi":"openapi-v2.json PATCH /me","href":"/v2/api-reference/organizations/update-me"},{"title":"List customer organizations","openapi":"openapi-v2.json GET /organizations","href":"/v2/api-reference/organizations/list-organizations"},{"title":"Create customer organization","openapi":"openapi-v2.json POST /organization","href":"/v2/api-reference/organizations/create-organization"},{"title":"Get organization","openapi":"openapi-v2.json GET /organization/{organizationId}","href":"/v2/api-reference/organizations/get-organization"},{"title":"Rename organization","openapi":"openapi-v2.json PATCH /organization/{organizationId}","href":"/v2/api-reference/organizations/update-organization"}]},{"group":"Members","icon":"users","pages":[{"title":"Add organization member","openapi":"openapi-v2.json POST /organization/{organizationId}/member","href":"/v2/api-reference/members/add-organization-member"},{"title":"List organization members","openapi":"openapi-v2.json GET /organization/{organizationId}/members","href":"/v2/api-reference/members/list-organization-members"},{"title":"Remove organization member","openapi":"openapi-v2.json DELETE /organization/{organizationId}/member/{memberId}","href":"/v2/api-reference/members/remove-organization-member"},{"title":"Revoke organization invite","openapi":"openapi-v2.json DELETE /organization/{organizationId}/member_invite/{email}","href":"/v2/api-reference/members/revoke-organization-invite"},{"title":"List a member's organizations","openapi":"openapi-v2.json GET /member/{memberId}/organizations","href":"/v2/api-reference/members/list-member-organizations"}]},{"group":"KYC","icon":"id-card","pages":[{"title":"Get KYC status","openapi":"openapi-v2.json GET /organization/{organizationId}/kyc","href":"/v2/api-reference/kyc/get-kyc-status"},{"title":"Submit verification data","openapi":"openapi-v2.json POST /organization/{organizationId}/verification","href":"/v2/api-reference/kyc/submit-verification-data"},{"title":"Upload verification documents","openapi":"openapi-v2.json POST /organization/{organizationId}/verification/documents","href":"/v2/api-reference/kyc/upload-verification-documents"},{"title":"Submit a verification questionnaire","openapi":"openapi-v2.json POST /organization/{organizationId}/verification/questionnaire","description":"Submit the customer's answers to one questionnaire, named by `type`.\n\n| `type` | Answers | Applies to |\n|---|---|---|\n| `occupation` | `jobTitle`, `industry` | Every customer |\n| `agreement` | `acceptTerms`, `signatureName`, `signatureDate` | Customers who accepted under your terms |\n\nDocuments are uploaded through [`POST /organization/{organizationId}/verification/documents`](/v2/api-reference/kyc/upload-verification-documents).\n\n**`agreement` is a legal declaration, affirmed by `acceptTerms: true`.** By default the customer accepts the agreement themselves in `/idv`. Send `agreement` only if your own terms incorporate ours and you already collected their acceptance. [The customer agreement](/v2/guides/kyc-api#the-customer-agreement) sets out what you are declaring.\n\n**Submit the customer's personal data first**, or this answers `409`. As with document upload, the stage that asks these questions doesn't exist on the customer until then.\n\n**Send `agreement` only once `customerAgreement` is in the requirements list.** It belongs to the last stage, after the identity stage and any proof of address, so do not send it together with `occupation`. An early `agreement` answers `202`, then is refused in the background, and a `kycUpdated` webhook arrives with `needsWork: true`. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n**Answers `202`, not `200`.** `industry` is resolved against the live category list in the background, so an unrecognized value doesn't fail the request: it leaves the occupation requirement outstanding.","href":"/v2/api-reference/kyc/submit-a-verification-questionnaire"},{"title":"Import a verified session","openapi":"openapi-v2.json POST /organization/{organizationId}/verification/import","href":"/v2/api-reference/kyc/import-a-verified-session"},{"title":"List occupation categories","openapi":"openapi-v2.json GET /verification/occupations","description":"The values [`POST /organization/{organizationId}/verification/questionnaire`](/v2/api-reference/kyc/submit-a-verification-questionnaire) accepts for `industry`. Send the `code`.\n\nThe codes are opaque, so this is the only way to know them. We read them live from the same definition the submission validates against, so the two always agree.","href":"/v2/api-reference/kyc/list-occupation-categories"}]},{"group":"KYB","icon":"briefcase","pages":[{"title":"Get KYB status","openapi":"openapi-v2.json GET /organization/{organizationId}/kyb","href":"/v2/api-reference/kyb/get-kyb-status"}]},{"group":"Assets","icon":"coins","pages":[{"title":"List supported assets","openapi":"openapi-v2.json GET /supported_assets","href":"/v2/api-reference/assets/list-supported-assets"},{"title":"Get payment account balances","openapi":"openapi-v2.json GET /organization/{organizationId}/payment_account/{id}/balances","href":"/v2/api-reference/assets/get-payment-account-balances"}]},{"group":"Statements","icon":"file-invoice-dollar","pages":[{"title":"List partner statements","openapi":"openapi-v2.json GET /partner_statements","href":"/v2/api-reference/statements/list-partner-statements"},{"title":"Download statement CSV","openapi":"openapi-v2.json GET /partner_statement/{year}-{month}/csv","href":"/v2/api-reference/statements/download-statement-csv"},{"title":"Download statement PDF","openapi":"openapi-v2.json GET /partner_statement/{year}-{month}/pdf","href":"/v2/api-reference/statements/download-statement-pdf"}]},{"group":"Sandbox","icon":"flask","pages":[{"title":"Simulate fiat received","openapi":"openapi-v2.json POST /organization/{organizationId}/order/{id}/fiat_received","href":"/v2/api-reference/sandbox/simulate-fiat-received"}]},{"group":"Lookup API","icon":"magnifying-glass","pages":[{"title":"List exchange rates","openapi":"openapi-v2.json GET /lookup/exchange_rate","href":"/v2/api-reference/lookup/list-exchange-rates"},{"title":"Get exchange rate","openapi":"openapi-v2.json GET /lookup/exchange_rate/usd_to_{currency}","href":"/v2/api-reference/lookup/get-exchange-rate"},{"title":"List stablebonds","openapi":"openapi-v2.json GET /lookup/stablebonds","href":"/v2/api-reference/lookup/list-stablebonds"},{"title":"Get stablebond","openapi":"openapi-v2.json GET /lookup/stablebond/{identifier}","href":"/v2/api-reference/lookup/get-stablebond"},{"title":"List token costs","openapi":"openapi-v2.json GET /lookup/tokens/cost","href":"/v2/api-reference/lookup/list-token-costs"},{"title":"Get token cost","openapi":"openapi-v2.json GET /lookup/tokens/cost/{identifier}","href":"/v2/api-reference/lookup/get-token-cost"},{"title":"List country codes","openapi":"openapi-v2.json GET /lookup/country-codes","href":"/v2/api-reference/lookup/list-country-codes"},{"title":"List restricted countries","openapi":"openapi-v2.json GET /lookup/restricted-countries","href":"/v2/api-reference/lookup/list-restricted-countries"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},{"version":"v1 (legacy)","pages":[{"title":"v1 (legacy)","href":"/api-reference/kyc/import-a-verified-session"}]}]},"basePath":"","title":"Import a verified session - Etherfuse API","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}