Returns the current KYC verification status for a customer, resolved from the customer’s account. The overall status matches the logic used for orders, so it stays consistent with whether the customer can transact, and approved is the only value that lets them. 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 is what separates “I still owe data over the API” from “it is time to launch the customer”. It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged.
The breakdown covers personal verification only. Requesting it for a business customer returns 400; track a business with GET /ramp/organization/{id}/kyb/status instead.
requirements is omitted entirely until the customer has been routed to their country’s requirements. Before that there is no country-specific requirement set to describe, and reporting the router’s own steps would read as “this customer is done” precisely when nothing has happened. 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: proof_of_address appears only when the identity document carried no address, and customer_agreement appears last. Send only what is listed as pending or action_required; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every kyc_updated; no single response is the full list. See Requirements unlock in stages.
Prefer the webhook
kyc_updated is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With ?requirements=true it resolves against the verification provider on every call, so it is not built for tight polling. See Tracking verification status.
GET
/
ramp
/
customer
/
{customer_id}
/
kyc
Get KYC status
curl --request GET \
--url https://api.sand.etherfuse.com/ramp/customer/{customer_id}/kyc \
--header 'Authorization: <api-key>'
Whether KYC is marked on-chain. Only present for Solana wallets.
For other blockchain types (Stellar, EVM), this field is omitted as on-chain marking doesn't apply.
What the customer's verification still needs, step by step. Present only when asked for with ?requirements=trueand the customer has been routed to their country's requirements; omitted otherwise.
{"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":"6ae2ae263591741d21b4527a","collectionId":"e1968250-873a-4d37-bbf8-16d0d86759ca","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2ae263591741d21b4527a"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae2ae263591741d21b4527a","clientVersion":"0.0.4006","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"workos-enabled","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":"api-reference/kyc/get-kyc-status","slug":"/api-reference/kyc/get-kyc-status","pageMetadata":{"title":"Get KYC status","description":"Returns the current KYC verification status for a customer, resolved from the customer's account. The overall `status` matches the logic used for orders, so it stays consistent with whether the customer can transact, and `approved` is the only value that lets them. 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 is what separates \"I still owe data over the API\" from \"it is time to launch the customer\". It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged.\n\nThe breakdown covers personal verification only. Requesting it for a business customer returns `400`; track a business with [`GET /ramp/organization/{id}/kyb/status`](/api-reference/organizations/get-kyb-status) instead.\n\n`requirements` is omitted entirely until the customer has been routed to their country's requirements. Before that there is no country-specific requirement set to describe, and reporting the router's own steps would read as \"this customer is done\" precisely when nothing has happened. 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: `proof_of_address` appears only when the identity document carried no address, and `customer_agreement` appears last. Send only what is listed as `pending` or `action_required`; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every `kyc_updated`; no single response is the full list. See [Requirements unlock in stages](/guides/onboarding#requirements-unlock-in-stages).\n\n## Prefer the webhook\n\n`kyc_updated` is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With `?requirements=true` it resolves against the verification provider on every call, so it is not built for tight polling. See [Tracking verification status](/guides/onboarding#tracking-verification-status).","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/kyc","href":"/api-reference/kyc/get-kyc-status","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h2: \"h2\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns the current KYC verification status for a customer, resolved from the customer’s account. The overall \", _jsx(_components.code, {\n children: \"status\"\n }), \" matches the logic used for orders, so it stays consistent with whether the customer can transact, and \", _jsx(_components.code, {\n children: \"approved\"\n }), \" is the only value that lets them. 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 is what separates “I still owe data over the API” from “it is time to launch the customer”. It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The breakdown covers personal verification only. Requesting it for a business customer returns \", _jsx(_components.code, {\n children: \"400\"\n }), \"; track a business with \", _jsx(_components.a, {\n href: \"/api-reference/organizations/get-kyb-status\",\n children: _jsx(_components.code, {\n children: \"GET /ramp/organization/{id}/kyb/status\"\n })\n }), \" instead.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"requirements\"\n }), \" is omitted entirely until the customer has been routed to their country’s requirements. Before that there is no country-specific requirement set to describe, and reporting the router’s own steps would read as “this customer is done” precisely when nothing has happened. 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: \"proof_of_address\"\n }), \" appears only when the identity document carried no address, and \", _jsx(_components.code, {\n children: \"customer_agreement\"\n }), \" appears last. Send only what is listed as \", _jsx(_components.code, {\n children: \"pending\"\n }), \" or \", _jsx(_components.code, {\n children: \"action_required\"\n }), \"; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every \", _jsx(_components.code, {\n children: \"kyc_updated\"\n }), \"; no single response is the full list. See \", _jsx(_components.a, {\n href: \"/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: [_jsx(_components.code, {\n children: \"kyc_updated\"\n }), \" is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With \", _jsx(_components.code, {\n children: \"?requirements=true\"\n }), \" it resolves against the verification provider on every call, so it is not built for tight polling. See \", _jsx(_components.a, {\n href: \"/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","description":"Returns the current KYC verification status for a customer, resolved from the customer's account. The overall `status` matches the logic used for orders, so it stays consistent with whether the customer can transact, and `approved` is the only value that lets them. 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 is what separates \"I still owe data over the API\" from \"it is time to launch the customer\". It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged.\n\nThe breakdown covers personal verification only. Requesting it for a business customer returns `400`; track a business with [`GET /ramp/organization/{id}/kyb/status`](/api-reference/organizations/get-kyb-status) instead.\n\n`requirements` is omitted entirely until the customer has been routed to their country's requirements. Before that there is no country-specific requirement set to describe, and reporting the router's own steps would read as \"this customer is done\" precisely when nothing has happened. 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: `proof_of_address` appears only when the identity document carried no address, and `customer_agreement` appears last. Send only what is listed as `pending` or `action_required`; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every `kyc_updated`; no single response is the full list. See [Requirements unlock in stages](/guides/onboarding#requirements-unlock-in-stages).\n\n## Prefer the webhook\n\n`kyc_updated` is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With `?requirements=true` it resolves against the verification provider on every call, so it is not built for tight polling. See [Tracking verification status](/guides/onboarding#tracking-verification-status).","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/kyc","href":"/api-reference/kyc/get-kyc-status","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["KYC"],"summary":"Get KYC status","description":"Returns the current KYC verification status for a customer, resolved from the customer's account. The overall `status` matches the logic used for orders, so it stays consistent with whether the customer can transact, and `approved` is the only value that lets them. 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 is what separates \"I still owe data over the API\" from \"it is time to launch the customer\". It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged.\n\nThe breakdown covers personal verification only. Requesting it for a business customer returns `400`; track a business with [`GET /ramp/organization/{id}/kyb/status`](/api-reference/organizations/get-kyb-status) instead.\n\n`requirements` is omitted entirely until the customer has been routed to their country's requirements. Before that there is no country-specific requirement set to describe, and reporting the router's own steps would read as \"this customer is done\" precisely when nothing has happened. 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: `proof_of_address` appears only when the identity document carried no address, and `customer_agreement` appears last. Send only what is listed as `pending` or `action_required`; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every `kyc_updated`; no single response is the full list. See [Requirements unlock in stages](/guides/onboarding#requirements-unlock-in-stages).\n\n## Prefer the webhook\n\n`kyc_updated` is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With `?requirements=true` it resolves against the verification provider on every call, so it is not built for tight polling. See [Tracking verification status](/guides/onboarding#tracking-verification-status).","operationId":"get_kyc_org","parameters":["8870ef49-29f3-4d6a-88ba-1dab0094d8ae","d2b8df97-528d-4101-8d6d-893eaf96d6a2"],"responses":{"200":"3aa2eca3-f0a3-4491-bf7f-a5385aa9d143","400":"14b15ea0-eb58-4803-81f8-46e7bc8f6ea7","404":"39ed449a-531f-4cff-82d2-ca4a3032eba3"},"method":"get","type":"path","servers":["6c2c243d-6c24-4622-b28e-d2865f581bea"],"security":["69e68c7f-d85c-4d8c-b466-41610f69663a"],"path":"/ramp/customer/{customer_id}/kyc","baseUrlOptions":["https://api.sand.etherfuse.com"],"title":"Get KYC status","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"8870ef49-29f3-4d6a-88ba-1dab0094d8ae":{"name":"customer_id","in":"path","description":"The customer (child org) ID. Must belong to the caller's organization or a direct child.","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"The customer (child org) ID. Must belong to the caller's organization or a direct child.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"d2b8df97-528d-4101-8d6d-893eaf96d6a2":{"name":"requirements","in":"query","description":"Include the per-requirement `requirements` breakdown. Off by default. Personal customers only; a business customer returns `400`.","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Include the per-requirement `requirements` breakdown. Off by default. Personal customers only; a business customer returns `400`.","uniqueKey":"","typeLabel":"boolean"}}},"responses":{"3aa2eca3-f0a3-4491-bf7f-a5385aa9d143":{"description":"The org-level KYC status for the customer","content":{"application/json":{"schema":{"type":"object","description":"KYC status response","required":["customerId","status","selfies","documents","needsWork"],"properties":{"customerId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"customerId","typeLabel":"string\u003cuuid>"},"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[]"},"needsWork":{"type":"boolean","isRequired":true,"uniqueKey":"needsWork","typeLabel":"boolean"},"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[]"},"status":{"type":"string","description":"Unified KYC status for the customer's organization.\n\n- `not_started`: no KYC started\n- `in_progress`: the customer started the flow but hasn't submitted everything\n- `submitted`: submitted, awaiting review (manual or automated)\n- `approved`: cleared; the customer can transact\n- `denied`: a rejected verdict, or a previously-approved customer whose approval was revoked (reason in `currentRejectionReason`)","enum":["not_started","in_progress","submitted","approved","denied"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"approvedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"approvedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"approvedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"approvedAt","typeLabel":"string\u003cdate-time> | null"},"currentRejectionReason":{"oneOf":[{"type":"string","uniqueKey":"currentRejectionReason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"currentRejectionReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"currentRejectionReason","typeLabel":"string | null"},"onChainMarked":{"oneOf":[{"type":"boolean","description":"Whether KYC is marked on-chain. Only present for Solana wallets.\nFor other blockchain types (Stellar, EVM), this field is omitted as on-chain marking doesn't apply.","uniqueKey":"onChainMarked.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether KYC is marked on-chain. Only present for Solana wallets.\nFor other blockchain types (Stellar, EVM), this field is omitted as on-chain marking doesn't apply.","uniqueKey":"onChainMarked.oneOf.1","typeLabel":"null"}],"uniqueKey":"onChainMarked","typeLabel":"boolean | null"},"requirements":{"type":"array","description":"What the customer's verification still needs, step by step. Present only when asked for with `?requirements=true` **and** the customer has been routed to their country's requirements; omitted otherwise.","items":{"type":"object","description":"One thing a customer's verification still needs, and where it stands.","required":["type","status","requiresLaunch"],"properties":{"type":{"type":"string","description":"Which requirement this is. Only the ones that apply to this customer are listed; their country decides which those are.\n\n1. `personal_data`: name, date of birth, tax ID, country and address; Mexico also requires CURP\n2. `identity_document`: a government-issued ID\n3. `proof_of_address`: an address document; appears only when the identity document carried no address\n4. `occupation`: job title and occupation category\n5. `selfie`: a live face capture; cannot be uploaded\n6. `customer_agreement`: the customer accepting the required agreements\n\nWe reserve the right to add requirements, and will update these docs when we do. A country may also introduce one of its own; see [Country-specific requirements](/guides/onboarding#country-specific-requirements).","enum":["personal_data","identity_document","proof_of_address","occupation","email_confirmation","selfie","customer_agreement"],"isRequired":true,"uniqueKey":"requirements.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"How far along this requirement is.\n\n- `satisfied`: accepted, nothing more to do\n- `pending`: nothing has been provided for this yet, so it is still owed\n- `awaiting_review`: provided, not yet reviewed\n- `action_required`: **reviewed and rejected**, so it must be provided again, corrected\n\n`pending` and `awaiting_review` are the distinction that matters: a shared verification whose identity document and selfie transferred reads `awaiting_review` for both, so do not read `pending` into it and re-send. Treat this as an **open set**: more values may be added, so key your logic off the two that carry an instruction (`satisfied` means done, `action_required` means re-send) and treat anything else as in flight.","enum":["satisfied","pending","awaiting_review","action_required"],"isRequired":true,"uniqueKey":"requirements.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"requiresLaunch":{"type":"boolean","description":"True when only the customer can satisfy this in the hosted step, such as the liveness capture. A property of the requirement rather than of its progress, so it does not change as the customer advances. `selfie` reads true whether or not the selfie has been taken. A requirement with status `satisfied` needs no further action even when this flag is true.\n\nFalse does not mean the requirement is yours to submit. It means the API *can* submit it. The customer can always enter it in the hosted step instead, which is why launching them satisfies everything. So this flag says what the API cannot reach, not when to launch: an outstanding requirement reading true is one no API call will ever clear.","isRequired":true,"uniqueKey":"requirements.items.[INDEX].requiresLaunch","typeLabel":"boolean"}},"example":{"type":"identity_document","status":"pending","requiresLaunch":false},"uniqueKey":"requirements.items.[INDEX]","typeLabel":"object"},"uniqueKey":"requirements","typeLabel":"object[]"},"userMessage":{"oneOf":[{"type":"string","uniqueKey":"userMessage.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"userMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"userMessage","typeLabel":"string | null"},"walletPublicKey":{"oneOf":[{"type":"string","uniqueKey":"walletPublicKey.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"walletPublicKey.oneOf.1","typeLabel":"null"}],"uniqueKey":"walletPublicKey","typeLabel":"string | null"}},"example":{"approvedAt":"2026-05-01T16:00:00Z","currentRejectionReason":null,"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","documents":[],"needsWork":false,"selfies":[],"status":"approved"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"approvedAt":"2026-05-01T16:00:00Z","currentRejectionReason":null,"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","documents":[],"needsWork":false,"selfies":[],"status":"approved"}}},"exampleType":"generated"}},"exampleType":"generated"},"14b15ea0-eb58-4803-81f8-46e7bc8f6ea7":{"description":"`requirements=true` was passed for a business customer.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"39ed449a-531f-4cff-82d2-ca4a3032eba3":{"description":"No organization exists with that `customer_id`, or it is not a customer of your organization.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"69e68c7f-d85c-4d8c-b466-41610f69663a":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header.","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"6c2c243d-6c24-4622-b28e-d2865f581bea":{"url":"https://api.sand.etherfuse.com","description":"Sandbox"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header.","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"API key sent in the Authorization header.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"etherfuse","siteName":"Etherfuse API","title":"Get KYC status - Etherfuse API","navMaps":{"firstHrefInVersion":{"v2 (beta)":{"href":"/v2/api-reference/kyc/get-kyc-status","matchLevel":1},"v1 (legacy)":{"href":"/api-reference/kyc/get-kyc-status","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T23:26:07.658Z","originalFileLocation":"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 current KYC verification status for a customer, resolved from the customer\u0026#x27;s account. The overall status matches the logic used for orders, so it stays consistent with whether the customer can transact, and approved is the only value that lets them. 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 is what 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 resolving it costs upstream calls; omit the parameter and the response is unchanged. The breakdown covers personal verification only. Requesting it for a business customer returns 400; track a business with GET /ramp/organization/{id}/kyb/status instead. requirements is omitted entirely until the customer has been routed to their country\u0026#x27;s requirements. Before that there is no country-specific requirement set to describe, and reporting the router\u0026#x27;s own steps would read as \u0026quot;this customer is done\u0026quot; precisely when nothing has happened. 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: proof_of_address appears only when the identity document carried no address, and customer_agreement appears last. Send only what is listed as pending or action_required; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every kyc_updated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook kyc_updated is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With ?requirements=true it resolves against the verification provider on every call, so it is not built for tight polling. 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 current KYC verification status for a customer, resolved from the customer\u0026#x27;s account. The overall status matches the logic used for orders, so it stays consistent with whether the customer can transact, and approved is the only value that lets them. 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 is what 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 resolving it costs upstream calls; omit the parameter and the response is unchanged. The breakdown covers personal verification only. Requesting it for a business customer returns 400; track a business with GET /ramp/organization/{id}/kyb/status instead. requirements is omitted entirely until the customer has been routed to their country\u0026#x27;s requirements. Before that there is no country-specific requirement set to describe, and reporting the router\u0026#x27;s own steps would read as \u0026quot;this customer is done\u0026quot; precisely when nothing has happened. 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: proof_of_address appears only when the identity document carried no address, and customer_agreement appears last. Send only what is listed as pending or action_required; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every kyc_updated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook kyc_updated is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With ?requirements=true it resolves against the verification provider on every call, so it is not built for tight polling. 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/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+current+KYC+verification+status+for+a+customer%2C+resolved+from+the+customer%27s+account.+The+overall+%60status%60+matches+the+logic+used+for+orders%2C+so+it+\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=4054e3ab0c7dd5b63428aa70151e489e33e88badeac72033b2878adf47fa07f6\">\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 current KYC verification status for a customer, resolved from the customer\u0026#x27;s account. The overall status matches the logic used for orders, so it stays consistent with whether the customer can transact, and approved is the only value that lets them. 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 is what 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 resolving it costs upstream calls; omit the parameter and the response is unchanged. The breakdown covers personal verification only. Requesting it for a business customer returns 400; track a business with GET /ramp/organization/{id}/kyb/status instead. requirements is omitted entirely until the customer has been routed to their country\u0026#x27;s requirements. Before that there is no country-specific requirement set to describe, and reporting the router\u0026#x27;s own steps would read as \u0026quot;this customer is done\u0026quot; precisely when nothing has happened. 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: proof_of_address appears only when the identity document carried no address, and customer_agreement appears last. Send only what is listed as pending or action_required; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every kyc_updated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook kyc_updated is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With ?requirements=true it resolves against the verification provider on every call, so it is not built for tight polling. 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+current+KYC+verification+status+for+a+customer%2C+resolved+from+the+customer%27s+account.+The+overall+%60status%60+matches+the+logic+used+for+orders%2C+so+it+\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=4054e3ab0c7dd5b63428aa70151e489e33e88badeac72033b2878adf47fa07f6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/etherfuse/2PYR-_ECBzhTGa_z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Etherfuse API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#141414\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.etherfuse.com/api-reference/kyc/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=\"/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/api-reference/kyc/get-kyc-status#webpage\",\"url\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status\",\"name\":\"Get KYC status\",\"description\":\"Returns the current KYC verification status for a customer, resolved from the customer's account. The overall status matches the logic used for orders, so it stays consistent with whether the customer can transact, and approved is the only value that lets them. 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 is what separates \\\"I still owe data over the API\\\" from \\\"it is time to launch the customer\\\". It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged. The breakdown covers personal verification only. Requesting it for a business customer returns 400; track a business with GET /ramp/organization/{id}/kyb/status instead. requirements is omitted entirely until the customer has been routed to their country's requirements. Before that there is no country-specific requirement set to describe, and reporting the router's own steps would read as \\\"this customer is done\\\" precisely when nothing has happened. 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: proof_of_address appears only when the identity document carried no address, and customer_agreement appears last. Send only what is listed as pending or action_required; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every kyc_updated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook kyc_updated is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With ?requirements=true it resolves against the verification provider on every call, so it is not built for tight polling. See Tracking verification status.\",\"dateModified\":\"2026-10-28T23:26:07.658Z\",\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ramp API\",\"item\":\"https://docs.etherfuse.com/api-reference/assets/list-assets\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get KYC status\",\"item\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status#apireference\",\"headline\":\"Get KYC status\",\"name\":\"Get KYC status\",\"description\":\"Returns the current KYC verification status for a customer, resolved from the customer's account. The overall status matches the logic used for orders, so it stays consistent with whether the customer can transact, and approved is the only value that lets them. 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 is what separates \\\"I still owe data over the API\\\" from \\\"it is time to launch the customer\\\". It is opt-in because resolving it costs upstream calls; omit the parameter and the response is unchanged. The breakdown covers personal verification only. Requesting it for a business customer returns 400; track a business with GET /ramp/organization/{id}/kyb/status instead. requirements is omitted entirely until the customer has been routed to their country's requirements. Before that there is no country-specific requirement set to describe, and reporting the router's own steps would read as \\\"this customer is done\\\" precisely when nothing has happened. 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: proof_of_address appears only when the identity document carried no address, and customer_agreement appears last. Send only what is listed as pending or action_required; a requirement sent before it is listed is accepted and then refused in the background. Re-read the list after every kyc_updated; no single response is the full list. See Requirements unlock in stages. ## Prefer the webhook kyc_updated is how you learn that something changed. Read this endpoint on demand, or in response to that webhook when you need to know what specifically is outstanding. With ?requirements=true it resolves against the verification provider on every call, so it is not built for tight polling. See Tracking verification status.\",\"url\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status\",\"mainEntityOfPage\":{\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status#webpage\"},\"dateModified\":\"2026-10-28T23:26:07.658Z\",\"publisher\":{\"@id\":\"https://docs.etherfuse.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Etherfuse API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Etherfuse API","nav":{"global":null,"versions":[{"version":"v2 (beta)","default":true,"pages":[{"title":"v2 (beta)","href":"/v2/api-reference/kyc/get-kyc-status"}]},{"version":"v1 (legacy)","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"API Authentication","href":"/authentication"},{"title":"Errors","href":"/errors"},{"title":"Pagination","href":"/pagination"},{"title":"Idempotency","href":"/idempotency"},{"group":"User Authentication","icon":"key","pages":[{"openapi":"openapi.json POST /auth/launch","title":"Launch a user into the app","href":"/api-reference/authentication/launch-a-user-into-the-app"},{"openapi":"openapi.json GET /auth/launch","title":"Launch a user via postMessage","href":"/api-reference/launch-via-postmessage"},{"title":"Exchange a partner JWT","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/token","href":"/api-reference/authentication/exchange-a-partner-jwt"}]},{"group":"Ramp API","icon":"money-bill-transfer","pages":[{"group":"Assets","icon":"coins","pages":[{"title":"List assets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/assets","href":"/api-reference/assets/list-assets"},{"title":"Get one wallet's balances","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/balances","href":"/api-reference/assets/get-one-wallets-balances"}]},{"group":"Bank Accounts","icon":"building-columns","pages":[{"title":"Create bank account (presigned)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-account","href":"/api-reference/bank-accounts/create-bank-account-presigned"},{"title":"Get bank account","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-account/{bank_account_id}","href":"/api-reference/bank-accounts/get-bank-account"},{"title":"List bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-accounts","href":"/api-reference/bank-accounts/list-bank-accounts"},{"title":"Search bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-accounts","href":"/api-reference/bank-accounts/search-bank-accounts"},{"title":"Create bank account (API)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-account","href":"/api-reference/bank-accounts/create-bank-account-api"},{"title":"List customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/list-customer-accounts"},{"title":"Search customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/search-customer-accounts"}]},{"group":"Quotes","icon":"tag","pages":[{"title":"Get quote","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/quote","href":"/api-reference/quotes/get-quote"}]},{"group":"Orders","icon":"receipt","pages":[{"title":"Create order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order","href":"/api-reference/orders/create-order"},{"title":"Get order","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}","href":"/api-reference/orders/get-order"},{"title":"Cancel order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/cancel","href":"/api-reference/orders/cancel-order"},{"title":"Regenerate tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/regenerate_tx","href":"/api-reference/orders/regenerate-tx"},{"title":"Get order approval","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}/approvals","href":"/api-reference/orders/get-order-approval"},{"title":"Submit order approval","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/approvals","href":"/api-reference/orders/submit-order-approval"},{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/orders","href":"/api-reference/orders/list-orders"},{"title":"Search orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/orders","href":"/api-reference/orders/search-orders"},{"title":"List customer orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/list-customer-orders"},{"title":"Search customer orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/search-customer-orders"}]},{"group":"Statements","icon":"file-invoice-dollar","pages":[{"title":"List partner statements","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements","href":"/api-reference/statements/list-partner-statements"},{"title":"Download statement CSV","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/csv","href":"/api-reference/statements/download-statement-csv"},{"title":"Download statement PDF","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/pdf","href":"/api-reference/statements/download-statement-pdf"}]},{"group":"WebSocket","icon":"plug","pages":[{"title":"Mint WebSocket token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/ws-api-token","href":"/api-reference/websocket/mint-websocket-token"},{"title":"Connect to the live update stream","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/ws","href":"/api-reference/websocket/connect-to-the-live-update-stream"}]},{"group":"Swaps","icon":"right-left","pages":[{"title":"Swap assets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap","href":"/api-reference/swaps/swap-assets"},{"title":"Regenerate swap tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap/{order_id}/regenerate_tx","href":"/api-reference/swaps/regenerate-swap-tx"}]},{"group":"Sponsored","icon":"hand-holding-dollar","pages":[{"title":"Approve EVM token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/evm/approve","href":"/api-reference/sponsored/approve-evm-token"}]},{"group":"Customers","icon":"users","pages":[{"title":"Search customers","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customers","href":"/api-reference/customers/search-customers"},{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customers","href":"/api-reference/customers/list-customers"},{"title":"Get customer","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}","href":"/api-reference/customers/get-customer"},{"title":"List a customer's organizations","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/organization","href":"/api-reference/customers/list-a-customers-organizations"}]},{"group":"Wallets","icon":"wallet","pages":[{"title":"Register wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallet","href":"/api-reference/wallets/register-wallet"},{"title":"Get wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Delete wallet","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/delete-wallet"},{"title":"List wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Search wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallets","href":"/api-reference/wallets/search-wallets"},{"title":"Register customer wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallet","href":"/api-reference/wallets/register-customer-wallet"},{"title":"List customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/list-customer-wallets"},{"title":"Search customer wallets","description":"Retrieves crypto wallets for a specific customer. The request body is optional —\nomitting it returns the first page with defaults (pageSize 30, pageNumber 0, no filters).","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/search-customer-wallets"}]},{"group":"KYC","icon":"id-card","pages":[{"title":"Get KYC status","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/kyc","href":"/api-reference/kyc/get-kyc-status"},{"title":"Submit verification data","description":"First call in the [KYC API](/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`.** The request is validated before we answer; recording it upstream happens after. A `202` means accepted, not satisfied. Read the result from the `kyc_updated` webhook or [`GET /ramp/customer/{customer_id}/kyc?requirements=true`](/api-reference/kyc/get-kyc-status).\n\nRe-submitting overwrites what was sent before, and never moves the customer's review status on its own. Personal accounts only.","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification","href":"/api-reference/kyc/submit-verification-data"},{"title":"Upload verification documents","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/documents","href":"/api-reference/kyc/upload-verification-documents"},{"title":"Submit a verification questionnaire","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/questionnaire","href":"/api-reference/kyc/submit-a-verification-questionnaire"},{"title":"Import a verified session","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/import","href":"/api-reference/kyc/import-a-verified-session"},{"title":"List occupation categories","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/verification/occupations","href":"/api-reference/kyc/list-occupation-categories"}]},{"group":"Webhooks","icon":"bell","pages":[{"title":"Create webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/webhook","href":"/api-reference/webhooks/create-webhook"},{"title":"Get webhook","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/webhook/{webhook_id}","href":"/api-reference/webhooks/get-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/webhook/{webhook_id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/webhooks","href":"/api-reference/webhooks/list-webhooks"}]},{"group":"Webhook Events","icon":"tower-broadcast","pages":[{"title":"Order updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook orderUpdated","href":"/api-reference/webhooks/order_updated"},{"title":"Swap updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook swapUpdated","href":"/api-reference/webhooks/swap_updated"},{"title":"Customer updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook customerUpdated","href":"/api-reference/webhooks/customer_updated"},{"title":"Bank account updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook bankAccountUpdated","href":"/api-reference/webhooks/bank_account_updated"},{"title":"Kyc updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook kycUpdated","href":"/api-reference/webhooks/kyc_updated"},{"title":"Kyb updated","version":null,"deprecated":null,"openapi":"/openapi.json webhook kybUpdated","href":"/api-reference/webhooks/kyb_updated"}]},{"group":"Organizations","icon":"building","pages":[{"title":"Verify API key","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp","href":"/api-reference/organizations/verify-api-key"},{"title":"Get organization","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/me","href":"/api-reference/organizations/get-organization"},{"title":"Create child org","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/organization","href":"/api-reference/organizations/create-child-org"},{"title":"Add organization member","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/organization/{id}/member","href":"/api-reference/organizations/add-organization-member"},{"title":"List organization members","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/organization/{id}/member","href":"/api-reference/organizations/list-organization-members"},{"title":"Remove organization member","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/organization/{id}/member/{customer_id}","href":"/api-reference/organizations/remove-organization-member"},{"title":"Revoke organization invite","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/organization/{id}/member/invite/{email}","href":"/api-reference/organizations/revoke-organization-invite"},{"title":"Get KYB status","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/organization/{id}/kyb/status","href":"/api-reference/organizations/get-kyb-status"},{"title":"Rename organization","deprecated":null,"version":null,"openapi":"/openapi.json put /ramp/organization/{org_id}/name","href":"/api-reference/organizations/rename-organization"},{"title":"Set partner fee","deprecated":null,"version":null,"openapi":"/openapi.json put /ramp/partner-fee","href":"/api-reference/organizations/set-partner-fee"}]},{"group":"Sandbox API","icon":"flask","pages":[{"title":"Simulate Fiat Received","api":"POST https://api.sand.etherfuse.com/ramp/order/fiat_received","href":"/sandbox-api/fiat-received"}]},{"group":"Deprecated","icon":"ban","pages":[{"title":"Generate onboarding URL","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/onboarding-url","href":"/api-reference/deprecated/generate-onboarding-url"},{"title":"Get onboarding bank accounts","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/onboarding/bank-accounts","href":"/api-reference/deprecated/get-onboarding-bank-accounts"},{"title":"Submit KYC","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/kyc","href":"/api-reference/deprecated/submit-kyc"},{"title":"Upload KYC docs","deprecated":true,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/kyc/documents","href":"/api-reference/deprecated/upload-kyc-docs"},{"title":"Get KYB progress","deprecated":true,"version":null,"openapi":"/openapi.json get /ramp/organization/{id}/kyb/progress","href":"/api-reference/deprecated/get-kyb-progress"}]}]},{"group":"Lookup API","icon":"magnifying-glass","pages":[{"title":"List exchange rates","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/exchange_rate","href":"/api-reference/lookup/list-exchange-rates"},{"title":"Get exchange rate","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/exchange_rate/usd_to_{currency}","href":"/api-reference/lookup/get-exchange-rate"},{"title":"List stablebonds","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/stablebonds","href":"/api-reference/lookup/list-stablebonds"},{"title":"Get stablebond","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/stablebond/{identifier}","href":"/api-reference/lookup/get-stablebond"},{"title":"List token costs","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/tokens/cost","href":"/api-reference/lookup/list-token-costs"},{"title":"Get token cost","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/tokens/cost/{identifier}","href":"/api-reference/lookup/get-token-cost"},{"title":"List stablebond costs","deprecated":true,"version":null,"openapi":"/openapi.json get /lookup/bonds/cost","href":"/api-reference/lookup/list-stablebond-costs"},{"title":"Get stablebond cost","deprecated":true,"version":null,"openapi":"/openapi.json get /lookup/bonds/cost/{identifier}","href":"/api-reference/lookup/get-stablebond-cost"},{"title":"List country codes","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/country-codes","href":"/api-reference/lookup/list-country-codes"},{"title":"List restricted countries","deprecated":null,"version":null,"openapi":"/openapi.json get /lookup/restricted-countries","href":"/api-reference/lookup/list-restricted-countries"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]}]},"title":"Get KYC status - Etherfuse API","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}