{
"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
Get KYC status
Returns the organization’s KYC status. The overall status uses the same logic as orders, so approved is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data.
The requirements breakdown
Pass ?requirements=true to add a requirements array describing, step by step, what this customer’s verification still needs. Each entry carries a type, a status, and a requiresLaunch flag, which separates “I still owe data over the API” from “it is time to launch the customer”. It is opt-in because it calls the verification provider; without it the response leaves requirements out.
The breakdown covers personal verification only. Requesting it for a business organization returns 400invalid-request; track a business with GET /organization/{organizationId}/kyb instead.
requirements is left out until the customer has been routed to their country’s requirements. After that the list holds the customer’s current stage, plus requirements already satisfied. It never lists a later stage’s requirements, so it grows as they advance: proofOfAddress appears only when the identity document carried no address, and customerAgreement appears last. Send only what is listed as pending or actionRequired; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every kycUpdated; no single response is the full list. See Requirements unlock in stages.
Prefer the webhook
Subscribe to kycUpdated to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With ?requirements=true it calls the verification provider every time, so do not poll it tightly. See Tracking verification status.
GET
/
organization
/
{organizationId}
/
kyc
Get KYC status
curl --request GET \ --url https://api.sand.etherfuse.com/organization/{organizationId}/kyc \ --header 'Authorization: <api-key>'
What the customer's verification still needs, step by step. Present only with ?requirements=true, and only once the customer has been routed to their country's requirements.
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/get-kyc-status","slug":"/v2/api-reference/kyc/get-kyc-status","pageMetadata":{"title":"Get KYC status","openapi":"openapi-v2.json GET /organization/{organizationId}/kyc","description":"Returns the organization's KYC status. The overall `status` uses the same logic as orders, so `approved` is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data.\n\n## The requirements breakdown\n\nPass `?requirements=true` to add a `requirements` array describing, step by step, what this customer's verification still needs. Each entry carries a `type`, a `status`, and a `requiresLaunch` flag, which separates \"I still owe data over the API\" from \"it is time to launch the customer\". It is opt-in because it calls the verification provider; without it the response leaves `requirements` out.\n\nThe breakdown covers personal verification only. Requesting it for a business organization returns `400` `invalid-request`; track a business with [`GET /organization/{organizationId}/kyb`](/v2/api-reference/kyb/get-kyb-status) instead.\n\n`requirements` is left out until the customer has been routed to their country's requirements. After that the list holds the customer's current stage, plus requirements already satisfied. It never lists a later stage's requirements, so it grows as they advance: `proofOfAddress` appears only when the identity document carried no address, and `customerAgreement` appears last. Send only what is listed as `pending` or `actionRequired`; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every `kycUpdated`; no single response is the full list. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n## Prefer the webhook\n\nSubscribe to `kycUpdated` to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With `?requirements=true` it calls the verification provider every time, so do not poll it tightly. See [Tracking verification status](/v2/guides/onboarding#tracking-verification-status).","href":"/v2/api-reference/kyc/get-kyc-status"},"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 h2: \"h2\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns the organization’s KYC status. The overall \", _jsx(_components.code, {\n children: \"status\"\n }), \" uses the same logic as orders, so \", _jsx(_components.code, {\n children: \"approved\"\n }), \" is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data.\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"The requirements breakdown\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Pass \", _jsx(_components.code, {\n children: \"?requirements=true\"\n }), \" to add a \", _jsx(_components.code, {\n children: \"requirements\"\n }), \" array describing, step by step, what this customer’s verification still needs. Each entry carries a \", _jsx(_components.code, {\n children: \"type\"\n }), \", a \", _jsx(_components.code, {\n children: \"status\"\n }), \", and a \", _jsx(_components.code, {\n children: \"requiresLaunch\"\n }), \" flag, which separates “I still owe data over the API” from “it is time to launch the customer”. It is opt-in because it calls the verification provider; without it the response leaves \", _jsx(_components.code, {\n children: \"requirements\"\n }), \" out.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The breakdown covers personal verification only. Requesting it for a business organization returns \", _jsx(_components.code, {\n children: \"400\"\n }), \" \", _jsx(_components.code, {\n children: \"invalid-request\"\n }), \"; track a business with \", _jsx(_components.a, {\n href: \"/v2/api-reference/kyb/get-kyb-status\",\n children: _jsx(_components.code, {\n children: \"GET /organization/{organizationId}/kyb\"\n })\n }), \" instead.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"requirements\"\n }), \" is left out until the customer has been routed to their country’s requirements. After that the list holds the customer’s current stage, plus requirements already satisfied. It never lists a later stage’s requirements, so it grows as they advance: \", _jsx(_components.code, {\n children: \"proofOfAddress\"\n }), \" appears only when the identity document carried no address, and \", _jsx(_components.code, {\n children: \"customerAgreement\"\n }), \" appears last. Send only what is listed as \", _jsx(_components.code, {\n children: \"pending\"\n }), \" or \", _jsx(_components.code, {\n children: \"actionRequired\"\n }), \"; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every \", _jsx(_components.code, {\n children: \"kycUpdated\"\n }), \"; no single response is the full list. See \", _jsx(_components.a, {\n href: \"/v2/guides/onboarding#requirements-unlock-in-stages\",\n children: \"Requirements unlock in stages\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Prefer the webhook\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Subscribe to \", _jsx(_components.code, {\n children: \"kycUpdated\"\n }), \" to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With \", _jsx(_components.code, {\n children: \"?requirements=true\"\n }), \" it calls the verification provider every time, so do not poll it tightly. See \", _jsx(_components.a, {\n href: \"/v2/guides/onboarding#tracking-verification-status\",\n children: \"Tracking verification status\"\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":"Get KYC status","openapi":"openapi-v2.json GET /organization/{organizationId}/kyc","description":"Returns the organization's KYC status. The overall `status` uses the same logic as orders, so `approved` is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data.\n\n## The requirements breakdown\n\nPass `?requirements=true` to add a `requirements` array describing, step by step, what this customer's verification still needs. Each entry carries a `type`, a `status`, and a `requiresLaunch` flag, which separates \"I still owe data over the API\" from \"it is time to launch the customer\". It is opt-in because it calls the verification provider; without it the response leaves `requirements` out.\n\nThe breakdown covers personal verification only. Requesting it for a business organization returns `400` `invalid-request`; track a business with [`GET /organization/{organizationId}/kyb`](/v2/api-reference/kyb/get-kyb-status) instead.\n\n`requirements` is left out until the customer has been routed to their country's requirements. After that the list holds the customer's current stage, plus requirements already satisfied. It never lists a later stage's requirements, so it grows as they advance: `proofOfAddress` appears only when the identity document carried no address, and `customerAgreement` appears last. Send only what is listed as `pending` or `actionRequired`; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every `kycUpdated`; no single response is the full list. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n## Prefer the webhook\n\nSubscribe to `kycUpdated` to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With `?requirements=true` it calls the verification provider every time, so do not poll it tightly. See [Tracking verification status](/v2/guides/onboarding#tracking-verification-status).","href":"/v2/api-reference/kyc/get-kyc-status"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["KYC"],"summary":"Get KYC status","description":"Returns the organization's KYC status. The overall `status` uses the same logic as orders, so `approved` is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data.\n\n## The requirements breakdown\n\nPass `?requirements=true` to add a `requirements` array describing, step by step, what this customer's verification still needs. Each entry carries a `type`, a `status`, and a `requiresLaunch` flag, which separates \"I still owe data over the API\" from \"it is time to launch the customer\". It is opt-in because it calls the verification provider; without it the response leaves `requirements` out.\n\nThe breakdown covers personal verification only. Requesting it for a business organization returns `400` `invalid-request`; track a business with [`GET /organization/{organizationId}/kyb`](/v2/api-reference/kyb/get-kyb-status) instead.\n\n`requirements` is left out until the customer has been routed to their country's requirements. After that the list holds the customer's current stage, plus requirements already satisfied. It never lists a later stage's requirements, so it grows as they advance: `proofOfAddress` appears only when the identity document carried no address, and `customerAgreement` appears last. Send only what is listed as `pending` or `actionRequired`; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every `kycUpdated`; no single response is the full list. See [Requirements unlock in stages](/v2/guides/onboarding#requirements-unlock-in-stages).\n\n## Prefer the webhook\n\nSubscribe to `kycUpdated` to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With `?requirements=true` it calls the verification provider every time, so do not poll it tightly. See [Tracking verification status](/v2/guides/onboarding#tracking-verification-status).","operationId":"v2GetKyc","parameters":["242e75de-fc0d-43b0-9ce9-ff3a9c011f0d","416faf5b-3745-4445-bdce-28c21e4f279e"],"responses":{"200":"28e94bc1-b03e-40ad-91c2-db16be5f1b7f","400":"7b121f99-484d-4ce0-8bce-d8ce8615f568","401":"2c781f0e-58aa-4013-b557-b03189c70182","404":"6fcdfa4b-2f7a-4008-8e48-e6211b95ff90","500":"5a4c1b40-f5f8-4425-8054-685050a03dea"},"method":"get","type":"path","servers":["58ef8c25-fe99-4a3a-b3d6-63ae68d90d12"],"security":["e2afb556-03f4-4063-920b-822ee6d2cce7"],"path":"/organization/{organizationId}/kyc","baseUrlOptions":["https://api.sand.etherfuse.com"],"title":"Get KYC status","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"242e75de-fc0d-43b0-9ce9-ff3a9c011f0d":{"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>"}},"416faf5b-3745-4445-bdce-28c21e4f279e":{"name":"requirements","in":"query","description":"Include the per-requirement `requirements` breakdown. Off by default. Personal organizations only; a business organization returns `400`.","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Include the per-requirement `requirements` breakdown. Off by default. Personal organizations only; a business organization returns `400`.","uniqueKey":"","typeLabel":"boolean"}}},"responses":{"28e94bc1-b03e-40ad-91c2-db16be5f1b7f":{"description":"The organization's KYC status.","content":{"application/json":{"schema":{"type":"object","required":["organizationId","status","currentRejectionReason","selfies","documents","approvedAt","needsWork","userMessage"],"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>"},"currentRejectionReason":{"oneOf":[{"type":"string","description":"Why the last review rejected the customer, when it did. Visible only to the partner that submitted the data.","isRequired":true,"uniqueKey":"currentRejectionReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the last review rejected the customer, when it did. Visible only to the partner that submitted the data.","isRequired":true,"uniqueKey":"currentRejectionReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"currentRejectionReason","typeLabel":"string | null"},"selfies":{"type":"array","items":{"type":"object","required":["id","type","status"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"selfies.items.[INDEX].id","typeLabel":"string"},"status":{"type":"string","enum":["approved","rejected","proposed"],"isRequired":true,"uniqueKey":"selfies.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"type":{"type":"string","isRequired":true,"uniqueKey":"selfies.items.[INDEX].type","typeLabel":"string"},"approvedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"selfies.items.[INDEX].approvedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"selfies.items.[INDEX].approvedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].approvedAt","typeLabel":"string\u003cdate-time> | null"},"contentLabel":{"oneOf":[{"type":"string","uniqueKey":"selfies.items.[INDEX].contentLabel.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"selfies.items.[INDEX].contentLabel.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].contentLabel","typeLabel":"string | null"},"createdAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"selfies.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"selfies.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"images":{"oneOf":[{"type":"array","items":{"type":"object","required":["imageURL","label"],"properties":{"imageURL":{"type":"string","isRequired":true,"uniqueKey":"selfies.items.[INDEX].images.oneOf.0.items.[INDEX].imageURL","typeLabel":"string"},"label":{"type":"string","isRequired":true,"uniqueKey":"selfies.items.[INDEX].images.oneOf.0.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"selfies.items.[INDEX].images.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"selfies.items.[INDEX].images.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["imageURL","label"],"properties":{"imageURL":{"type":"string"},"label":{"type":"string"}}},"uniqueKey":"selfies.items.[INDEX].images.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].images","typeLabel":"object[] | null"},"ipAddress":{"oneOf":[{"type":"string","uniqueKey":"selfies.items.[INDEX].ipAddress.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"selfies.items.[INDEX].ipAddress.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].ipAddress","typeLabel":"string | null"},"rejectedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"selfies.items.[INDEX].rejectedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"selfies.items.[INDEX].rejectedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].rejectedAt","typeLabel":"string\u003cdate-time> | null"},"rejectedReason":{"oneOf":[{"type":"string","uniqueKey":"selfies.items.[INDEX].rejectedReason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"selfies.items.[INDEX].rejectedReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].rejectedReason","typeLabel":"string | null"},"videoURL":{"oneOf":[{"type":"string","uniqueKey":"selfies.items.[INDEX].videoURL.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"selfies.items.[INDEX].videoURL.oneOf.1","typeLabel":"null"}],"uniqueKey":"selfies.items.[INDEX].videoURL","typeLabel":"string | null"}},"uniqueKey":"selfies.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"selfies","typeLabel":"object[]"},"documents":{"type":"array","items":{"type":"object","required":["id","type","status"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].id","typeLabel":"string"},"status":{"type":"string","enum":["approved","rejected","proposed"],"isRequired":true,"uniqueKey":"documents.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"type":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].type","typeLabel":"string"},"approvedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"documents.items.[INDEX].approvedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"documents.items.[INDEX].approvedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].approvedAt","typeLabel":"string\u003cdate-time> | null"},"contentLabel":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].contentLabel.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].contentLabel.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].contentLabel","typeLabel":"string | null"},"createdAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"documents.items.[INDEX].createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"documents.items.[INDEX].createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time> | null"},"images":{"oneOf":[{"type":"array","items":{"type":"object","required":["imageURL","label"],"properties":{"imageURL":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].images.oneOf.0.items.[INDEX].imageURL","typeLabel":"string"},"label":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].images.oneOf.0.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"documents.items.[INDEX].images.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"documents.items.[INDEX].images.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["imageURL","label"],"properties":{"imageURL":{"type":"string"},"label":{"type":"string"}}},"uniqueKey":"documents.items.[INDEX].images.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].images","typeLabel":"object[] | null"},"ipAddress":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].ipAddress.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].ipAddress.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].ipAddress","typeLabel":"string | null"},"rejectedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"documents.items.[INDEX].rejectedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"documents.items.[INDEX].rejectedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].rejectedAt","typeLabel":"string\u003cdate-time> | null"},"rejectedReason":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].rejectedReason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].rejectedReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].rejectedReason","typeLabel":"string | null"},"videoURL":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].videoURL.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].videoURL.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].videoURL","typeLabel":"string | null"},"extractedData":{"oneOf":[{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.0","typeLabel":"null"},{"type":"object","required":["id"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.id","typeLabel":"string"},"address":{"oneOf":[{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.0","typeLabel":"null"},{"type":"object","required":["country"],"properties":{"country":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.country","typeLabel":"string"},"city":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.city.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.city.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.city","typeLabel":"string | null"},"postalCode":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.postalCode.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.postalCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.postalCode","typeLabel":"string | null"},"region":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.region.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.region.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.region","typeLabel":"string | null"},"street":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.street.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.street.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.street","typeLabel":"string | null"},"street2":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.street2.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.street2.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1.street2","typeLabel":"string | null"}},"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address.oneOf.1","typeLabel":"object"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.address","typeLabel":"null | object"},"dateOfBirth":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.dateOfBirth.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.dateOfBirth.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.dateOfBirth","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.email.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.email","typeLabel":"string | null"},"idNumbers":{"type":"array","items":{"type":"object","required":["value","type"],"properties":{"type":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.idNumbers.items.[INDEX].type","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.idNumbers.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.idNumbers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.idNumbers","typeLabel":"object[]"},"name":{"oneOf":[{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.0","typeLabel":"null"},{"type":"object","required":["givenName","familyName"],"properties":{"familyName":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.familyName","typeLabel":"string"},"givenName":{"type":"string","isRequired":true,"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.givenName","typeLabel":"string"},"middleName":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.middleName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.middleName.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.middleName","typeLabel":"string | null"},"motherMaidenName":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.motherMaidenName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.motherMaidenName.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.motherMaidenName","typeLabel":"string | null"},"preferredName":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.preferredName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.preferredName.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1.preferredName","typeLabel":"string | null"}},"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name.oneOf.1","typeLabel":"object"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.name","typeLabel":"null | object"},"occupation":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.occupation.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.occupation.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.occupation","typeLabel":"string | null"},"organizationId":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.organizationId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.organizationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.organizationId","typeLabel":"string\u003cuuid> | null"},"phoneNumber":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.phoneNumber.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.phoneNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.phoneNumber","typeLabel":"string | null"},"sourceOrganizationId":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.sourceOrganizationId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.sourceOrganizationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.sourceOrganizationId","typeLabel":"string\u003cuuid> | null"},"useEmailForMarketing":{"oneOf":[{"type":"boolean","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.useEmailForMarketing.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.useEmailForMarketing.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.useEmailForMarketing","typeLabel":"boolean | null"},"walletId":{"oneOf":[{"type":"string","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.walletId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.walletId.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1.walletId","typeLabel":"string | null"}},"uniqueKey":"documents.items.[INDEX].extractedData.oneOf.1","typeLabel":"object"}],"uniqueKey":"documents.items.[INDEX].extractedData","typeLabel":"null | object"}},"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"documents","typeLabel":"object[]"},"approvedAt":{"oneOf":[{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"approvedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","isRequired":true,"uniqueKey":"approvedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"approvedAt","typeLabel":"string\u003cdate-time> | null"},"needsWork":{"type":"boolean","description":"True when the customer has to correct something and resubmit.","isRequired":true,"uniqueKey":"needsWork","typeLabel":"boolean"},"userMessage":{"oneOf":[{"type":"string","description":"What the customer has to fix, when `needsWork` is true.","isRequired":true,"uniqueKey":"userMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"What the customer has to fix, when `needsWork` is true.","isRequired":true,"uniqueKey":"userMessage.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"userMessage","typeLabel":"string | null"},"requirements":{"type":"array","description":"What the customer's verification still needs, step by step. Present only with `?requirements=true`, and only once the customer has been routed to their country's requirements.","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":"b2c3d4e5-f6a7-8901-bcde-f12345678901","status":"inProgress","currentRejectionReason":null,"selfies":[],"documents":[],"approvedAt":null,"needsWork":false,"userMessage":null,"requirements":[{"type":"personalData","status":"satisfied","requiresLaunch":false},{"type":"identityDocument","status":"pending","requiresLaunch":false},{"type":"selfie","status":"pending","requiresLaunch":true}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"organizationId":"b2c3d4e5-f6a7-8901-bcde-f12345678901","status":"inProgress","currentRejectionReason":null,"selfies":[],"documents":[],"approvedAt":null,"needsWork":false,"userMessage":null,"requirements":[{"type":"personalData","status":"satisfied","requiresLaunch":false},{"type":"identityDocument","status":"pending","requiresLaunch":false},{"type":"selfie","status":"pending","requiresLaunch":true}]}}},"exampleType":"generated"}},"exampleType":"generated"},"7b121f99-484d-4ce0-8bce-d8ce8615f568":{"description":"`invalid-request`: a path, query or body value is malformed, or `pageSize` is 0 or over 100.","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"},"2c781f0e-58aa-4013-b557-b03189c70182":{"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"},"6fcdfa4b-2f7a-4008-8e48-e6211b95ff90":{"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"},"5a4c1b40-f5f8-4425-8054-685050a03dea":{"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"}},"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":"Get KYC status - Etherfuse API","navMaps":{"firstHrefInVersion":{"v2 (beta)":{"href":"/v2/api-reference/kyc/get-kyc-status","matchLevel":0},"v1 (legacy)":{"href":"/api-reference/kyc/get-kyc-status","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T23:35:07.632Z","originalFileLocation":"v2/api-reference/kyc/get-kyc-status.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=\"Returns the organization\u0026#x27;s KYC status. The overall status uses the same logic as orders, so approved is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data. ## The requirements breakdown Pass ?requirements=true to add a requirements array describing, step by step, what this customer\u0026#x27;s verification still needs. Each entry carries a type, a status, and a requiresLaunch flag, which separates \u0026quot;I still owe data over the API\u0026quot; from \u0026quot;it is time to launch the customer\u0026quot;. It is opt-in because it calls the verification provider; without it the response leaves requirements out. The breakdown covers personal verification only. Requesting it for a business organization returns 400 invalid-request; track a business with GET /organization/{organizationId}/kyb instead. requirements is left out until the customer has been routed to their country\u0026#x27;s requirements. After that the list holds the customer\u0026#x27;s current stage, plus requirements already satisfied. It never lists a later stage\u0026#x27;s requirements, so it grows as they advance: proofOfAddress appears only when the identity document carried no address, and customerAgreement appears last. Send only what is listed as pending or actionRequired; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every kycUpdated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook Subscribe to kycUpdated to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With ?requirements=true it calls the verification provider every time, so do not poll it tightly. See Tracking verification status.\">\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=\"Get KYC status - Etherfuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the organization\u0026#x27;s KYC status. The overall status uses the same logic as orders, so approved is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data. ## The requirements breakdown Pass ?requirements=true to add a requirements array describing, step by step, what this customer\u0026#x27;s verification still needs. Each entry carries a type, a status, and a requiresLaunch flag, which separates \u0026quot;I still owe data over the API\u0026quot; from \u0026quot;it is time to launch the customer\u0026quot;. It is opt-in because it calls the verification provider; without it the response leaves requirements out. The breakdown covers personal verification only. Requesting it for a business organization returns 400 invalid-request; track a business with GET /organization/{organizationId}/kyb instead. requirements is left out until the customer has been routed to their country\u0026#x27;s requirements. After that the list holds the customer\u0026#x27;s current stage, plus requirements already satisfied. It never lists a later stage\u0026#x27;s requirements, so it grows as they advance: proofOfAddress appears only when the identity document carried no address, and customerAgreement appears last. Send only what is listed as pending or actionRequired; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every kycUpdated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook Subscribe to kycUpdated to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With ?requirements=true it calls the verification provider every time, so do not poll it tightly. See Tracking verification status.\">\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/get-kyc-status\">\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=Get+KYC+status\u0026amp;description=Returns+the+organization%27s+KYC+status.+The+overall+%60status%60+uses+the+same+logic+as+orders%2C+so+%60approved%60+is+the+only+value+that+lets+the+customer+transact.+Subm\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=c7618e6bc74eef3db84f4266efe09fc39e14e4cd273e4d82ddec13c9815fd92c\">\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=\"Get KYC status - Etherfuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the organization\u0026#x27;s KYC status. The overall status uses the same logic as orders, so approved is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data. ## The requirements breakdown Pass ?requirements=true to add a requirements array describing, step by step, what this customer\u0026#x27;s verification still needs. Each entry carries a type, a status, and a requiresLaunch flag, which separates \u0026quot;I still owe data over the API\u0026quot; from \u0026quot;it is time to launch the customer\u0026quot;. It is opt-in because it calls the verification provider; without it the response leaves requirements out. The breakdown covers personal verification only. Requesting it for a business organization returns 400 invalid-request; track a business with GET /organization/{organizationId}/kyb instead. requirements is left out until the customer has been routed to their country\u0026#x27;s requirements. After that the list holds the customer\u0026#x27;s current stage, plus requirements already satisfied. It never lists a later stage\u0026#x27;s requirements, so it grows as they advance: proofOfAddress appears only when the identity document carried no address, and customerAgreement appears last. Send only what is listed as pending or actionRequired; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every kycUpdated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook Subscribe to kycUpdated to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With ?requirements=true it calls the verification provider every time, so do not poll it tightly. See Tracking verification status.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://etherfuse.mintlify.app/_mintlify/api/og/v2?division=KYC\u0026amp;title=Get+KYC+status\u0026amp;description=Returns+the+organization%27s+KYC+status.+The+overall+%60status%60+uses+the+same+logic+as+orders%2C+so+%60approved%60+is+the+only+value+that+lets+the+customer+transact.+Subm\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=c7618e6bc74eef3db84f4266efe09fc39e14e4cd273e4d82ddec13c9815fd92c\">\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/get-kyc-status\">\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/get-kyc-status.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/get-kyc-status#webpage\",\"url\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status\",\"name\":\"Get KYC status\",\"description\":\"Returns the organization's KYC status. The overall status uses the same logic as orders, so approved is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data. ## The requirements breakdown Pass ?requirements=true to add a requirements array describing, step by step, what this customer's verification still needs. Each entry carries a type, a status, and a requiresLaunch flag, which separates \\\"I still owe data over the API\\\" from \\\"it is time to launch the customer\\\". It is opt-in because it calls the verification provider; without it the response leaves requirements out. The breakdown covers personal verification only. Requesting it for a business organization returns 400 invalid-request; track a business with GET /organization/{organizationId}/kyb instead. requirements is left out until the customer has been routed to their country's requirements. After that the list holds the customer's current stage, plus requirements already satisfied. It never lists a later stage's requirements, so it grows as they advance: proofOfAddress appears only when the identity document carried no address, and customerAgreement appears last. Send only what is listed as pending or actionRequired; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every kycUpdated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook Subscribe to kycUpdated to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With ?requirements=true it calls the verification provider every time, so do not poll it tightly. See Tracking verification status.\",\"dateModified\":\"2026-10-14T23:35:07.632Z\",\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Etherfuse API\",\"item\":\"https://docs.etherfuse.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get KYC status\",\"item\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status#apireference\",\"headline\":\"Get KYC status\",\"name\":\"Get KYC status\",\"description\":\"Returns the organization's KYC status. The overall status uses the same logic as orders, so approved is the only value that lets the customer transact. Submission details such as rejection reasons and timestamps are visible only to the partner that submitted the data. ## The requirements breakdown Pass ?requirements=true to add a requirements array describing, step by step, what this customer's verification still needs. Each entry carries a type, a status, and a requiresLaunch flag, which separates \\\"I still owe data over the API\\\" from \\\"it is time to launch the customer\\\". It is opt-in because it calls the verification provider; without it the response leaves requirements out. The breakdown covers personal verification only. Requesting it for a business organization returns 400 invalid-request; track a business with GET /organization/{organizationId}/kyb instead. requirements is left out until the customer has been routed to their country's requirements. After that the list holds the customer's current stage, plus requirements already satisfied. It never lists a later stage's requirements, so it grows as they advance: proofOfAddress appears only when the identity document carried no address, and customerAgreement appears last. Send only what is listed as pending or actionRequired; a requirement sent before it is listed is accepted and then refused in the background. Read the list again after every kycUpdated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook Subscribe to kycUpdated to learn that something changed. Read this endpoint on demand, or after that webhook when you need to know what is outstanding. With ?requirements=true it calls the verification provider every time, so do not poll it tightly. See Tracking verification status.\",\"url\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status\",\"mainEntityOfPage\":{\"@id\":\"https://docs.etherfuse.com/v2/api-reference/kyc/get-kyc-status#webpage\"},\"dateModified\":\"2026-10-14T23:35:07.632Z\",\"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","description":"Lists the customer business organizations a person belongs to, by their `memberId` (the JWT `sub`). This is the reverse of [List organization members](/v2/api-reference/members/list-organization-members).\n\nOnly your own customer organizations are searched. A `memberId` that belongs to none of them returns an empty `items`.","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","description":"First call in the [KYC API](/v2/guides/kyc-api) flow. Nothing else is accepted before it: `country` is what routes the customer to their country's requirements.\n\n**Answers `202`, not `200`.** We validate the request before we answer and record it with the verification provider after. A `202` means accepted, not satisfied. Read the result from the `kycUpdated` webhook or [`GET /organization/{organizationId}/kyc?requirements=true`](/v2/api-reference/kyc/get-kyc-status).\n\nSubmitting again overwrites what was sent before, and never moves the customer's review status on its own. Personal organizations only.","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","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","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/get-kyc-status"}]}]},"basePath":"","title":"Get KYC status - 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"]}