Receive Platform webhook events and verify that MoonPay sent them.
Register an endpoint in your
webhook settings. Create
one setting for test mode and one setting for live mode. The two settings can
use the same URL.MoonPay sends a webhook when a customer’s KYC status changes. MoonPay also
sends a webhook when a buy transaction changes.
Serve your endpoint over HTTPS.Return a 2xx status code within 5 seconds. A non-2xx response, a timeout, or
a connection error is a failed delivery. MoonPay then retries the event.If the handler needs more than 5 seconds, return 200 first. Process the
event after that response.
MoonPay sends Moonpay-Signature-V2 on each request. Verify that header. The
value has a timestamp and a signature, for example
t=1492774577,s=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd.t is a Unix timestamp. s is a lowercase hex HMAC-SHA256. The signed text is
the timestamp, a period, and the raw request body. The key is your
webhook API key from the
Developers page.MoonPay also sends Moonpay-Signature. Verify Moonpay-Signature-V2.
Verify the signature on your server. Keep the webhook API key off the client.
Read Moonpay-Signature-V2 from the request. Compute the digest from the raw
body. Compare s to that digest with a constant-time check.Return 400 when the header is missing. Return 400 when t or s is
missing. Return 400 when the signature differs.Keep the raw body for the HMAC. A JSON parser changes the bytes. The digest
then does not match.
// Server-side, webhook API keyimport { createHmac, timingSafeEqual } from "node:crypto";import express from "express";const webhookApiKey = "wk_test_123";const app = express();app.post( "/webhooks/moonpay", // The HMAC covers these raw bytes. A parsed body does not. express.raw({ type: "application/json" }), (req, res) => { const header = req.get("Moonpay-Signature-V2"); if (!header) { res.status(400).end(); return; } const timestamp = header .split(",") .find((part) => part.startsWith("t=")) ?.slice(2); const signature = header .split(",") .find((part) => part.startsWith("s=")) ?.slice(2); if (!timestamp || !signature) { res.status(400).end(); return; } const expected = createHmac("sha256", webhookApiKey) .update(`${timestamp}.${req.body.toString("utf8")}`) .digest("hex"); const received = Buffer.from(signature); const computed = Buffer.from(expected); if ( received.length !== computed.length || !timingSafeEqual(received, computed) ) { res.status(400).end(); return; } // A response after 5 seconds is a failed delivery. res.status(200).end(); },);
Your network must permit traffic from these addresses. MoonPay does not send
webhooks from IPv6 addresses. Outbound IPv6 support ended on July 15, 2026.
MoonPay retries a failed delivery. MoonPay stops after 10 attempts.MoonPay can deliver the same event more than once. A repeat delivery uses the
same webhook-id header. A repeat delivery must not change the result of the
first delivery.Events can arrive out of order. Arrival order does not show which payload is
newer.
MoonPay sends customer.identity_status_updated when a customer’s KYC status
changes. The
Customer identity status updated
page lists the fields.The body contains id, type, timestamp, and data. type is
customer.identity_status_updated. webhook-id matches id. Compare
timestamp to choose the newer event.
MoonPay sends transaction_updated when a buy transaction changes. The
transaction updated page
lists the fields. Compare updatedAt on that payload to choose the newer
transaction state.
Use test mode before you use live mode.To receive a webhook on a machine that is not publicly reachable, forward a
local port with ngrok. To inspect a payload without your
own server, use webhook.site.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"MoonPay Developer Docs","description":"Integrate MoonPay's on-ramp, off-ramp, and swap products: widgets, SDKs, and APIs that let your users buy, sell, and swap crypto.","colors":{"primary":"#903DD9","light":"#A473EE","dark":"#903DD9"},"logo":{"light":"https://mintcdn.com/moonpay/BslMWtNt3goK8NG4/images/platform/logo/light.svg?fit=max\u0026auto=format\u0026n=BslMWtNt3goK8NG4\u0026q=85\u0026s=c5835bb4dbc3485f635eb0a055a9aeda","dark":"https://mintcdn.com/moonpay/BslMWtNt3goK8NG4/images/platform/logo/dark.svg?fit=max\u0026auto=format\u0026n=BslMWtNt3goK8NG4\u0026q=85\u0026s=c9414586d4260a86b2ecc81cf3be164b"},"favicon":"https://mintcdn.com/moonpay/ngx7B4NPEl3EzY5E/favicon.svg?fit=max\u0026auto=format\u0026n=ngx7B4NPEl3EzY5E\u0026q=85\u0026s=9873c77c8542701f6ac2203b0e49caf4","api":{"openapi":["https://api.moonpay.com/platform/openapi.json","api-reference/widget/ramps-and-swaps.openapi.json","api-reference/widget/virtual-accounts.openapi.json","api-reference/widget/server-to-server.openapi.json"],"playground":{"display":"simple"}},"appearance":{"default":"dark"},"seo":{"metatags":{"canonical":"https://dev.moonpay.com"}},"integrations":{"ga4":{"measurementId":"G-PPC3SM5WJD"}},"contextual":{"options":["copy","view","mcp","claude","cursor","chatgpt"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Help Center","icon":"life-ring","href":"https://support.moonpay.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moonpay","hasAudioNarration":false,"actualSubdomain":"moonpay","customDomains":["dev.moonpay.com"],"gitSource":{"type":"github","owner":"moonpay","repo":"developer-platform-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee1c8e2fae74618dfa8c80","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Platform","count":95},{"language":"default","tag":"API Reference","count":71},{"language":"default","tag":"SDK Reference","count":56},{"language":"default","tag":"Widget API","count":43},{"language":"default","tag":"Widget","count":41},{"language":"default","tag":"React Native","count":29},{"language":"default","tag":"Platform API","count":28},{"language":"default","tag":"Web","count":20},{"language":"default","tag":"On-Ramp","count":17},{"language":"default","tag":"Customers","count":16}]},"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":"editor-metadata","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":false},"customCss":[],"page":{"pagePath":"api-reference/platform/webhooks/overview","slug":"/api-reference/platform/webhooks/overview","pageMetadata":{"title":"Overview","description":"Receive Platform webhook events and verify that MoonPay sent them.","href":"/api-reference/platform/webhooks/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Receive Platform webhook events and verify that MoonPay sent them.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Register an endpoint in your\n`,_jsx(_components.a,{href:`https://dashboard.moonpay.com/developers/#webhooks`,children:`webhook settings`}),`. Create\none setting for test mode and one setting for live mode. The two settings can\nuse the same URL.`]}),`\n`,_jsx(_components.p,{children:`MoonPay sends a webhook when a customer’s KYC status changes. MoonPay also\nsends a webhook when a buy transaction changes.`}),`\n`,_jsx(Heading,{level:`2`,id:`requirements`,children:`Requirements`}),`\n`,_jsxs(_components.p,{children:[`Serve your endpoint over `,_jsx(_components.code,{children:`HTTPS`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Return a `,_jsx(_components.code,{children:`2xx`}),` status code within 5 seconds. A non-2xx response, a timeout, or\na connection error is a failed delivery. MoonPay then retries the event.`]}),`\n`,_jsxs(_components.p,{children:[`If the handler needs more than 5 seconds, return `,_jsx(_components.code,{children:`200`}),` first. Process the\nevent after that response.`]}),`\n`,_jsx(Heading,{level:`2`,id:`verify-the-signature`,children:`Verify the signature`}),`\n`,_jsxs(_components.p,{children:[`MoonPay sends `,_jsx(_components.code,{children:`Moonpay-Signature-V2`}),` on each request. Verify that header. The\nvalue has a timestamp and a signature, for example\n`,_jsx(_components.code,{children:`t=1492774577,s=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`t`}),` is a Unix timestamp. `,_jsx(_components.code,{children:`s`}),` is a lowercase hex HMAC-SHA256. The signed text is\nthe timestamp, a period, and the raw request body. The key is your\n`,_jsx(_components.a,{href:`https://dashboard.moonpay.com/developers/`,children:`webhook API key`}),` from the\nDevelopers page.`]}),`\n`,_jsxs(_components.p,{children:[`MoonPay also sends `,_jsx(_components.code,{children:`Moonpay-Signature`}),`. Verify `,_jsx(_components.code,{children:`Moonpay-Signature-V2`}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Verify the signature on your server. Keep the webhook API key off the client.`})}),`\n`,_jsxs(_components.p,{children:[`Read `,_jsx(_components.code,{children:`Moonpay-Signature-V2`}),` from the request. Compute the digest from the raw\nbody. Compare `,_jsx(_components.code,{children:`s`}),` to that digest with a constant-time check.`]}),`\n`,_jsxs(_components.p,{children:[`Return `,_jsx(_components.code,{children:`400`}),` when the header is missing. Return `,_jsx(_components.code,{children:`400`}),` when `,_jsx(_components.code,{children:`t`}),` or `,_jsx(_components.code,{children:`s`}),` is\nmissing. Return `,_jsx(_components.code,{children:`400`}),` when the signature differs.`]}),`\n`,_jsx(_components.p,{children:`Keep the raw body for the HMAC. A JSON parser changes the bytes. The digest\nthen does not match.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`49`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`49`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Server-side, webhook API key`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`createHmac`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`timingSafeEqual`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"node:crypto\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` express`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"express\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` webhookApiKey`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"wk_test_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` app`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` express`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`app`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`post`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/webhooks/moonpay\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // The HMAC covers these raw bytes. A parsed body does not.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` express`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`raw`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"application/json\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` header`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` req`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`get`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Moonpay-Signature-V2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`header`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` timestamp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` header`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`split`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\",\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`find`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`part`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` part`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`startsWith`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"t=\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ?.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` header`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`split`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\",\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`find`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`part`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` part`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`startsWith`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"s=\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ?.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`timestamp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` expected`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` createHmac`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sha256\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`webhookApiKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`timestamp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`req`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toString`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"utf8\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`digest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"hex\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` received`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` computed`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`expected`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` received`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` computed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`timingSafeEqual`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`received`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`computed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ) {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // A response after 5 seconds is a failed delivery.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`200`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`ip-addresses`,children:`IP addresses`}),`\n`,_jsx(_components.p,{children:`MoonPay sends webhooks from these IPv4 addresses:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.76.118.184`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.77.238.249`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.79.17.44`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.89.242.107`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.140.248.51`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.159.58.44`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`34.159.89.69`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`35.246.202.26`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`Your network must permit traffic from these addresses. MoonPay does not send\nwebhooks from IPv6 addresses. Outbound IPv6 support ended on July 15, 2026.`}),`\n`,_jsx(Heading,{level:`2`,id:`delivery-and-retries`,children:`Delivery and retries`}),`\n`,_jsx(_components.p,{children:`MoonPay retries a failed delivery. MoonPay stops after 10 attempts.`}),`\n`,_jsxs(_components.p,{children:[`MoonPay can deliver the same event more than once. A repeat delivery uses the\nsame `,_jsx(_components.code,{children:`webhook-id`}),` header. A repeat delivery must not change the result of the\nfirst delivery.`]}),`\n`,_jsx(_components.p,{children:`Events can arrive out of order. Arrival order does not show which payload is\nnewer.`}),`\n`,_jsx(Heading,{level:`2`,id:`events`,children:`Events`}),`\n`,_jsxs(_components.p,{children:[`Each event is an HTTP `,_jsx(_components.code,{children:`POST`}),`. The body is JSON. The `,_jsx(_components.code,{children:`content-type`}),` header is\n`,_jsx(_components.code,{children:`application/json`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`customer-identity-status-updated`,children:`Customer identity status updated`}),`\n`,_jsxs(_components.p,{children:[`MoonPay sends `,_jsx(_components.code,{children:`customer.identity_status_updated`}),` when a customer’s KYC status\nchanges. The\n`,_jsx(_components.a,{href:`/api-reference/platform/webhooks/customer-identity-status-updated`,children:`Customer identity status updated`}),`\npage lists the fields.`]}),`\n`,_jsxs(_components.p,{children:[`The body contains `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`type`}),`, `,_jsx(_components.code,{children:`timestamp`}),`, and `,_jsx(_components.code,{children:`data`}),`. `,_jsx(_components.code,{children:`type`}),` is\n`,_jsx(_components.code,{children:`customer.identity_status_updated`}),`. `,_jsx(_components.code,{children:`webhook-id`}),` matches `,_jsx(_components.code,{children:`id`}),`. Compare\n`,_jsx(_components.code,{children:`timestamp`}),` to choose the newer event.`]}),`\n`,_jsx(Heading,{level:`3`,id:`transaction-updated`,children:`Transaction updated`}),`\n`,_jsxs(_components.p,{children:[`MoonPay sends `,_jsx(_components.code,{children:`transaction_updated`}),` when a buy transaction changes. The\n`,_jsx(_components.a,{href:`/api-reference/widget/webhooks/transaction-updated`,children:`transaction updated`}),` page\nlists the fields. Compare `,_jsx(_components.code,{children:`updatedAt`}),` on that payload to choose the newer\ntransaction state.`]}),`\n`,_jsx(Heading,{level:`2`,id:`test-a-webhook`,children:`Test a webhook`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.a,{href:`/platform/overview/test-mode`,children:`test mode`}),` before you use live mode.`]}),`\n`,_jsxs(_components.p,{children:[`To receive a webhook on a machine that is not publicly reachable, forward a\nlocal port with `,_jsx(_components.a,{href:`https://ngrok.com/`,children:`ngrok`}),`. To inspect a payload without your\nown server, use `,_jsx(_components.a,{href:`https://webhook.site/`,children:`webhook.site`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Overview","description":"Receive Platform webhook events and verify that MoonPay sent them.","href":"/api-reference/platform/webhooks/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Requirements","slug":"requirements","depth":2,"children":[]},{"title":"Verify the signature","slug":"verify-the-signature","depth":2,"children":[]},{"title":"IP addresses","slug":"ip-addresses","depth":2,"children":[]},{"title":"Delivery and retries","slug":"delivery-and-retries","depth":2,"children":[]},{"title":"Events","slug":"events","depth":2,"children":[{"title":"Customer identity status updated","slug":"customer-identity-status-updated","depth":3,"children":[]},{"title":"Transaction updated","slug":"transaction-updated","depth":3,"children":[]}]},{"title":"Test a webhook","slug":"test-a-webhook","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"moonpay","siteName":"MoonPay Developer Docs","title":"Overview - MoonPay Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T00:26:04.932Z","originalFileLocation":"api-reference/platform/webhooks/overview.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=\"dark\"}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=\"Receive Platform webhook events and verify that MoonPay sent them.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MoonPay Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_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/moonpay/Ab1BP3eXcK1clOJ3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Overview - MoonPay Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Receive Platform webhook events and verify that MoonPay sent them.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MoonPay Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://dev.moonpay.com/api-reference/platform/webhooks/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moonpay.mintlify.site/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Overview\u0026amp;description=Receive+Platform+webhook+events+and+verify+that+MoonPay+sent+them.\u0026amp;theme=3c3054a1057728b6fd908044\u0026amp;signature=1fb5e5a43b1718ddbd07015cf1849a33cb7ec7ea00dd26f656f5bc897b0e5d37\">\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=\"Overview - MoonPay Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Receive Platform webhook events and verify that MoonPay sent them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moonpay.mintlify.site/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Overview\u0026amp;description=Receive+Platform+webhook+events+and+verify+that+MoonPay+sent+them.\u0026amp;theme=3c3054a1057728b6fd908044\u0026amp;signature=1fb5e5a43b1718ddbd07015cf1849a33cb7ec7ea00dd26f656f5bc897b0e5d37\">\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/moonpay/Ab1BP3eXcK1clOJ3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MoonPay Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#903DD9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://dev.moonpay.com/api-reference/platform/webhooks/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/platform/webhooks/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://dev.moonpay.com/#organization\",\"name\":\"MoonPay Developer Docs\",\"url\":\"https://dev.moonpay.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moonpay/BslMWtNt3goK8NG4/images/platform/logo/light.svg?fit=max\u0026auto=format\u0026n=BslMWtNt3goK8NG4\u0026q=85\u0026s=c5835bb4dbc3485f635eb0a055a9aeda\"}},{\"@type\":\"WebSite\",\"@id\":\"https://dev.moonpay.com#website\",\"name\":\"MoonPay Developer Docs\",\"url\":\"https://dev.moonpay.com\",\"publisher\":{\"@id\":\"https://dev.moonpay.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview#webpage\",\"url\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview\",\"name\":\"Overview\",\"description\":\"Receive Platform webhook events and verify that MoonPay sent them.\",\"dateModified\":\"2026-10-21T00:26:04.932Z\",\"isPartOf\":{\"@id\":\"https://dev.moonpay.com#website\"},\"breadcrumb\":{\"@id\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"MoonPay Developer Docs\",\"item\":\"https://dev.moonpay.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Overview\",\"item\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview#article\",\"headline\":\"Overview\",\"name\":\"Overview\",\"description\":\"Receive Platform webhook events and verify that MoonPay sent them.\",\"url\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview\",\"mainEntityOfPage\":{\"@id\":\"https://dev.moonpay.com/api-reference/platform/webhooks/overview#webpage\"},\"dateModified\":\"2026-10-21T00:26:04.932Z\",\"publisher\":{\"@id\":\"https://dev.moonpay.com/#organization\"},\"isPartOf\":{\"@id\":\"https://dev.moonpay.com#website\"}}]}\u003c/script>","siteName":"MoonPay Developer Docs","nav":{"global":{"anchors":[{"anchor":"Help Center","icon":"life-ring","href":"https://support.moonpay.com/"}]},"tabs":[{"tab":"Platform","pages":[{"title":"Platform","href":"/platform/overview/introduction"}]},{"tab":"Widget","pages":[{"title":"Widget","href":"/widget/overview"}]},{"tab":"API Reference","dropdowns":[{"dropdown":"Platform API","icon":"code","groups":[{"group":"Documentation","pages":[{"title":"Using the Platform API","href":"/api-reference/platform/documentation/using-the-api"}]},{"group":"Sessions","pages":[{"title":"Create a session","openapi":"POST /platform/v1/sessions","href":"/api-reference/platform/endpoints/sessions/create"},{"title":"Revoke a session","openapi":"DELETE /platform/v1/sessions","href":"/api-reference/platform/endpoints/sessions/revoke"}]},{"group":"Customers","pages":[{"title":"Get a customer","openapi":"GET /platform/v1/customers/{id}","href":"/api-reference/platform/endpoints/customers/get"},{"title":"Get customers by external customer ID","openapi":"GET /platform/v1/customers/ext/{externalCustomerId}","href":"/api-reference/platform/endpoints/customers/get-by-external-id"},{"title":"Submit KYC data","openapi":"PATCH /platform/v1/customers/{id}/kyc","href":"/api-reference/platform/endpoints/customers/submit-kyc"},{"title":"Get a file upload URL","openapi":"POST /platform/v1/customers/{id}/files/upload-url","href":"/api-reference/platform/endpoints/customers/get-upload-url"},{"title":"Confirm uploaded files","openapi":"POST /platform/v1/customers/{id}/files","href":"/api-reference/platform/endpoints/customers/submit-files"},{"title":"Export customer data","openapi":"POST /platform/v1/customers/export","href":"/api-reference/platform/endpoints/customers/export"}]},{"group":"Payment Methods","pages":[{"title":"List payment methods","openapi":"GET /platform/v1/payment-methods","href":"/api-reference/platform/endpoints/payment-methods/list"},{"title":"Delete a payment method","openapi":"DELETE /platform/v1/payment-methods/{paymentMethodId}","href":"/api-reference/platform/endpoints/payment-methods/delete"}]},{"group":"Assets","pages":[{"title":"List assets","openapi":"GET /platform/v1/assets","href":"/api-reference/platform/endpoints/assets/list"}]},{"group":"Quotes","pages":[{"title":"Get a quote","openapi":"POST /platform/v1/quotes/buy","href":"/api-reference/platform/endpoints/quotes/get"}]},{"group":"Transactions","pages":[{"title":"List transactions","openapi":"GET /platform/v1/transactions","href":"/api-reference/platform/endpoints/transactions/list"},{"title":"Get a transaction","openapi":"GET /platform/v1/transactions/{id}","href":"/api-reference/platform/endpoints/transactions/get"},{"title":"Simulate bank-transfer settlement","description":"Sandbox only. Drive a waiting-payment bank-transfer transaction to a terminal outcome without real funds.","openapi":"POST /platform/v1/transactions/{id}/simulate-bank-transfer","href":"/api-reference/platform/endpoints/transactions/simulate-bank-transfer"}]},{"group":"Webhooks","pages":[{"title":"Overview","href":"/api-reference/platform/webhooks/overview"},{"title":"Customer identity status updated","description":"Triggered when a customer's KYC status transitions","openapi":"openapi-webhooks.json webhook customerIdentityStatusUpdated","href":"/api-reference/platform/webhooks/customer-identity-status-updated"}]},{"group":"Objects \u0026 Types","pages":[{"title":"Customer","href":"/api-reference/platform/objects-and-types/customer"},{"title":"Customer export","href":"/api-reference/platform/objects-and-types/customer-export"},{"title":"Transaction","href":"/api-reference/platform/objects-and-types/transaction"},{"title":"Stage","href":"/api-reference/platform/objects-and-types/stage"},{"title":"Stage failure reasons","href":"/api-reference/platform/objects-and-types/stage-failure-reasons"},{"title":"Quote","href":"/api-reference/platform/objects-and-types/quote"},{"title":"Payment Method","href":"/api-reference/platform/objects-and-types/payment-method"},{"title":"Asset","href":"/api-reference/platform/objects-and-types/asset"},{"title":"Fees","href":"/api-reference/platform/objects-and-types/fees"},{"title":"Wallet","href":"/api-reference/platform/objects-and-types/wallet"}]}]},{"dropdown":"Widget API","icon":"window","groups":[{"group":"Overview","pages":[{"title":"Overview","href":"/api-reference/widget/overview"},{"title":"Using the API","href":"/api-reference/widget/using-the-api"},{"title":"Errors","href":"/api-reference/widget/errors"}]},{"group":"Customers","pages":[{"title":"Get customer","openapi":"GET /v1/customers/{customerId}","href":"/api-reference/widget/getcustomer"},{"title":"Get customer by externalId","openapi":"GET /v1/customers/ext/{customerId}","href":"/api-reference/widget/getcustomerbyexternalid"},{"title":"Import customer identity","openapi":"POST /v3/customers/import","href":"/api-reference/widget/importcustomer"}]},{"group":"On-ramp","pages":[{"title":"Get Real-time Buy quote","openapi":"GET /v3/currencies/{currencyCode}/buy_quote","href":"/api-reference/widget/getbuyquote"},{"title":"Get Crypto Currency limits","openapi":"GET /v3/currencies/{currencyCode}/limits","href":"/api-reference/widget/getcurrencylimits"},{"title":"Get Crypto network fees","openapi":"GET /v3/currencies/network_fees","href":"/api-reference/widget/getnetworkfees"},{"title":"Get Buy transaction","openapi":"GET /v1/transactions/{transactionId}","href":"/api-reference/widget/getbuytransaction"},{"title":"List Buy transactions","openapi":"GET /v1/transactions","href":"/api-reference/widget/getbuytransactions"},{"title":"Get Buy transaction by External identifier","openapi":"GET /v1/transactions/ext/{externalTransactionId}","href":"/api-reference/widget/getbuytransactionbyexternalid"}]},{"group":"Off-ramp","pages":[{"title":"Get Sell quote","openapi":"GET /v3/currencies/{currencyCode}/sell_quote","href":"/api-reference/widget/getsellquote"},{"title":"Get Sell transaction","openapi":"GET /v3/sell_transactions/{transactionId}","href":"/api-reference/widget/getselltransaction"},{"title":"List Sell transactions","openapi":"GET /v3/sell_transactions","href":"/api-reference/widget/getselltransactions"},{"title":"Get Sell transaction by External identifier","openapi":"GET /v3/sell_transactions/ext/{externalTransactionId}","href":"/api-reference/widget/getselltransactionbyexternalid"},{"title":"Cancel Sell transaction","openapi":"DELETE /v3/sell_transactions/{transactionId}","href":"/api-reference/widget/cancelselltransaction"},{"title":"Cancel Sell transaction by externalId","openapi":"DELETE /v3/sell_transactions/ext/{transactionId}","href":"/api-reference/widget/webhooks/cancelselltransactionbyexternalid"}]},{"group":"Data","pages":[{"title":"List supported countries","openapi":"GET /v3/countries","href":"/api-reference/widget/getcountries"},{"title":"List supported currencies","openapi":"GET /v3/currencies","href":"/api-reference/widget/getcurrencies"},{"title":"List currencies (v4)","openapi":"GET /v4/currencies","href":"/api-reference/widget/getv4currencies"},{"title":"List available payment methods","openapi":"GET /payments/v1/payment-method-config","href":"/api-reference/widget/listpaymentmethods"},{"title":"Check Customer's IP address","openapi":"GET /v3/ip_address","href":"/api-reference/widget/getipaddress"}]},{"group":"DeFi tokens","pages":[{"title":"Get DeFi token","openapi":"GET /v1/defi/token","href":"/api-reference/widget/getdefitoken"},{"title":"List DeFi tokens","openapi":"GET /v1/defi/tokens","href":"/api-reference/widget/getdefitokens"}]},{"group":"Virtual Accounts","pages":[{"title":"Get virtual accounts","openapi":"GET /v1/virtual-accounts","href":"/api-reference/widget/getvirtualaccounts"},{"title":"Update on ramp virtual account","openapi":"PATCH /v1/virtual-accounts/onramp/{id}","href":"/api-reference/widget/updateonrampvirtualaccount"},{"title":"Get on ramp transactions","openapi":"GET /v1/virtual-accounts/transactions/onramp","href":"/api-reference/widget/getonramptransactions"},{"title":"Get on ramp transaction","openapi":"GET /v1/virtual-accounts/transactions/onramp/{transactionId}","href":"/api-reference/widget/getonramptransaction"},{"title":"Get off ramp transactions","openapi":"GET /v1/virtual-accounts/transactions/offramp","href":"/api-reference/widget/getofframptransactions"},{"title":"Get off ramp transaction","openapi":"GET /v1/virtual-accounts/transactions/offramp/{transactionId}","href":"/api-reference/widget/getofframptransaction"}]},{"group":"Webhooks","pages":[{"title":"Overview","href":"/api-reference/widget/webhooks/overview"},{"title":"Request signing","href":"/api-reference/widget/webhooks/signature"},{"group":"Buy","pages":[{"title":"transaction_created","openapi":"api-reference/widget/webhooks.openapi.json webhook transaction_created","href":"/api-reference/widget/webhooks/transaction-created"},{"title":"transaction_updated","openapi":"api-reference/widget/webhooks.openapi.json webhook transaction_updated","href":"/api-reference/widget/webhooks/transaction-updated"},{"title":"transaction_failed","openapi":"api-reference/widget/webhooks.openapi.json webhook transaction_failed","href":"/api-reference/widget/webhooks/transaction-failed"}]},{"group":"Sell","pages":[{"title":"sell_transaction_created","openapi":"api-reference/widget/webhooks.openapi.json webhook sell_transaction_created","href":"/api-reference/widget/webhooks/sell-transaction-created"},{"title":"sell_transaction_updated","openapi":"api-reference/widget/webhooks.openapi.json webhook sell_transaction_updated","href":"/api-reference/widget/webhooks/sell-transaction-updated"},{"title":"sell_transaction_failed","openapi":"api-reference/widget/webhooks.openapi.json webhook sell_transaction_failed","href":"/api-reference/widget/webhooks/sell-transaction-failed"},{"title":"sell_transaction_requote_required","openapi":"api-reference/widget/webhooks.openapi.json webhook sell_transaction_requote_required","href":"/api-reference/widget/webhooks/sell-transaction-requote-required"}]},{"group":"Identity","pages":[{"title":"identity_check_updated","openapi":"api-reference/widget/webhooks.openapi.json webhook identity_check_updated","href":"/api-reference/widget/webhooks/identity-check-updated"}]},{"group":"Virtual accounts","pages":[{"title":"virtual_account_status_updated","openapi":"api-reference/widget/webhooks.openapi.json webhook virtual_account_status_updated","href":"/api-reference/widget/webhooks/virtual-account-status-updated"},{"title":"virtual_account_transaction_status_updated","openapi":"api-reference/widget/webhooks.openapi.json webhook virtual_account_transaction_status_updated","href":"/api-reference/widget/webhooks/virtual-account-transaction-status-updated"}]}]}]}]}]},"basePath":"","title":"Overview - MoonPay Developer Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}