{ "kyc_updated": { "customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "walletPublicKey": "9Qx7rGN1kP2mL3nO4pQ5sR6tU7vW8xY9zA0bC1dE2fG", "approved": false, "updateReason": "ID document is expired", "needsWork": true, "userMessage": "Please upload a current government-issued ID." }}
Webhook Events
Kyc updated
Fired whenever a customer’s KYC status changes, and when a write you sent was accepted but could not be applied.
The status field is one of not_started, in_progress, submitted, approved, denied (see the payload schema); approved: bool is kept for back-compat. KYC is org-level, so customerId is the identifier to key on and walletPublicKey is best-effort and may be empty.
On a denial, updateReason and userMessage explain what needs to be corrected. When needsWork is true, the customer can resubmit without creating a new KYC request.
needsWork also arrives without a status change, when one of the verification endpoints answered 202 and the work then failed. status is the customer’s current status, unchanged, and userMessage names what to send again. See KYC API error handling.
WEBHOOK
kycUpdated
{ "kyc_updated": { "customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "walletPublicKey": "9Qx7rGN1kP2mL3nO4pQ5sR6tU7vW8xY9zA0bC1dE2fG", "approved": false, "updateReason": "ID document is expired", "needsWork": true, "userMessage": "Please upload a current government-issued ID." }}
{"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":"6aeb8162facd9ad474429494","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":151},{"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":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":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":"vite-origin","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}],"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/webhooks/kyc_updated","slug":"/api-reference/webhooks/kyc_updated","pageMetadata":{"title":"Kyc updated","description":"Fired whenever a customer's KYC status changes, and when a write you sent was accepted but could not be applied.\n\nThe `status` field is one of `not_started`, `in_progress`, `submitted`, `approved`, `denied` (see the payload schema); `approved: bool` is kept for back-compat. KYC is org-level, so `customerId` is the identifier to key on and `walletPublicKey` is best-effort and may be empty.\n\nOn a denial, `updateReason` and `userMessage` explain what needs to be corrected. When `needsWork` is `true`, the customer can resubmit without creating a new KYC request.\n\n`needsWork` also arrives **without** a status change, when one of the verification endpoints answered `202` and the work then failed. `status` is the customer's current status, unchanged, and `userMessage` names what to send again. See [KYC API error handling](/guides/kyc-api#error-handling).","version":null,"deprecated":null,"openapi":"/openapi.json webhook kycUpdated","href":"/api-reference/webhooks/kyc_updated","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: [_jsx(_components.p, {\n children: \"Fired whenever a customer’s KYC status changes, and when a write you sent was accepted but could not be applied.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The \", _jsx(_components.code, {\n children: \"status\"\n }), \" field is one of \", _jsx(_components.code, {\n children: \"not_started\"\n }), \", \", _jsx(_components.code, {\n children: \"in_progress\"\n }), \", \", _jsx(_components.code, {\n children: \"submitted\"\n }), \", \", _jsx(_components.code, {\n children: \"approved\"\n }), \", \", _jsx(_components.code, {\n children: \"denied\"\n }), \" (see the payload schema); \", _jsx(_components.code, {\n children: \"approved: bool\"\n }), \" is kept for back-compat. KYC is org-level, so \", _jsx(_components.code, {\n children: \"customerId\"\n }), \" is the identifier to key on and \", _jsx(_components.code, {\n children: \"walletPublicKey\"\n }), \" is best-effort and may be empty.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"On a denial, \", _jsx(_components.code, {\n children: \"updateReason\"\n }), \" and \", _jsx(_components.code, {\n children: \"userMessage\"\n }), \" explain what needs to be corrected. When \", _jsx(_components.code, {\n children: \"needsWork\"\n }), \" is \", _jsx(_components.code, {\n children: \"true\"\n }), \", the customer can resubmit without creating a new KYC request.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"needsWork\"\n }), \" also arrives \", _jsx(_components.strong, {\n children: \"without\"\n }), \" a status change, when one of the verification endpoints answered \", _jsx(_components.code, {\n children: \"202\"\n }), \" and the work then failed. \", _jsx(_components.code, {\n children: \"status\"\n }), \" is the customer’s current status, unchanged, and \", _jsx(_components.code, {\n children: \"userMessage\"\n }), \" names what to send again. See \", _jsx(_components.a, {\n href: \"/guides/kyc-api#error-handling\",\n children: \"KYC API error handling\"\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":"Kyc updated","description":"Fired whenever a customer's KYC status changes, and when a write you sent was accepted but could not be applied.\n\nThe `status` field is one of `not_started`, `in_progress`, `submitted`, `approved`, `denied` (see the payload schema); `approved: bool` is kept for back-compat. KYC is org-level, so `customerId` is the identifier to key on and `walletPublicKey` is best-effort and may be empty.\n\nOn a denial, `updateReason` and `userMessage` explain what needs to be corrected. When `needsWork` is `true`, the customer can resubmit without creating a new KYC request.\n\n`needsWork` also arrives **without** a status change, when one of the verification endpoints answered `202` and the work then failed. `status` is the customer's current status, unchanged, and `userMessage` names what to send again. See [KYC API error handling](/guides/kyc-api#error-handling).","version":null,"deprecated":null,"openapi":"/openapi.json webhook kycUpdated","href":"/api-reference/webhooks/kyc_updated","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"kyc_updated","operationId":"kycUpdatedWebhook","description":"Fired whenever a customer's KYC status changes, and when a write you sent was accepted but could not be applied.\n\nThe `status` field is one of `not_started`, `in_progress`, `submitted`, `approved`, `denied` (see the payload schema); `approved: bool` is kept for back-compat. KYC is org-level, so `customerId` is the identifier to key on and `walletPublicKey` is best-effort and may be empty.\n\nOn a denial, `updateReason` and `userMessage` explain what needs to be corrected. When `needsWork` is `true`, the customer can resubmit without creating a new KYC request.\n\n`needsWork` also arrives **without** a status change, when one of the verification endpoints answered `202` and the work then failed. `status` is the customer's current status, unchanged, and `userMessage` names what to send again. See [KYC API error handling](/guides/kyc-api#error-handling).","parameters":["c0f7867e-8147-45e1-ac7e-de5c332e07ca"],"requestBody":"fd3d7624-85a5-4206-8ed7-bb52b6353ad0","responses":{"200":"71fbef85-b7e3-42eb-b549-2df27a48b88a"},"tags":["Webhooks"],"method":"post","type":"webhook","servers":["dfcc036b-8292-4b23-b2e0-6d8e5bbce57d"],"security":["377cbe46-22bb-44bd-bda8-4347354be712"],"path":"kycUpdated","baseUrlOptions":["https://api.sand.etherfuse.com"],"title":"kyc_updated","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExamples":[{"language":"json","filename":"Example","code":"{\n \"kyc_updated\": {\n \"customerId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"walletPublicKey\": \"9Qx7rGN1kP2mL3nO4pQ5sR6tU7vW8xY9zA0bC1dE2fG\",\n \"approved\": false,\n \"updateReason\": \"ID document is expired\",\n \"needsWork\": true,\n \"userMessage\": \"Please upload a current government-issued ID.\"\n }\n}"}],"requestExampleType":"webhook","responseExampleType":"generated"},"dependencies":{"parameters":{"c0f7867e-8147-45e1-ac7e-de5c332e07ca":{"name":"X-Signature","in":"header","required":true,"description":"HMAC-SHA256 signature: `sha256={hex}`. Computed over the canonicalized (RFC 8785) request body using your webhook secret.","schema":{"type":"string","isRequired":true,"description":"HMAC-SHA256 signature: `sha256={hex}`. Computed over the canonicalized (RFC 8785) request body using your webhook secret.","uniqueKey":"","typeLabel":"string"},"example":"sha256=a1b2c3d4e5f6..."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Webhook envelope for KYC review decisions.","required":["kyc_updated"],"properties":{"kyc_updated":{"type":"object","description":"Payload for `kyc_updated` webhooks.","required":["customerId","walletPublicKey","status","approved"],"properties":{"customerId":{"type":"string","format":"uuid","description":"ID of the customer (organization) whose KYC status changed.","isRequired":true,"uniqueKey":"kyc_updated.customerId","typeLabel":"string\u003cuuid>"},"walletPublicKey":{"type":"string","description":"Public key of the wallet the KYC decision applies to. KYC is org-level, so this is best-effort; it may be an empty string when the change isn't tied to a specific wallet (e.g. a move to `in_progress`/`submitted`). Key on `customerId`.","isRequired":true,"uniqueKey":"kyc_updated.walletPublicKey","typeLabel":"string"},"status":{"type":"string","description":"The customer's unified KYC status after this change.\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 `updateReason`)","enum":["not_started","in_progress","submitted","approved","denied"],"isRequired":true,"uniqueKey":"kyc_updated.status","typeLabel":"enum\u003cstring>"},"approved":{"type":"boolean","description":"Whether KYC is now approved. Kept for back-compat; equivalent to `status == \"approved\"`.","isRequired":true,"uniqueKey":"kyc_updated.approved","typeLabel":"boolean"},"updateReason":{"oneOf":[{"type":"string","description":"Human-readable reason for the status change (present on rejections).","uniqueKey":"kyc_updated.updateReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable reason for the status change (present on rejections).","uniqueKey":"kyc_updated.updateReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"kyc_updated.updateReason","typeLabel":"string | null"},"needsWork":{"oneOf":[{"type":"boolean","description":"Whether the submission has been flagged as needing corrections before re-review.","uniqueKey":"kyc_updated.needsWork.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the submission has been flagged as needing corrections before re-review.","uniqueKey":"kyc_updated.needsWork.oneOf.1","typeLabel":"null"}],"uniqueKey":"kyc_updated.needsWork","typeLabel":"boolean | null"},"userMessage":{"oneOf":[{"type":"string","description":"User-facing message explaining what needs to be fixed.","uniqueKey":"kyc_updated.userMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-facing message explaining what needs to be fixed.","uniqueKey":"kyc_updated.userMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"kyc_updated.userMessage","typeLabel":"string | null"}},"example":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","walletPublicKey":"9Qx7rGN1kP2mL3nO4pQ5sR6tU7vW8xY9zA0bC1dE2fG","status":"approved","approved":true,"updateReason":null,"needsWork":null,"userMessage":null},"isRequired":true,"uniqueKey":"kyc_updated","typeLabel":"object"}},"example":{"kyc_updated":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","walletPublicKey":"9Qx7rGN1kP2mL3nO4pQ5sR6tU7vW8xY9zA0bC1dE2fG","approved":false,"updateReason":"ID document is expired","needsWork":true,"userMessage":"Please upload a current government-issued ID."}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"kyc_updated":{"customerId":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","walletPublicKey":"9Qx7rGN1kP2mL3nO4pQ5sR6tU7vW8xY9zA0bC1dE2fG","approved":false,"updateReason":"ID document is expired","needsWork":true,"userMessage":"Please upload a current government-issued ID."}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"71fbef85-b7e3-42eb-b549-2df27a48b88a":{"description":"Return any `2xx` to acknowledge receipt.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"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":"Kyc updated - Etherfuse API","navMaps":{"firstHrefInVersion":{"v2 (beta)":{"href":"/v2","matchLevel":4},"v1 (legacy)":{"href":"/api-reference/webhooks/kyc_updated","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T19:03:06.422Z","originalFileLocation":"api-reference/webhooks/kyc_updated.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=\"Fired whenever a customer\u0026#x27;s KYC status changes, and when a write you sent was accepted but could not be applied. The status field is one of not_started, in_progress, submitted, approved, denied (see the payload schema); approved: bool is kept for back-compat. KYC is org-level, so customerId is the identifier to key on and walletPublicKey is best-effort and may be empty. On a denial, updateReason and userMessage explain what needs to be corrected. When needsWork is true, the customer can resubmit without creating a new KYC request. needsWork also arrives without a status change, when one of the verification endpoints answered 202 and the work then failed. status is the customer\u0026#x27;s current status, unchanged, and userMessage names what to send again. See KYC API error handling.\">\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=\"Kyc updated - Etherfuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Fired whenever a customer\u0026#x27;s KYC status changes, and when a write you sent was accepted but could not be applied. The status field is one of not_started, in_progress, submitted, approved, denied (see the payload schema); approved: bool is kept for back-compat. KYC is org-level, so customerId is the identifier to key on and walletPublicKey is best-effort and may be empty. On a denial, updateReason and userMessage explain what needs to be corrected. When needsWork is true, the customer can resubmit without creating a new KYC request. needsWork also arrives without a status change, when one of the verification endpoints answered 202 and the work then failed. status is the customer\u0026#x27;s current status, unchanged, and userMessage names what to send again. See KYC API error handling.\">\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/webhooks/kyc_updated\">\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=Webhook+Events\u0026amp;title=Kyc+updated\u0026amp;description=Fired+whenever+a+customer%27s+KYC+status+changes%2C+and+when+a+write+you+sent+was+accepted+but+could+not+be+applied.%0A%0AThe+%60status%60+field+is+one+of+%60not_started%60%2C+%60i\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=f303bb19baa8933bea2e52d2cbcd31d9126e7109388a806eaacc8136a7d9f439\">\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=\"Kyc updated - Etherfuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Fired whenever a customer\u0026#x27;s KYC status changes, and when a write you sent was accepted but could not be applied. The status field is one of not_started, in_progress, submitted, approved, denied (see the payload schema); approved: bool is kept for back-compat. KYC is org-level, so customerId is the identifier to key on and walletPublicKey is best-effort and may be empty. On a denial, updateReason and userMessage explain what needs to be corrected. When needsWork is true, the customer can resubmit without creating a new KYC request. needsWork also arrives without a status change, when one of the verification endpoints answered 202 and the work then failed. status is the customer\u0026#x27;s current status, unchanged, and userMessage names what to send again. See KYC API error handling.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://etherfuse.mintlify.app/_mintlify/api/og/v2?division=Webhook+Events\u0026amp;title=Kyc+updated\u0026amp;description=Fired+whenever+a+customer%27s+KYC+status+changes%2C+and+when+a+write+you+sent+was+accepted+but+could+not+be+applied.%0A%0AThe+%60status%60+field+is+one+of+%60not_started%60%2C+%60i\u0026amp;theme=a63046a1b6875a84019a21bc\u0026amp;signature=f303bb19baa8933bea2e52d2cbcd31d9126e7109388a806eaacc8136a7d9f439\">\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/webhooks/kyc_updated\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/webhooks/kyc_updated.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/webhooks/kyc_updated#webpage\",\"url\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated\",\"name\":\"Kyc updated\",\"description\":\"Fired whenever a customer's KYC status changes, and when a write you sent was accepted but could not be applied. The status field is one of not_started, in_progress, submitted, approved, denied (see the payload schema); approved: bool is kept for back-compat. KYC is org-level, so customerId is the identifier to key on and walletPublicKey is best-effort and may be empty. On a denial, updateReason and userMessage explain what needs to be corrected. When needsWork is true, the customer can resubmit without creating a new KYC request. needsWork also arrives without a status change, when one of the verification endpoints answered 202 and the work then failed. status is the customer's current status, unchanged, and userMessage names what to send again. See KYC API error handling.\",\"dateModified\":\"2026-11-04T19:03:06.422Z\",\"isPartOf\":{\"@id\":\"https://docs.etherfuse.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ramp API\",\"item\":\"https://docs.etherfuse.com/api-reference/assets/list-assets\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhook Events\",\"item\":\"https://docs.etherfuse.com/api-reference/webhooks/order_updated\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kyc updated\",\"item\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated#apireference\",\"headline\":\"Kyc updated\",\"name\":\"Kyc updated\",\"description\":\"Fired whenever a customer's KYC status changes, and when a write you sent was accepted but could not be applied. The status field is one of not_started, in_progress, submitted, approved, denied (see the payload schema); approved: bool is kept for back-compat. KYC is org-level, so customerId is the identifier to key on and walletPublicKey is best-effort and may be empty. On a denial, updateReason and userMessage explain what needs to be corrected. When needsWork is true, the customer can resubmit without creating a new KYC request. needsWork also arrives without a status change, when one of the verification endpoints answered 202 and the work then failed. status is the customer's current status, unchanged, and userMessage names what to send again. See KYC API error handling.\",\"url\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated\",\"mainEntityOfPage\":{\"@id\":\"https://docs.etherfuse.com/api-reference/webhooks/kyc_updated#webpage\"},\"dateModified\":\"2026-11-04T19:03:06.422Z\",\"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"}]},{"version":"v1 (legacy)","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"API Authentication","href":"/authentication"},{"title":"Errors","href":"/errors"},{"title":"Pagination","href":"/pagination"},{"title":"Idempotency","href":"/idempotency"},{"group":"User Authentication","icon":"key","pages":[{"openapi":"openapi.json POST /auth/launch","title":"Launch a user into the app","href":"/api-reference/authentication/launch-a-user-into-the-app"},{"openapi":"openapi.json GET /auth/launch","title":"Launch a user via postMessage","href":"/api-reference/launch-via-postmessage"},{"title":"Exchange a partner JWT","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/token","href":"/api-reference/authentication/exchange-a-partner-jwt"}]},{"group":"Ramp API","icon":"money-bill-transfer","pages":[{"group":"Assets","icon":"coins","pages":[{"title":"List assets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/assets","href":"/api-reference/assets/list-assets"},{"title":"Get one wallet's balances","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/balances","href":"/api-reference/assets/get-one-wallets-balances"}]},{"group":"Bank Accounts","icon":"building-columns","pages":[{"title":"Create bank account (presigned)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-account","href":"/api-reference/bank-accounts/create-bank-account-presigned"},{"title":"Get bank account","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-account/{bank_account_id}","href":"/api-reference/bank-accounts/get-bank-account"},{"title":"List bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/bank-accounts","href":"/api-reference/bank-accounts/list-bank-accounts"},{"title":"Search bank accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/bank-accounts","href":"/api-reference/bank-accounts/search-bank-accounts"},{"title":"Create bank account (API)","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-account","href":"/api-reference/bank-accounts/create-bank-account-api"},{"title":"List customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/list-customer-accounts"},{"title":"Search customer accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/bank-accounts","href":"/api-reference/bank-accounts/search-customer-accounts"}]},{"group":"Quotes","icon":"tag","pages":[{"title":"Get quote","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/quote","href":"/api-reference/quotes/get-quote"}]},{"group":"Orders","icon":"receipt","pages":[{"title":"Create order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order","href":"/api-reference/orders/create-order"},{"title":"Get order","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}","href":"/api-reference/orders/get-order"},{"title":"Cancel order","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/cancel","href":"/api-reference/orders/cancel-order"},{"title":"Regenerate tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/regenerate_tx","href":"/api-reference/orders/regenerate-tx"},{"title":"Get order approval","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/order/{order_id}/approvals","href":"/api-reference/orders/get-order-approval"},{"title":"Submit order approval","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/order/{order_id}/approvals","href":"/api-reference/orders/submit-order-approval"},{"title":"List orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/orders","href":"/api-reference/orders/list-orders"},{"title":"Search orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/orders","href":"/api-reference/orders/search-orders"},{"title":"List customer orders","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/list-customer-orders"},{"title":"Search customer orders","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/orders","href":"/api-reference/orders/search-customer-orders"}]},{"group":"Statements","icon":"file-invoice-dollar","pages":[{"title":"List partner statements","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements","href":"/api-reference/statements/list-partner-statements"},{"title":"Download statement CSV","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/csv","href":"/api-reference/statements/download-statement-csv"},{"title":"Download statement PDF","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/partner-statements/{year}-{month}/pdf","href":"/api-reference/statements/download-statement-pdf"}]},{"group":"WebSocket","icon":"plug","pages":[{"title":"Mint WebSocket token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/ws-api-token","href":"/api-reference/websocket/mint-websocket-token"},{"title":"Connect to the live update stream","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/ws","href":"/api-reference/websocket/connect-to-the-live-update-stream"}]},{"group":"Swaps","icon":"right-left","pages":[{"title":"Swap assets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap","href":"/api-reference/swaps/swap-assets"},{"title":"Regenerate swap tx","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/swap/{order_id}/regenerate_tx","href":"/api-reference/swaps/regenerate-swap-tx"}]},{"group":"Sponsored","icon":"hand-holding-dollar","pages":[{"title":"Approve EVM token","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/evm/approve","href":"/api-reference/sponsored/approve-evm-token"}]},{"group":"Customers","icon":"users","pages":[{"title":"Search customers","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customers","href":"/api-reference/customers/search-customers"},{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customers","href":"/api-reference/customers/list-customers"},{"title":"Get customer","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}","href":"/api-reference/customers/get-customer"},{"title":"List a customer's organizations","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/organization","href":"/api-reference/customers/list-a-customers-organizations"}]},{"group":"Wallets","icon":"wallet","pages":[{"title":"Register wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallet","href":"/api-reference/wallets/register-wallet"},{"title":"Get wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Delete wallet","deprecated":null,"version":null,"openapi":"/openapi.json delete /ramp/wallet/{wallet_id}","href":"/api-reference/wallets/delete-wallet"},{"title":"List wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Search wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/wallets","href":"/api-reference/wallets/search-wallets"},{"title":"Register customer wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallet","href":"/api-reference/wallets/register-customer-wallet"},{"title":"List customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/list-customer-wallets"},{"title":"Search customer wallets","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/wallets","href":"/api-reference/wallets/search-customer-wallets"}]},{"group":"KYC","icon":"id-card","pages":[{"title":"Get KYC status","deprecated":null,"version":null,"openapi":"/openapi.json get /ramp/customer/{customer_id}/kyc","href":"/api-reference/kyc/get-kyc-status"},{"title":"Submit verification data","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification","href":"/api-reference/kyc/submit-verification-data"},{"title":"Upload verification documents","deprecated":null,"version":null,"openapi":"/openapi.json post /ramp/customer/{customer_id}/verification/documents","href":"/api-reference/kyc/upload-verification-documents"},{"title":"Submit a verification questionnaire","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","description":"Fired when a bank account's verification status changes.\n\n**Statuses:** `bank_account_pending` → `bank_account_awaiting_deposit_verification` → `bank_account_active` (or `bank_account_inactive`).\n\nEnable offramps and payouts only after receiving `bank_account_active`.","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","description":"Fired when a business organization's KYB status changes.\n\n**Statuses:** `not_started`, `in_progress` (the customer has something left to submit), `submitted` (everything requested has been submitted or there are open notes, Etherfuse's turn), `approved`, `denied`.\n\nFires only on an actual status transition, never on individual document or answer edits that leave the status unchanged. `approvedAt` is set once the organization is approved.","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":"Kyc updated - Etherfuse API","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}