dateOfBirth must be a date in YYYY-MM-DD format; country 'MX' is not a recognized ISO 3166-1 alpha-3 country code (e.g. MEX); address.city is required
This customer's verification is already approved; it cannot be modified
KYC
Submit verification data
First call in the KYC API flow. Nothing else is accepted before it: country is what routes the customer to their country’s requirements.
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.
Re-submitting overwrites what was sent before, and never moves the customer’s review status on its own. Personal accounts only.
The customer's country, as an ISO 3166-1 alpha-3 code. Alpha-2 codes and country names are rejected. This is the one country field for the customer (there is no separate nationality), and its value routes them to their country's requirements.
Information beyond the standard personal data, which some verifications ask for.
Show child attributes
Response
Accepted and being applied. The customer's current verification status is returned.
Where the customer's verification stands after a partner write. status is the same value GET /ramp/customer/{customer_id}/kyc reports, so there is one vocabulary across both.
The customer's overall verification status. A write never moves it on its own.
Available options:
not_started,
in_progress,
submitted,
approved,
denied
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Etherfuse API","colors":{"primary":"#141414","light":"#E4FF3F","dark":"#141414"},"logo":{"light":"https://mintcdn.com/etherfuse/XRSchVFGUgreQatD/img/logo-black.svg?fit=max\u0026auto=format\u0026n=XRSchVFGUgreQatD\u0026q=85\u0026s=92cf84eca27df4a19f7b032da398d110","dark":"https://mintcdn.com/etherfuse/XRSchVFGUgreQatD/img/logo-white.svg?fit=max\u0026auto=format\u0026n=XRSchVFGUgreQatD\u0026q=85\u0026s=7c87780c9a248347ffe6357ccf6762ed","href":"https://etherfuse.com"},"favicon":"https://mintcdn.com/etherfuse/pF4txuzXWQE790kS/img/favicon.png?fit=max\u0026auto=format\u0026n=pF4txuzXWQE790kS\u0026q=85\u0026s=ac74be5f7f4605e75bc961be0c6e5ff9","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"],"autogenerate":true}},"navbar":{"links":[{"href":"https://cal.com/team/etherfuse/api-overview?overlayCalendar=true","label":"Book a demo"},{"href":"https://app.etherfuse.com","label":"App"}],"primary":{"type":"button","label":"Get sandbox keys","href":"https://sandbox.etherfuse.com/sign-in?returnTo=%2Faccount%2Fmanage"}},"footer":{"links":[{"items":[{"label":"Website","href":"https://etherfuse.com"},{"label":"App","href":"https://app.etherfuse.com"},{"label":"Book a demo","href":"https://cal.com/team/etherfuse/api-overview?overlayCalendar=true"}]}]},"fonts":{"family":"Figtree"},"integrations":{"posthog":{"apiKey":"phc_vJEpZk4aZr9PxdPqapjg8ZKWFybTTmDvAxZNg88LTuPu","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"etherfuse","hasAudioNarration":false,"actualSubdomain":"etherfuse","customDomains":["docs.etherfuse.com"],"gitSource":{"type":"github","owner":"etherfuse","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb8162facd9ad474429494","collectionId":"dd2a2329-87a0-4f80-8d74-c86f460a61d1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb8162facd9ad474429494"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aed0270f4f76f7f720c87e8","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":152},{"language":"default","tag":"Ramp API","count":72},{"language":"default","tag":"Guides","count":64},{"language":"default","tag":"KYC","count":20},{"language":"default","tag":"Lookup API","count":19},{"language":"default","tag":"Orders","count":17},{"language":"default","tag":"Organizations","count":16},{"language":"default","tag":"User Authentication","count":12},{"language":"default","tag":"Blockchains","count":12},{"language":"default","tag":"Integration Guides","count":11}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"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":"rbac-expansion","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":"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":"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":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","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:0.75rem;border:1px solid #141414;background-color:#e4ff3f;color:#141414!important;text-decoration:none;transition:background-color 0.15s ease, box-shadow 0.15s ease}.sandbox-playground-cta:hover{background-color:#d8f32f;box-shadow:0 2px 8px rgba(20, 20, 20, 0.12);color:#141414!important}.sandbox-playground-cta__title,.sandbox-playground-cta__body,.sandbox-playground-cta__detail{color:inherit!important}.dark .sandbox-playground-cta{border-color:#e4ff3f;background-color:#e4ff3f;color:#141414!important}.dark .sandbox-playground-cta:hover{background-color:#d8f32f;color:#141414!important}.sandbox-playground-cta__title{display:block;font-size:1rem;font-weight:600;margin-bottom:0.35rem}.sandbox-playground-cta__body{display:block;font-size:0.95rem;line-height:1.45;font-weight:500}.sandbox-playground-cta__detail{display:block;margin-top:0.35rem;font-size:0.85rem;line-height:1.45;opacity:0.85}"}],"page":{"pagePath":"api-reference/kyc/submit-verification-data","slug":"/api-reference/kyc/submit-verification-data","pageMetadata":{"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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"First call in the \", _jsx(_components.a, {\n href: \"/guides/kyc-api\",\n children: \"KYC API\"\n }), \" flow. Nothing else is accepted before it: \", _jsx(_components.code, {\n children: \"country\"\n }), \" is what routes the customer to their country’s requirements.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsxs(_components.strong, {\n children: [\"Answers \", _jsx(_components.code, {\n children: \"202\"\n }), \", not \", _jsx(_components.code, {\n children: \"200\"\n }), \".\"]\n }), \" The request is validated before we answer; recording it upstream happens after. A \", _jsx(_components.code, {\n children: \"202\"\n }), \" means accepted, not satisfied. Read the result from the \", _jsx(_components.code, {\n children: \"kyc_updated\"\n }), \" webhook or \", _jsx(_components.a, {\n href: \"/api-reference/kyc/get-kyc-status\",\n children: _jsx(_components.code, {\n children: \"GET /ramp/customer/{customer_id}/kyc?requirements=true\"\n })\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Re-submitting overwrites what was sent before, and never moves the customer’s review status on its own. Personal accounts only.\"\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["KYC"],"summary":"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.","operationId":"submit_verification","parameters":["ab39384f-7dd1-4659-b71e-7da5707f8baa"],"requestBody":"9ee90d37-cf6f-4f17-8b14-ba06b6dc07d9","responses":{"202":"207ebca5-8083-45a8-885b-41638982bc63","400":"54e16515-8a7d-48c0-8ddd-ba2ea2354be7","404":"385d170c-ea4b-44d3-9381-4bb820112cb2","409":"9e9646bf-c3b5-4286-8d57-3206ee6958e2"},"method":"post","type":"path","servers":["dfcc036b-8292-4b23-b2e0-6d8e5bbce57d"],"security":["377cbe46-22bb-44bd-bda8-4347354be712"],"path":"/ramp/customer/{customer_id}/verification","baseUrlOptions":["https://api.sand.etherfuse.com"],"title":"Submit verification data","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ab39384f-7dd1-4659-b71e-7da5707f8baa":{"name":"customer_id","in":"path","description":"The customer (child org) ID. Must belong to the caller's organization or a direct child.","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"The customer (child org) ID. Must belong to the caller's organization or a direct child.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Personal data a partner submits on the customer's behalf. A Mexican customer (`country: \"MEX\"`) needs a CURP and RFC to complete verification.","required":["firstName","lastName","dateOfBirth","taxId","country","address"],"properties":{"firstName":{"type":"string","isRequired":true,"uniqueKey":"firstName","typeLabel":"string"},"lastName":{"type":"string","isRequired":true,"uniqueKey":"lastName","typeLabel":"string"},"dateOfBirth":{"type":"string","description":"`YYYY-MM-DD`. Any other format is a 400.","example":"1990-01-01","isRequired":true,"uniqueKey":"dateOfBirth","typeLabel":"string"},"taxId":{"type":"string","description":"The customer's tax identification number. The RFC for a Mexican customer.","example":"XAXX010101000","isRequired":true,"uniqueKey":"taxId","typeLabel":"string"},"country":{"type":"string","description":"The customer's country, as an ISO 3166-1 alpha-3 code. Alpha-2 codes and country names are rejected. This is the one country field for the customer (there is no separate nationality), and its value routes them to their country's requirements.","example":"MEX","isRequired":true,"uniqueKey":"country","typeLabel":"string"},"address":{"type":"object","description":"The customer's residential address. Required, and it must match the identity document you upload; the provider cross-checks the two.","required":["street","city","country"],"properties":{"street":{"type":"string","example":"Av. Reforma 100","isRequired":true,"uniqueKey":"address.street","typeLabel":"string"},"city":{"type":"string","example":"Ciudad de Mexico","isRequired":true,"uniqueKey":"address.city","typeLabel":"string"},"country":{"type":"string","description":"ISO 3166-1 alpha-3.","example":"MEX","isRequired":true,"uniqueKey":"address.country","typeLabel":"string"},"region":{"oneOf":[{"type":"string","description":"State or province.","example":"CDMX","uniqueKey":"address.region.oneOf.0","typeLabel":"string"},{"type":"null","description":"State or province.","example":"CDMX","uniqueKey":"address.region.oneOf.1","typeLabel":"null"}],"uniqueKey":"address.region","typeLabel":"string | null"},"postalCode":{"oneOf":[{"type":"string","description":"Optional, because some countries issue none. Send it when the country has one.","example":"06600","uniqueKey":"address.postalCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional, because some countries issue none. Send it when the country has one.","example":"06600","uniqueKey":"address.postalCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"address.postalCode","typeLabel":"string | null"},"buildingNumber":{"oneOf":[{"type":"string","uniqueKey":"address.buildingNumber.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"address.buildingNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"address.buildingNumber","typeLabel":"string | null"},"flatNumber":{"oneOf":[{"type":"string","uniqueKey":"address.flatNumber.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"address.flatNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"address.flatNumber","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"address","typeLabel":"object"},"additionalInfo":{"type":"object","description":"Information beyond the standard personal data, which some verifications ask for.","properties":{"curp":{"oneOf":[{"type":"string","minLength":18,"maxLength":18,"pattern":"^[A-Za-z0-9]{18}$","description":"The customer's CURP. A Mexican customer (`country: \"MEX\"`) needs one to complete verification. Send it here, or the customer enters it in the [`/idv` launch](/guides/kyc-websdk).","example":"XEXX010101HNEXXXA4","uniqueKey":"additionalInfo.curp.oneOf.0","typeLabel":"string"},{"type":"null","minLength":18,"maxLength":18,"pattern":"^[A-Za-z0-9]{18}$","description":"The customer's CURP. A Mexican customer (`country: \"MEX\"`) needs one to complete verification. Send it here, or the customer enters it in the [`/idv` launch](/guides/kyc-websdk).","example":"XEXX010101HNEXXXA4","uniqueKey":"additionalInfo.curp.oneOf.1","typeLabel":"null"}],"uniqueKey":"additionalInfo.curp","typeLabel":"string | null"}},"uniqueKey":"additionalInfo","typeLabel":"object"}},"example":{"firstName":"Ana","lastName":"Ejemplo","dateOfBirth":"1990-01-01","taxId":"XAXX010101000","additionalInfo":{"curp":"XEXX010101HNEXXXA4"},"country":"MEX","address":{"street":"Av. Reforma 100","city":"Ciudad de Mexico","region":"CDMX","postalCode":"06600","country":"MEX"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"firstName":"Ana","lastName":"Ejemplo","dateOfBirth":"1990-01-01","taxId":"XAXX010101000","additionalInfo":{"curp":"XEXX010101HNEXXXA4"},"country":"MEX","address":{"street":"Av. Reforma 100","city":"Ciudad de Mexico","region":"CDMX","postalCode":"06600","country":"MEX"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"207ebca5-8083-45a8-885b-41638982bc63":{"description":"Accepted and being applied. The customer's current verification status is returned.","content":{"application/json":{"schema":{"type":"object","description":"Where the customer's verification stands after a partner write. `status` is the same value `GET /ramp/customer/{customer_id}/kyc` reports, so there is one vocabulary across both.","required":["customerId","status"],"properties":{"customerId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"customerId","typeLabel":"string\u003cuuid>"},"status":{"type":"string","description":"The customer's overall verification status. A write never moves it on its own.","enum":["not_started","in_progress","submitted","approved","denied"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"}},"example":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"in_progress"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"in_progress"}}},"exampleType":"generated"}},"exampleType":"generated"},"54e16515-8a7d-48c0-8ddd-ba2ea2354be7":{"description":"Validation failed. The plain text body lists every missing or invalid field at once, including a `country` that is not ISO 3166-1 alpha-3. Also returned when the customer is a business account, which verifies through [KYB](/guides/kyb).","content":{"text/plain":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"example":"dateOfBirth must be a date in YYYY-MM-DD format; country 'MX' is not a recognized ISO 3166-1 alpha-3 country code (e.g. MEX); address.city is required","examples":{"Example":{"title":"Example","value":"dateOfBirth must be a date in YYYY-MM-DD format; country 'MX' is not a recognized ISO 3166-1 alpha-3 country code (e.g. MEX); address.city is required"}},"exampleType":"examples"}},"exampleType":"examples"},"385d170c-ea4b-44d3-9381-4bb820112cb2":{"description":"No organization exists with that `customer_id`, or it is not a customer of your organization.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"9e9646bf-c3b5-4286-8d57-3206ee6958e2":{"description":"This customer's verification is already approved or denied and cannot be modified. A denied customer resubmits by being launched into the hosted step, not over the API.","content":{"text/plain":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"example":"This customer's verification is already approved; it cannot be modified","examples":{"Example":{"title":"Example","value":"This customer's verification is already approved; it cannot be modified"}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"377cbe46-22bb-44bd-bda8-4347354be712":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header.","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"dfcc036b-8292-4b23-b2e0-6d8e5bbce57d":{"url":"https://api.sand.etherfuse.com","description":"Sandbox"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"API key sent in the Authorization header.","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"API key sent in the Authorization header.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"etherfuse","siteName":"Etherfuse API","title":"Submit verification data - Etherfuse API","navMaps":{"firstHrefInVersion":{"v2 (beta)":{"href":"/v2/api-reference/kyc/submit-verification-data","matchLevel":1},"v1 (legacy)":{"href":"/api-reference/kyc/submit-verification-data","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T19:03:06.217Z","originalFileLocation":"api-reference/kyc/submit-verification-data.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=\"First call in the KYC API flow. Nothing else is accepted before it: country is what routes the customer to their country\u0026#x27;s requirements. 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. Re-submitting overwrites what was sent before, and never moves the customer\u0026#x27;s review status on its own. Personal accounts only.\">\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=\"Submit verification data - Etherfuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"First call in the KYC API flow. Nothing else is accepted before it: country is what routes the customer to their country\u0026#x27;s requirements. 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. Re-submitting overwrites what was sent before, and never moves the customer\u0026#x27;s review status on its own. Personal accounts only.\">\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/submit-verification-data\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://etherfuse.mintlify.site/_mintlify/api/og/v2?division=KYC\u0026amp;title=Submit+verification+data\u0026amp;description=First+call+in+the+%5BKYC+API%5D%28%2Fguides%2Fkyc-api%29+flow.+Nothing+else+is+accepted+before+it%3A+%60country%60+is+what+routes+the+customer+to+their+country%27s+requirements.%0A%0A*\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=03c419bb206b3dee938d58fd17678a3366f9114c37495a0257b4bd34adcd1a42\">\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=\"Submit verification data - Etherfuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"First call in the KYC API flow. Nothing else is accepted before it: country is what routes the customer to their country\u0026#x27;s requirements. 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. Re-submitting overwrites what was sent before, and never moves the customer\u0026#x27;s review status on its own. Personal accounts only.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://etherfuse.mintlify.site/_mintlify/api/og/v2?division=KYC\u0026amp;title=Submit+verification+data\u0026amp;description=First+call+in+the+%5BKYC+API%5D%28%2Fguides%2Fkyc-api%29+flow.+Nothing+else+is+accepted+before+it%3A+%60country%60+is+what+routes+the+customer+to+their+country%27s+requirements.%0A%0A*\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=03c419bb206b3dee938d58fd17678a3366f9114c37495a0257b4bd34adcd1a42\">\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/submit-verification-data\">\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/submit-verification-data.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/submit-verification-data#webpage\",\"url\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data\",\"name\":\"Submit verification data\",\"description\":\"First call in the KYC API flow. Nothing else is accepted before it: country is what routes the customer to their country's requirements. 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. Re-submitting overwrites what was sent before, and never moves the customer's review status on its own. Personal accounts only.\",\"dateModified\":\"2026-11-04T19:03:06.217Z\",\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ramp API\",\"item\":\"https://docs.etherfuse.com/api-reference/assets/list-assets\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KYC\",\"item\":\"https://docs.etherfuse.com/api-reference/kyc/get-kyc-status\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Submit verification data\",\"item\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data#apireference\",\"headline\":\"Submit verification data\",\"name\":\"Submit verification data\",\"description\":\"First call in the KYC API flow. Nothing else is accepted before it: country is what routes the customer to their country's requirements. 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. Re-submitting overwrites what was sent before, and never moves the customer's review status on its own. Personal accounts only.\",\"url\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data\",\"mainEntityOfPage\":{\"@id\":\"https://docs.etherfuse.com/api-reference/kyc/submit-verification-data#webpage\"},\"dateModified\":\"2026-11-04T19:03:06.217Z\",\"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/submit-verification-data"}]},{"version":"v1 (legacy)","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"API Authentication","href":"/authentication"},{"title":"Errors","href":"/errors"},{"title":"Pagination","href":"/pagination"},{"title":"Idempotency","href":"/idempotency"},{"group":"User Authentication","icon":"key","pages":[{"openapi":"openapi.json POST /auth/launch","title":"Launch a user into the app","href":"/api-reference/authentication/launch-a-user-into-the-app"},{"openapi":"openapi.json GET /auth/launch","title":"Launch a user via postMessage","href":"/api-reference/launch-via-postmessage"},{"title":"Exchange a partner JWT","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/token","href":"/api-reference/authentication/exchange-a-partner-jwt"}]},{"group":"Ramp API","icon":"money-bill-transfer","pages":[{"group":"Assets","icon":"coins","pages":[{"title":"List assets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/assets","href":"/api-reference/assets/list-assets"},{"title":"Get one wallet's balances","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/balances","href":"/api-reference/assets/get-one-wallets-balances"}]},{"group":"Bank Accounts","icon":"building-columns","pages":[{"title":"Create bank account (presigned)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-account","href":"/api-reference/bank-accounts/create-bank-account-presigned"},{"title":"Get bank account","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-account/{bank_account_id}","href":"/api-reference/bank-accounts/get-bank-account"},{"title":"List bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-accounts","href":"/api-reference/bank-accounts/list-bank-accounts"},{"title":"Search bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-accounts","href":"/api-reference/bank-accounts/search-bank-accounts"},{"title":"Create bank account (API)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-account","href":"/api-reference/bank-accounts/create-bank-account-api"},{"title":"List customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/list-customer-accounts"},{"title":"Search customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/search-customer-accounts"}]},{"group":"Quotes","icon":"tag","pages":[{"title":"Get quote","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/quote","href":"/api-reference/quotes/get-quote"}]},{"group":"Orders","icon":"receipt","pages":[{"title":"Create order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order","href":"/api-reference/orders/create-order"},{"title":"Get order","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}","href":"/api-reference/orders/get-order"},{"title":"Cancel order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/cancel","href":"/api-reference/orders/cancel-order"},{"title":"Regenerate tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/regenerate_tx","href":"/api-reference/orders/regenerate-tx"},{"title":"Get order approval","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}/approvals","href":"/api-reference/orders/get-order-approval"},{"title":"Submit order approval","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/approvals","href":"/api-reference/orders/submit-order-approval"},{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/orders","href":"/api-reference/orders/list-orders"},{"title":"Search orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/orders","href":"/api-reference/orders/search-orders"},{"title":"List customer orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/list-customer-orders"},{"title":"Search customer orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/search-customer-orders"}]},{"group":"Statements","icon":"file-invoice-dollar","pages":[{"title":"List partner statements","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements","href":"/api-reference/statements/list-partner-statements"},{"title":"Download statement CSV","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/csv","href":"/api-reference/statements/download-statement-csv"},{"title":"Download statement PDF","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/pdf","href":"/api-reference/statements/download-statement-pdf"}]},{"group":"WebSocket","icon":"plug","pages":[{"title":"Mint WebSocket token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/ws-api-token","href":"/api-reference/websocket/mint-websocket-token"},{"title":"Connect to the live update stream","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/ws","href":"/api-reference/websocket/connect-to-the-live-update-stream"}]},{"group":"Swaps","icon":"right-left","pages":[{"title":"Swap assets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap","href":"/api-reference/swaps/swap-assets"},{"title":"Regenerate swap tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap/{order_id}/regenerate_tx","href":"/api-reference/swaps/regenerate-swap-tx"}]},{"group":"Sponsored","icon":"hand-holding-dollar","pages":[{"title":"Approve EVM token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/evm/approve","href":"/api-reference/sponsored/approve-evm-token"}]},{"group":"Customers","icon":"users","pages":[{"title":"Search customers","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customers","href":"/api-reference/customers/search-customers"},{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customers","href":"/api-reference/customers/list-customers"},{"title":"Get customer","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}","href":"/api-reference/customers/get-customer"},{"title":"List a customer's organizations","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/organization","href":"/api-reference/customers/list-a-customers-organizations"}]},{"group":"Wallets","icon":"wallet","pages":[{"title":"Register wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallet","href":"/api-reference/wallets/register-wallet"},{"title":"Get wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Delete wallet","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/delete-wallet"},{"title":"List wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Search wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallets","href":"/api-reference/wallets/search-wallets"},{"title":"Register customer wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallet","href":"/api-reference/wallets/register-customer-wallet"},{"title":"List customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/list-customer-wallets"},{"title":"Search customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/search-customer-wallets"}]},{"group":"KYC","icon":"id-card","pages":[{"title":"Get KYC status","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"},{"title":"Submit verification data","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification","href":"/api-reference/kyc/submit-verification-data"},{"title":"Upload verification documents","description":"Upload the customer's documents as `multipart/form-data`. Send at least one of `id_front`, `id_back`, or `proof_of_address`.\n\n**Submit the customer's personal data first.** Until [`POST /ramp/customer/{customer_id}/verification`](/api-reference/kyc/submit-verification-data) has run the customer has no stages to upload against, so this answers `409`.\n\n**Answers `202`, not `200`.** Every part is read and checked before we answer; the upload itself is upstream work the caller shouldn't wait on. Watch [`GET /ramp/customer/{customer_id}/kyc?requirements=true`](/api-reference/kyc/get-kyc-status) for the requirement to go satisfied.\n\n**Upload what the current stage asks for.** Send a document once its requirement is listed. The exception is `proof_of_address`: you may send it with the identity document, before its own stage, as long as the identity stage has not been submitted yet. After that, wait for `proof_of_address` to be listed. See [Requirements unlock in stages](/guides/onboarding#requirements-unlock-in-stages).","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"}]}]}]},"basePath":"","title":"Submit verification data - Etherfuse API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}