The verification session could not be imported: share token has expired
This customer's verification is approved, denied, or in review; a new session cannot replace it
<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 kyc_updated and read the requirements again: proof_of_address and customer_agreement 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 customer (child org) ID. Must belong to the caller's organization or a direct child.
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 /ramp/customer/{customer_id}/kyc?requirements=true instead.
What is still outstanding after the import: the same breakdown GET /ramp/customer/{customer_id}/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":"6aeb8162facd9ad474429494","collectionId":"dd2a2329-87a0-4f80-8d74-c86f460a61d1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb8162facd9ad474429494"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aed0270f4f76f7f720c87e8","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":152},{"language":"default","tag":"Ramp API","count":72},{"language":"default","tag":"Guides","count":64},{"language":"default","tag":"KYC","count":20},{"language":"default","tag":"Lookup API","count":19},{"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":11}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"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:0.75rem;border:1px solid #141414;background-color:#e4ff3f;color:#141414!important;text-decoration:none;transition:background-color 0.15s ease, box-shadow 0.15s ease}.sandbox-playground-cta:hover{background-color:#d8f32f;box-shadow:0 2px 8px rgba(20, 20, 20, 0.12);color:#141414!important}.sandbox-playground-cta__title,.sandbox-playground-cta__body,.sandbox-playground-cta__detail{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:0.35rem}.sandbox-playground-cta__body{display:block;font-size:0.95rem;line-height:1.45;font-weight:500}.sandbox-playground-cta__detail{display:block;margin-top:0.35rem;font-size:0.85rem;line-height:1.45;opacity:0.85}"}],"page":{"pagePath":"api-reference/kyc/import-a-verified-session","slug":"/api-reference/kyc/import-a-verified-session","pageMetadata":{"title":"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](/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 /ramp/customer/{customer_id}/kyc?requirements=true`](/api-reference/kyc/get-kyc-status).\n\nThat breakdown covers the identity stage only. Send what it lists, then wait for `kyc_updated` and read the requirements again: `proof_of_address` and `customer_agreement` appear only when the customer reaches their stages. See [Requirements unlock in stages](/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`.","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/import","href":"/api-reference/kyc/import-a-verified-session","autogeneratedByOpenApi":true},"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: \"/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: \"/api-reference/kyc/get-kyc-status\",\n children: _jsx(_components.code, {\n children: \"GET /ramp/customer/{customer_id}/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: \"kyc_updated\"\n }), \" and read the requirements again: \", _jsx(_components.code, {\n children: \"proof_of_address\"\n }), \" and \", _jsx(_components.code, {\n children: \"customer_agreement\"\n }), \" appear only when the customer reaches their stages. See \", _jsx(_components.a, {\n href: \"/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","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](/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 /ramp/customer/{customer_id}/kyc?requirements=true`](/api-reference/kyc/get-kyc-status).\n\nThat breakdown covers the identity stage only. Send what it lists, then wait for `kyc_updated` and read the requirements again: `proof_of_address` and `customer_agreement` appear only when the customer reaches their stages. See [Requirements unlock in stages](/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`.","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/import","href":"/api-reference/kyc/import-a-verified-session","autogeneratedByOpenApi":true}}},"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](/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 /ramp/customer/{customer_id}/kyc?requirements=true`](/api-reference/kyc/get-kyc-status).\n\nThat breakdown covers the identity stage only. Send what it lists, then wait for `kyc_updated` and read the requirements again: `proof_of_address` and `customer_agreement` appear only when the customer reaches their stages. See [Requirements unlock in stages](/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":"import_verification","parameters":["62be5e3d-98ce-40a6-951d-5bf2ab149364"],"requestBody":"69e8f263-9648-42e0-986c-49e28aced49a","responses":{"200":"e90a3dbc-2e0e-465b-8570-622b4e13d43a","400":"207eb674-58ad-4716-91f8-88d7236af33c","404":"4f4bc86c-cc2b-4ec3-9f7f-62d23322c800","409":"ddf5e4da-ee05-4bc9-aa96-ec2c2b3e9a4c","502":"fa358319-f814-46a2-8758-1e33cc80125d"},"method":"post","type":"path","servers":["dfcc036b-8292-4b23-b2e0-6d8e5bbce57d"],"security":["377cbe46-22bb-44bd-bda8-4347354be712"],"path":"/ramp/customer/{customer_id}/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":{"62be5e3d-98ce-40a6-951d-5bf2ab149364":{"name":"customer_id","in":"path","description":"The customer (child org) ID. Must belong to the caller's organization or a direct child.","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"The customer (child org) ID. Must belong to the caller's organization or a direct child.","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](/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](/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":{"e90a3dbc-2e0e-465b-8570-622b4e13d43a":{"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 /ramp/customer/{customer_id}/kyc?requirements=true` instead.","content":{"application/json":{"schema":{"type":"object","description":"The outcome of importing a verification session.","required":["customerId","status"],"properties":{"customerId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"customerId","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["not_started","in_progress","submitted","approved","denied"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"requirements":{"type":"array","description":"What is still outstanding after the import: the same breakdown `GET /ramp/customer/{customer_id}/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. `personal_data`: name, date of birth, tax ID, country and address; Mexico also requires CURP\n2. `identity_document`: a government-issued ID\n3. `proof_of_address`: an address document; appears only when the identity document carried no address\n4. `occupation`: job title and occupation category\n5. `selfie`: a live face capture; cannot be uploaded\n6. `customer_agreement`: the customer accepting the required agreements\n\nWe reserve the right to add requirements, and will update these docs when we do. A country may also introduce one of its own; see [Country-specific requirements](/guides/onboarding#country-specific-requirements).","enum":["personal_data","identity_document","proof_of_address","occupation","email_confirmation","selfie","customer_agreement"],"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- `awaiting_review`: provided, not yet reviewed\n- `action_required`: **reviewed and rejected**, so it must be provided again, corrected\n\n`pending` and `awaiting_review` are the distinction that matters: a shared verification whose identity document and selfie transferred reads `awaiting_review` for both, so do not read `pending` into it and re-send. Treat this as an **open set**: more values may be added, so key your logic off the two that carry an instruction (`satisfied` means done, `action_required` means re-send) and treat anything else as in flight.","enum":["satisfied","pending","awaiting_review","action_required"],"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":"identity_document","status":"pending","requiresLaunch":false},"uniqueKey":"requirements.items.[INDEX]","typeLabel":"object"},"uniqueKey":"requirements","typeLabel":"object[]"}},"example":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"in_progress","requirements":[{"type":"personal_data","status":"satisfied","requiresLaunch":false},{"type":"identity_document","status":"satisfied","requiresLaunch":false},{"type":"occupation","status":"pending","requiresLaunch":false},{"type":"selfie","status":"satisfied","requiresLaunch":true},{"type":"customer_agreement","status":"pending","requiresLaunch":false}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"in_progress","requirements":[{"type":"personal_data","status":"satisfied","requiresLaunch":false},{"type":"identity_document","status":"satisfied","requiresLaunch":false},{"type":"occupation","status":"pending","requiresLaunch":false},{"type":"selfie","status":"satisfied","requiresLaunch":true},{"type":"customer_agreement","status":"pending","requiresLaunch":false}]}}},"exampleType":"generated"}},"exampleType":"generated"},"207eb674-58ad-4716-91f8-88d7236af33c":{"description":"The message carries the detail. 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 customer is a business account.","content":{"text/plain":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"example":"The verification session could not be imported: share token has expired","examples":{"Example":{"title":"Example","value":"The verification session could not be imported: share token has expired"}},"exampleType":"examples"}},"exampleType":"examples"},"4f4bc86c-cc2b-4ec3-9f7f-62d23322c800":{"description":"No organization exists with that `customer_id`, or it is not a customer of your organization.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"ddf5e4da-ee05-4bc9-aa96-ec2c2b3e9a4c":{"description":"Any of: 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":{"text/plain":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"example":"This customer's verification is approved, denied, or in review; a new session cannot replace it","examples":{"Example":{"title":"Example","value":"This customer's verification is approved, denied, or in review; a new session cannot replace it"}},"exampleType":"examples"}},"exampleType":"examples"},"fa358319-f814-46a2-8758-1e33cc80125d":{"description":"Usually we could not reach our verification provider before the import, nothing was imported, and you can retry. If the retry returns a `400` saying the share token was already used, the first import may have landed: contact us with the `customer_id`.","content":{"text/plain":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"\u003cstring>"}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"377cbe46-22bb-44bd-bda8-4347354be712":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header.","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"dfcc036b-8292-4b23-b2e0-6d8e5bbce57d":{"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.","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"API key sent in the Authorization header.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.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":1},"v1 (legacy)":{"href":"/api-reference/kyc/import-a-verified-session","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T19:03:06.258Z","originalFileLocation":"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 /ramp/customer/{customer_id}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kyc_updated and read the requirements again: proof_of_address and customer_agreement 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 /ramp/customer/{customer_id}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kyc_updated and read the requirements again: proof_of_address and customer_agreement 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/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.site/_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 /ramp/customer/{customer_id}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kyc_updated and read the requirements again: proof_of_address and customer_agreement 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.site/_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/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=\"/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/api-reference/kyc/import-a-verified-session#webpage\",\"url\":\"https://docs.etherfuse.com/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 /ramp/customer/{customer_id}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kyc_updated and read the requirements again: proof_of_address and customer_agreement 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-11-04T19:03:06.258Z\",\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/import-a-verified-session#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/import-a-verified-session#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ramp API\",\"item\":\"https://docs.etherfuse.com/api-reference/assets/list-assets\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KYC\",\"item\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Import a verified session\",\"item\":\"https://docs.etherfuse.com/api-reference/kyc/import-a-verified-session\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.etherfuse.com/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 /ramp/customer/{customer_id}/kyc?requirements=true. That breakdown covers the identity stage only. Send what it lists, then wait for kyc_updated and read the requirements again: proof_of_address and customer_agreement 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/api-reference/kyc/import-a-verified-session\",\"mainEntityOfPage\":{\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/import-a-verified-session#webpage\"},\"dateModified\":\"2026-11-04T19:03:06.258Z\",\"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,"pages":[{"title":"v2 (beta)","href":"/v2/api-reference/kyc/import-a-verified-session"}]},{"version":"v1 (legacy)","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"API Authentication","href":"/authentication"},{"title":"Errors","href":"/errors"},{"title":"Pagination","href":"/pagination"},{"title":"Idempotency","href":"/idempotency"},{"group":"User Authentication","icon":"key","pages":[{"openapi":"openapi.json POST /auth/launch","title":"Launch a user into the app","href":"/api-reference/authentication/launch-a-user-into-the-app"},{"openapi":"openapi.json GET /auth/launch","title":"Launch a user via postMessage","href":"/api-reference/launch-via-postmessage"},{"title":"Exchange a partner JWT","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/token","href":"/api-reference/authentication/exchange-a-partner-jwt"}]},{"group":"Ramp API","icon":"money-bill-transfer","pages":[{"group":"Assets","icon":"coins","pages":[{"title":"List assets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/assets","href":"/api-reference/assets/list-assets"},{"title":"Get one wallet's balances","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/balances","href":"/api-reference/assets/get-one-wallets-balances"}]},{"group":"Bank Accounts","icon":"building-columns","pages":[{"title":"Create bank account (presigned)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-account","href":"/api-reference/bank-accounts/create-bank-account-presigned"},{"title":"Get bank account","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-account/{bank_account_id}","href":"/api-reference/bank-accounts/get-bank-account"},{"title":"List bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-accounts","href":"/api-reference/bank-accounts/list-bank-accounts"},{"title":"Search bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-accounts","href":"/api-reference/bank-accounts/search-bank-accounts"},{"title":"Create bank account (API)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-account","href":"/api-reference/bank-accounts/create-bank-account-api"},{"title":"List customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/list-customer-accounts"},{"title":"Search customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/search-customer-accounts"}]},{"group":"Quotes","icon":"tag","pages":[{"title":"Get quote","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/quote","href":"/api-reference/quotes/get-quote"}]},{"group":"Orders","icon":"receipt","pages":[{"title":"Create order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order","href":"/api-reference/orders/create-order"},{"title":"Get order","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}","href":"/api-reference/orders/get-order"},{"title":"Cancel order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/cancel","href":"/api-reference/orders/cancel-order"},{"title":"Regenerate tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/regenerate_tx","href":"/api-reference/orders/regenerate-tx"},{"title":"Get order approval","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}/approvals","href":"/api-reference/orders/get-order-approval"},{"title":"Submit order approval","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/approvals","href":"/api-reference/orders/submit-order-approval"},{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/orders","href":"/api-reference/orders/list-orders"},{"title":"Search orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/orders","href":"/api-reference/orders/search-orders"},{"title":"List customer orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/list-customer-orders"},{"title":"Search customer orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/search-customer-orders"}]},{"group":"Statements","icon":"file-invoice-dollar","pages":[{"title":"List partner statements","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements","href":"/api-reference/statements/list-partner-statements"},{"title":"Download statement CSV","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/csv","href":"/api-reference/statements/download-statement-csv"},{"title":"Download statement PDF","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/pdf","href":"/api-reference/statements/download-statement-pdf"}]},{"group":"WebSocket","icon":"plug","pages":[{"title":"Mint WebSocket token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/ws-api-token","href":"/api-reference/websocket/mint-websocket-token"},{"title":"Connect to the live update stream","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/ws","href":"/api-reference/websocket/connect-to-the-live-update-stream"}]},{"group":"Swaps","icon":"right-left","pages":[{"title":"Swap assets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap","href":"/api-reference/swaps/swap-assets"},{"title":"Regenerate swap tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap/{order_id}/regenerate_tx","href":"/api-reference/swaps/regenerate-swap-tx"}]},{"group":"Sponsored","icon":"hand-holding-dollar","pages":[{"title":"Approve EVM token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/evm/approve","href":"/api-reference/sponsored/approve-evm-token"}]},{"group":"Customers","icon":"users","pages":[{"title":"Search customers","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customers","href":"/api-reference/customers/search-customers"},{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customers","href":"/api-reference/customers/list-customers"},{"title":"Get customer","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}","href":"/api-reference/customers/get-customer"},{"title":"List a customer's organizations","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/organization","href":"/api-reference/customers/list-a-customers-organizations"}]},{"group":"Wallets","icon":"wallet","pages":[{"title":"Register wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallet","href":"/api-reference/wallets/register-wallet"},{"title":"Get wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Delete wallet","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/delete-wallet"},{"title":"List wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Search wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallets","href":"/api-reference/wallets/search-wallets"},{"title":"Register customer wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallet","href":"/api-reference/wallets/register-customer-wallet"},{"title":"List customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/list-customer-wallets"},{"title":"Search customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/search-customer-wallets"}]},{"group":"KYC","icon":"id-card","pages":[{"title":"Get KYC status","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/kyc","href":"/api-reference/kyc/get-kyc-status"},{"title":"Submit verification data","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification","href":"/api-reference/kyc/submit-verification-data"},{"title":"Upload verification documents","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/documents","href":"/api-reference/kyc/upload-verification-documents"},{"title":"Submit a 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 /ramp/customer/{customer_id}/verification/documents`](/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](/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 `customer_agreement` 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 `kyc_updated` webhook arrives with `needsWork: true`. See [Requirements unlock in stages](/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.","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/questionnaire","href":"/api-reference/kyc/submit-a-verification-questionnaire"},{"title":"Import a verified session","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/import","href":"/api-reference/kyc/import-a-verified-session"},{"title":"List occupation categories","description":"The values [`POST /ramp/customer/{customer_id}/verification/questionnaire`](/api-reference/kyc/submit-a-verification-questionnaire) accepts for `industry`. Either the `code` or the `label` is submittable.\n\nThe codes are opaque, so this is the only way to know them. Read live from the same definition the submission validates against, so the two cannot disagree.","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/verification/occupations","href":"/api-reference/kyc/list-occupation-categories"}]},{"group":"Webhooks","icon":"bell","pages":[{"title":"Create webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/webhook","href":"/api-reference/webhooks/create-webhook"},{"title":"Get webhook","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/webhook/{webhook_id}","href":"/api-reference/webhooks/get-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/webhook/{webhook_id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/webhooks","href":"/api-reference/webhooks/list-webhooks"}]},{"group":"Webhook Events","icon":"tower-broadcast","pages":[{"title":"Order updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook orderUpdated","href":"/api-reference/webhooks/order_updated"},{"title":"Swap updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook swapUpdated","href":"/api-reference/webhooks/swap_updated"},{"title":"Customer updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook customerUpdated","href":"/api-reference/webhooks/customer_updated"},{"title":"Bank account updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook bankAccountUpdated","href":"/api-reference/webhooks/bank_account_updated"},{"title":"Kyc updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook kycUpdated","href":"/api-reference/webhooks/kyc_updated"},{"title":"Kyb updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook kybUpdated","href":"/api-reference/webhooks/kyb_updated"}]},{"group":"Organizations","icon":"building","pages":[{"title":"Verify API key","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp","href":"/api-reference/organizations/verify-api-key"},{"title":"Get organization","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/me","href":"/api-reference/organizations/get-organization"},{"title":"Create child org","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/organization","href":"/api-reference/organizations/create-child-org"},{"title":"Add organization member","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/organization/{id}/member","href":"/api-reference/organizations/add-organization-member"},{"title":"List organization members","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/organization/{id}/member","href":"/api-reference/organizations/list-organization-members"},{"title":"Remove organization member","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/organization/{id}/member/{customer_id}","href":"/api-reference/organizations/remove-organization-member"},{"title":"Revoke organization invite","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/organization/{id}/member/invite/{email}","href":"/api-reference/organizations/revoke-organization-invite"},{"title":"Get KYB status","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/organization/{id}/kyb/status","href":"/api-reference/organizations/get-kyb-status"},{"title":"Rename organization","deprecated":null,"version":null,"openapi":"/openapi.json put /ramp/organization/{org_id}/name","href":"/api-reference/organizations/rename-organization"},{"title":"Set partner fee","deprecated":null,"version":null,"openapi":"/openapi.json put /ramp/partner-fee","href":"/api-reference/organizations/set-partner-fee"}]},{"group":"Sandbox API","icon":"flask","pages":[{"title":"Simulate Fiat Received","api":"POST https://api.sand.etherfuse.com/ramp/order/fiat_received","href":"/sandbox-api/fiat-received"}]},{"group":"Deprecated","icon":"ban","pages":[{"title":"Generate onboarding URL","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/onboarding-url","href":"/api-reference/deprecated/generate-onboarding-url"},{"title":"Get onboarding bank accounts","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/onboarding/bank-accounts","href":"/api-reference/deprecated/get-onboarding-bank-accounts"},{"title":"Submit KYC","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/kyc","href":"/api-reference/deprecated/submit-kyc"},{"title":"Upload KYC docs","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/kyc/documents","href":"/api-reference/deprecated/upload-kyc-docs"},{"title":"Get KYB progress","deprecated":true,"version":null,"openapi":"/openapi.json get /ramp/organization/{id}/kyb/progress","href":"/api-reference/deprecated/get-kyb-progress"}]}]},{"group":"Lookup API","icon":"magnifying-glass","pages":[{"title":"List exchange rates","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/exchange_rate","href":"/api-reference/lookup/list-exchange-rates"},{"title":"Get exchange rate","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/exchange_rate/usd_to_{currency}","href":"/api-reference/lookup/get-exchange-rate"},{"title":"List stablebonds","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/stablebonds","href":"/api-reference/lookup/list-stablebonds"},{"title":"Get stablebond","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/stablebond/{identifier}","href":"/api-reference/lookup/get-stablebond"},{"title":"List token costs","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/tokens/cost","href":"/api-reference/lookup/list-token-costs"},{"title":"Get token cost","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/tokens/cost/{identifier}","href":"/api-reference/lookup/get-token-cost"},{"title":"List stablebond costs","deprecated":true,"version":null,"openapi":"/openapi.json get /lookup/bonds/cost","href":"/api-reference/lookup/list-stablebond-costs"},{"title":"Get stablebond cost","deprecated":true,"version":null,"openapi":"/openapi.json get /lookup/bonds/cost/{identifier}","href":"/api-reference/lookup/get-stablebond-cost"},{"title":"List country codes","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/country-codes","href":"/api-reference/lookup/list-country-codes"},{"title":"List restricted countries","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/restricted-countries","href":"/api-reference/lookup/list-restricted-countries"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]}]},"basePath":"","title":"Import a verified session - Etherfuse API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}