For each event delivery, Bridge will include a webhook signature header in the HTTP request for event authenticity verification
The header name isX-Webhook-Signature ;
The header value format is t=<timestamp>,v0=<base64 encoded signature> , where the timestamp is in milliseconds;
To verify the signature, follow these steps:
Parse the signature header to extract the timestamp and base64 encoded signature;
Join timestamp with the raw http request body data with a dot (.), and generate a SHA256 digest of that string;
Perform a strict base64 decoding on the base64 encoded signature to get the decoded signature;
Verify the signature using the per-endpoint public key, the decoded signature (from Step 3), and the digest (from Step 2) as the message to verify.
Bridge hashes the payload twiceThe signature is over SHA256(SHA256("<timestamp>.<raw body>")). Node crypto.verify, Python cryptography, Ruby OpenSSL, and Java Signature all hash the message you hand them, so pass them the Step 2 digest rather than the raw "<timestamp>.<raw body>" string — passing the raw string hashes the payload only once and verification always fails. Go’s rsa.VerifyPKCS1v15 does not hash its input at all, so it needs the Step 2 digest hashed a second time before verifying. Working samples for every language are in the setup guide linked below.
To avoid replay attacksBridge advises the receiving endpoint to disregard events that are older than a few minutes, e.g. 10 minutes, and return a 400 status to request retries. For each event delivery retry, Bridge generates a new timestamp.
Check out the guide here to see sample code setting up webhooks.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Bridge","colors":{"primary":"#047857","light":"#047857","dark":"#047857"},"logo":{"light":"https://mintcdn.com/bridge-727305d3/Zr0t-7SjjubLpKla/logo/bridge-logo-wordmark-dark.svg?fit=max\u0026auto=format\u0026n=Zr0t-7SjjubLpKla\u0026q=85\u0026s=c91d77ec31a41686da7d32d0c999b34a","dark":"https://mintcdn.com/bridge-727305d3/Zr0t-7SjjubLpKla/logo/bridge-logo-wordmark-light.svg?fit=max\u0026auto=format\u0026n=Zr0t-7SjjubLpKla\u0026q=85\u0026s=5a0980c2f0de4ea7c2f263c589a1cff6"},"favicon":"https://mintcdn.com/bridge-727305d3/Zr0t-7SjjubLpKla/logo/favicon-docs.svg?fit=max\u0026auto=format\u0026n=Zr0t-7SjjubLpKla\u0026q=85\u0026s=7804dcb568bd9fc9cd8a04d82d37e03f","api":{"openapi":"https://withbridge-image1-sv-usw2-monorail-openapi.s3.amazonaws.com/latest.json"},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"https://bridge.coastdemo.com/share/693741a8dc19176c45ad2004?mode=link","label":"Demo"},{"href":"https://support.bridge.xyz/","label":"Support"}],"primary":{"type":"button","label":"Bridge Dashboard","href":"https://dashboard.bridge.xyz/"}},"footer":{"socials":{"x":"https://x.com/stablecoin","linkedin":"https://linkedin.com/company/bridge-apis"}},"fonts":{"heading":{"family":"Abc Diatype Regular","source":"https://cdn.prod.website-files.com/66c78bffc753432b33c4f61a/66c78bffc753432b33c4f654_ABC%20Diatype%20Regular.ttf","format":"woff2"},"body":{"family":"Abc Diatype Regular","source":"https://cdn.prod.website-files.com/66c78bffc753432b33c4f61a/66c78bffc753432b33c4f654_ABC%20Diatype%20Regular.ttf","format":"woff2"}},"integrations":{"gtm":{"tagId":"GTM-W79785BK"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bridge-727305d3","hasAudioNarration":false,"actualSubdomain":"bridge-727305d3","customDomains":["apidocs.bridge.xyz"],"gitSource":{"type":"github","owner":"withbridge","repo":"bridge-api-docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae36a3220ed97e30f82d722","collectionId":"e0526c1f-686a-412c-8da0-3f0a07426fa7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae36a3220ed97e30f82d722"},"feedback":{"thumbs":true,"edits":false,"agentFeedback":false},"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":"6ae36a3220ed97e30f82d722","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"API reference","count":136},{"language":"default","tag":"Endpoints","count":131},{"language":"default","tag":"Developer Platform","count":95},{"language":"default","tag":"Cards","count":43},{"language":"default","tag":"Customers","count":43},{"language":"default","tag":"Get Started","count":35},{"language":"default","tag":"Guides","count":26},{"language":"default","tag":"Orchestration","count":22},{"language":"default","tag":"Transfers","count":14},{"language":"default","tag":"Issuance","count":13}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":false},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"6a95e7c5dbba852a7e9d61cd","deploymentId":"68794f73dbdb837ef9af8c37","questionText":"Which endpoint can I use to create a Virtual Account?","status":"active","generatedBy":"manual","createdAt":"2026-08-31T20:44:53.966Z","updatedAt":"2026-08-31T20:44:53.966Z","__v":0},{"_id":"6a95e78ddbba852a7e9d5f5b","deploymentId":"68794f73dbdb837ef9af8c37","questionText":"Which payment rails are supported?","status":"active","generatedBy":"manual","createdAt":"2026-08-31T20:43:57.235Z","updatedAt":"2026-08-31T20:43:57.235Z","__v":0},{"_id":"6a95e766dbba852a7e9d5c38","deploymentId":"68794f73dbdb837ef9af8c37","questionText":"What's required to KYC a customer?","status":"active","generatedBy":"manual","createdAt":"2026-08-31T20:43:18.066Z","updatedAt":"2026-08-31T20:43:54.236Z","__v":0}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"body{color:#1e293b;font-family:'Inter',sans-serif}#sidebar{border-right:1px solid rgba(203,213,225,.6)}#navbar{background-color:#fff}.nav-logo{width:63px!important;height:24px!important;top:2px}.eyebrow{color:#6b7280!important}.dark .eyebrow{color:#9ca3af!important}.button-primary,a{color:#047857;font-weight:500;transition:color .2s ease}.button-primary:hover,a:hover{color:#065f46}#navbar a[href=\"/\"]:hover,#navbar a[href^=\"/api-reference/\"]:hover,#navbar a[href^=\"/changelog/\"]:hover,#navbar a[href^=\"/get-started/\"]:hover,#navbar a[href^=\"/platform/\"]:hover{color:#065f46!important;border-color:#047857!important;text-decoration-color:#047857!important}#navbar a[href=\"/\"]:hover>div:last-child,#navbar a[href^=\"/api-reference/\"]:hover>div:last-child,#navbar a[href^=\"/changelog/\"]:hover>div:last-child,#navbar a[href^=\"/get-started/\"]:hover>div:last-child,#navbar a[href^=\"/platform/\"]:hover>div:last-child{background-color:#047857!important}#topbar-cta-button>a:hover{color:#fff!important}#topbar-cta-button>a:hover>span:first-child{background-color:#065f46!important;opacity:1!important}.button-secondary{background-color:#047857;color:#fff;border-radius:.375rem;padding:.5rem 1rem;font-weight:500;transition:background-color .2s ease}.button-secondary:hover{background-color:#10b981}.api-doc-box,.card,.sidebar-section{box-shadow:0 1px 3px rgba(0,0,0,.05);border-radius:.5rem}.hero h1,.hero subline{font-size:52px;font-weight:400}.hero subline{font-size:24px;font-kerning:auto}.hero icon{text-decoration-color:#fff}.bg-dots-gradient{background-image:radial-gradient(#23cd94 .5px,transparent .5px),linear-gradient(to bottom,#d4f2ef,#f7fafc,#fff);background-size:10px 10px,auto;background-repeat:repeat,no-repeat}"}],"page":{"pagePath":"platform/additional-information/webhooks/signature","slug":"/platform/additional-information/webhooks/signature","pageMetadata":{"title":"Webhook event signature verification","mode":"wide","description":null,"href":"/platform/additional-information/webhooks/signature"},"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`,em:`em`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`For each event delivery, Bridge will include a webhook signature header in the HTTP request for event authenticity verification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The header name is`,_jsx(_components.code,{children:`X-Webhook-Signature`}),` ;`]}),`\n`,_jsxs(_components.li,{children:[`The header value format is `,_jsx(_components.code,{children:`t=\u003ctimestamp>,v0=\u003cbase64 encoded signature>`}),` , where the timestamp is in milliseconds;`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`To verify the signature, follow these steps:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Parse the signature header to extract the `,_jsx(_components.code,{children:`timestamp`}),` and `,_jsx(_components.code,{children:`base64 encoded signature`}),`;`]}),`\n`,_jsxs(_components.li,{children:[`Join `,_jsx(_components.code,{children:`timestamp`}),` with the `,_jsx(_components.code,{children:`raw http request body data`}),` with a dot (`,_jsx(_components.code,{children:`.`}),`), and generate a `,_jsx(_components.code,{children:`SHA256`}),` digest of that string;`]}),`\n`,_jsxs(_components.li,{children:[`Perform a strict base64 decoding on the `,_jsx(_components.code,{children:`base64 encoded signature`}),` to get the `,_jsx(_components.code,{children:`decoded signature`}),`;`]}),`\n`,_jsxs(_components.li,{children:[`Verify the signature using the per-endpoint `,_jsx(_components.code,{children:`public key`}),`, the `,_jsx(_components.code,{children:`decoded signature`}),` (from Step 3), and the `,_jsx(_components.code,{children:`digest`}),` (from Step 2) `,_jsx(_components.strong,{children:`as the message to verify`}),`.`]}),`\n`]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Bridge hashes the payload twice`})}),_jsxs(_components.p,{children:[`The signature is over `,_jsx(_components.code,{children:`SHA256(SHA256(\"\u003ctimestamp>.\u003craw body>\"))`}),`. Node `,_jsx(_components.code,{children:`crypto.verify`}),`, Python `,_jsx(_components.code,{children:`cryptography`}),`, Ruby `,_jsx(_components.code,{children:`OpenSSL`}),`, and Java `,_jsx(_components.code,{children:`Signature`}),` all hash the message you hand them, so pass them the Step 2 digest rather than the raw `,_jsx(_components.code,{children:`\"\u003ctimestamp>.\u003craw body>\"`}),` string — passing the raw string hashes the payload only once and verification always fails. Go’s `,_jsx(_components.code,{children:`rsa.VerifyPKCS1v15`}),` does not hash its input at all, so it needs the Step 2 digest hashed a `,_jsx(_components.em,{children:`second`}),` time before verifying. Working samples for every language are in the setup guide linked below.`]})]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`To avoid replay attacks`})}),_jsx(_components.p,{children:`Bridge advises the receiving endpoint to disregard events that are older than a few minutes, e.g. 10 minutes, and return a 400 status to request retries. For each event delivery retry, Bridge generates a new timestamp.`})]}),`\n`,_jsxs(_components.p,{children:[`Check out the guide `,_jsx(_components.a,{href:`/get-started/introduction/quick-start/setting-up-webhooks`,children:`here`}),` to see sample code setting up webhooks.`]})]})}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":"Webhook event signature verification","mode":"wide","description":null,"href":"/platform/additional-information/webhooks/signature"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"bridge-727305d3","siteName":"Bridge","title":"Webhook event signature verification - Bridge","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T18:56:55.374Z","originalFileLocation":"platform/additional-information/webhooks/signature.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"application-name\" content=\"Bridge\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_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/bridge-727305d3/mooRrVahPwlqVkg3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Webhook event signature verification - Bridge\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Bridge\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bridge-727305d3.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Webhook+event+signature+verification\u0026amp;theme=76a48d67b07cbfa100776801\u0026amp;signature=fcf720d3a38a15b77e8fdf5400d23fa9d14f1d10c609e9372dfd80f30cb9b24a\">\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=\"Webhook event signature verification - Bridge\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bridge-727305d3.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Webhook+event+signature+verification\u0026amp;theme=76a48d67b07cbfa100776801\u0026amp;signature=fcf720d3a38a15b77e8fdf5400d23fa9d14f1d10c609e9372dfd80f30cb9b24a\">\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/bridge-727305d3/mooRrVahPwlqVkg3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Bridge\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#047857\">\u003clink data-mint-head rel=\"canonical\" href=\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/platform/additional-information/webhooks/signature.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://apidocs.bridge.xyz/#organization\",\"name\":\"Bridge\",\"url\":\"https://apidocs.bridge.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bridge-727305d3/Zr0t-7SjjubLpKla/logo/bridge-logo-wordmark-dark.svg?fit=max\u0026auto=format\u0026n=Zr0t-7SjjubLpKla\u0026q=85\u0026s=c91d77ec31a41686da7d32d0c999b34a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://apidocs.bridge.xyz#website\",\"name\":\"Bridge\",\"url\":\"https://apidocs.bridge.xyz\",\"publisher\":{\"@id\":\"https://apidocs.bridge.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature#webpage\",\"url\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature\",\"name\":\"Webhook event signature verification\",\"dateModified\":\"2026-10-27T18:56:55.374Z\",\"isPartOf\":{\"@id\":\"https://apidocs.bridge.xyz#website\"},\"breadcrumb\":{\"@id\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Additional information\",\"item\":\"https://apidocs.bridge.xyz/platform/additional-information/precision\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks\",\"item\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Webhook event signature verification\",\"item\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature#article\",\"headline\":\"Webhook event signature verification\",\"name\":\"Webhook event signature verification\",\"url\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature\",\"mainEntityOfPage\":{\"@id\":\"https://apidocs.bridge.xyz/platform/additional-information/webhooks/signature#webpage\"},\"dateModified\":\"2026-10-27T18:56:55.374Z\",\"publisher\":{\"@id\":\"https://apidocs.bridge.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://apidocs.bridge.xyz#website\"}}]}\u003c/script>","siteName":"Bridge","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Get Started","icon":"play","pages":[{"title":"Get Started","href":"/get-started/introduction/overview"}]},{"tab":"Developer Platform","icon":"layer-group","pages":[{"group":"Orchestration","pages":[{"title":"Overview","mode":"wide","href":"/platform/orchestration/overview"},{"group":"Virtual accounts","pages":[{"title":"Virtual accounts","mode":"wide","href":"/platform/orchestration/virtual_accounts/virtual-account"},{"title":"Virtual account events","mode":"wide","href":"/platform/orchestration/virtual_accounts/virtual-account-events"},{"title":"Additional functionality","mode":"wide","href":"/platform/orchestration/virtual_accounts/additional-functionality"}]},{"group":"Transfers","pages":[{"title":"Transfers","mode":"wide","href":"/platform/orchestration/transfers/transfer"},{"title":"Static template transfers","mode":"wide","href":"/platform/orchestration/transfers/static-templates"},{"title":"Transfer states","mode":"wide","href":"/platform/orchestration/transfers/transfer-states"},{"title":"Transfer features","mode":"wide","href":"/platform/orchestration/transfers/transfer-features"},{"title":"Source and destination updates","mode":"wide","href":"/platform/orchestration/transfers/transfer-updates"},{"title":"Transfer errors \u0026 recovery","href":"/platform/orchestration/transfers/transfer-errors-and-recovery"}]},{"group":"Liquidation address","pages":[{"title":"Multichain and Multicurrency Liquidation Addresses","hidden":false,"href":"/platform/orchestration/liquidation_address/multi-chain-currency"},{"title":"Liquidation address","href":"/platform/orchestration/liquidation_address/liquidation_address"},{"title":"Drains","mode":"wide","href":"/platform/orchestration/liquidation_address/drains"}]},{"group":"External accounts","pages":[{"title":"External accounts","mode":"wide","href":"/platform/orchestration/external-accounts/external-accounts-api"},{"title":"Link a bank account with plaid link","mode":"wide","href":"/platform/orchestration/external-accounts/plaid"},{"title":"External account validations","mode":"wide","href":"/platform/orchestration/external-accounts/validations"},{"title":"Verification of Payee (VoP)","mode":"wide","href":"/platform/orchestration/external-accounts/verification-of-payee"}]},{"title":"Named payouts","mode":"wide","href":"/platform/orchestration/more/fiat-payout-configuration"},{"group":"More","pages":[{"title":"Static memos","mode":"wide","href":"/platform/orchestration/more/staticmemos"},{"title":"Prefunded accounts","mode":"wide","href":"/platform/orchestration/prefunded-accounts-deprecated"},{"title":"Returns","href":"/platform/orchestration/more/returns"},{"title":"Handling funds requests (recalls)","href":"/platform/orchestration/more/funds-requests"}]}]},{"group":"Wallets","pages":[{"title":"Overview","mode":"wide","href":"/platform/wallets/overview"},{"title":"Prefunded wallets","mode":"wide","href":"/platform/wallets/prefunded_wallets"},{"title":"Move money to and from wallets","mode":"wide","href":"/platform/wallets/move-money"},{"title":"Sandbox integration","mode":"wide","href":"/platform/wallets/sandbox"}]},{"group":"Issuance","pages":[{"title":"Overview","mode":"wide","href":"/platform/issuance/overview"},{"title":"Issuance Options","href":"/platform/issuance/issuance-options"},{"title":"Orchestration","href":"/platform/issuance/orchestration"},{"title":"Minting and Burning","href":"/platform/issuance/minting-and-burning"},{"title":"Reserve Management","href":"/platform/issuance/reserve-management"},{"title":"Reporting and Transparency","href":"/platform/issuance/reporting-and-transparency"},{"title":"Earning Rewards","href":"/platform/issuance/rewards"},{"title":"Designing Your Stablecoin","href":"/platform/issuance/designing-your-stablecoin"},{"group":"OUSD","pages":[{"title":"OUSD Overview","href":"/overview"},{"title":"Migrating to OUSD","mode":"wide","href":"/migrating-to-ousd"}]},{"title":"USDB","href":"/platform/issuance/usdb"},{"title":"Growing Your Stablecoin","href":"/platform/issuance/growing-your-stablecoin"},{"title":"Bridge stablecoins FAQ","mode":"wide","href":"/platform/issuance/faq"},{"group":"Archive","hidden":true,"pages":[{"title":"Reserves-archive","sidebarTitle":"Reserves","mode":"wide","href":"/platform/issuance/reserves"},{"title":"Custom stablecoin-archive","mode":"wide","href":"/platform/issuance/custom"}]}]},{"group":"Cards","pages":[{"title":"Overview","mode":"wide","href":"/platform/cards/overview/overview"},{"group":"Consumer issuing","pages":[{"title":"Consumer issuing","href":"/platform/cards/overview/stripe-issuing"},{"title":"Customer eligibility and KYC","href":"/platform/cards/overview/kyc"}]},{"group":"Commercial issuing","pages":[{"title":"Commercial issuing","href":"/platform/cards/overview/commercial-issuing"}]},{"title":"Funding strategies","mode":"wide","href":"/platform/cards/overview/funding-strategies"},{"title":"Noncustodial wallets","href":"/platform/cards/overview/noncustodial"},{"title":"Webhooks","href":"/platform/cards/overview/webhooks"},{"title":"Additional card features","href":"/platform/cards/features"},{"title":"Statements","mode":"wide","href":"/platform/cards/additional/statements"},{"title":"Sandbox","href":"/platform/cards/sandbox/sandbox"},{"group":"Cards (legacy)","pages":[{"title":"Create and test your first card","mode":"wide","href":"/platform/cards/overview/guide"},{"title":"Terminology","mode":"wide","href":"/platform/cards/overview/terminology"},{"title":"Advanced money movement flows","mode":"wide","href":"/platform/cards/overview/advanced"},{"title":"Testing webhooks in sandbox","mode":"wide","href":"/platform/cards/sandbox/testing"},{"title":"Freezing a card account","mode":"wide","href":"/platform/cards/additional/freezing"},{"title":"Managing PINs","mode":"wide","href":"/platform/cards/additional/pins"},{"title":"Customizing card art","mode":"wide","href":"/platform/cards/additional/customizing"},{"title":"Marketing, UX and compliance","mode":"wide","href":"/platform/cards/additional/marketing"},{"title":"In-app mobile wallet provisioning","href":"/platform/cards/additional/mobile-wallet-provisioning"},{"title":"Safely reveal card details to customers","href":"/platform/cards/additional/safely-reveal-card-details"},{"title":"Real-time Authorization","mode":"wide","href":"/platform/cards/additional/real-time-auth"},{"title":"Fees","mode":"wide","href":"/platform/cards/additional/fees"}]}]},{"group":"Customers","pages":[{"title":"Overview","mode":"wide","href":"/platform/customers/overview"},{"group":"Customers","pages":[{"title":"Customers API","mode":"wide","href":"/platform/customers/customers/api"},{"title":"KYC links for new customers","mode":"wide","href":"/platform/customers/customers/kyclinks"},{"title":"Additional requirements for existing customers","mode":"wide","href":"/platform/customers/customers/add_req"},{"title":"Endorsements","mode":"wide","href":"/platform/customers/customers/endorsements"},{"title":"Terms of service","mode":"wide","href":"/platform/customers/customers/tos"},{"title":"Rejection reasons","mode":"wide","href":"/platform/customers/customers/rejection_reasons"},{"title":"Missing requirements and issues","mode":"wide","href":"/platform/customers/customers/missing-requirements-and-issues"},{"title":"EEA updated requirements","hidden":true,"href":"/platform/customers/customers/eea-updated-requirements"},{"title":"EEA updated requirements for Reliance developers","hidden":true,"href":"/platform/customers/customers/eea-updated-requirements-reliance"},{"title":"BRL Ramp Migration Guide","sidebarTitle":"BRL Ramp Migration","mode":"wide","hidden":true,"href":"/platform/customers/customers/brl-ramp-migration-guide"},{"title":"Postal code validation","href":"/platform/customers/customers/postal-code-validation"}]},{"group":"Compliance","pages":[{"title":"Individuals","mode":"wide","href":"/platform/customers/compliance/individuals"},{"group":"Businesses","pages":[{"title":"Businesses","mode":"wide","href":"/platform/customers/compliance/businesses/overview"},{"title":"Business entity types","mode":"wide","href":"/platform/customers/compliance/businesses/entity"},{"title":"Business ownership documents","mode":"wide","href":"/platform/customers/compliance/businesses/ownership"},{"title":"Business formation documents","mode":"wide","href":"/platform/customers/compliance/businesses/formation"},{"title":"Business identification numbers by region","mode":"wide","href":"/platform/customers/compliance/businesses/identification"},{"title":"High risk business activities","mode":"wide","href":"/platform/customers/compliance/businesses/highrisk"}]},{"title":"DAOs","mode":"wide","href":"/platform/customers/compliance/dao"},{"title":"Supported documents","mode":"wide","href":"/platform/customers/compliance/docs"},{"title":"Proof of address requirements","mode":"wide","href":"/platform/customers/compliance/poa"},{"title":"Supported Countries List","href":"/platform/customers/compliance/supported-countries-list"},{"group":"NRA","hidden":true,"pages":[{"title":"Non-Resident Alien (NRA) Base Eligibility","mode":"wide","href":"/platform/customers/compliance/nra-base-eligibility"}]}]}]},{"group":"Logistics","pages":[{"group":"Fees \u0026 minimums","pages":[{"title":"Developer fees","mode":"wide","href":"/platform/orchestration/fees-and-mins/devfees"},{"title":"Transaction minimums","mode":"wide","href":"/platform/orchestration/fees-and-mins/mins"}]},{"title":"Processing windows \u0026 cutoff times","mode":"wide","href":"/platform/orchestration/more/cutoffs"},{"title":"Holidays","mode":"wide","href":"/platform/orchestration/more/holidays"},{"title":"Payment tracking identifiers","mode":"wide","href":"/platform/orchestration/more/payment-tracking"},{"title":"Rail specific details","href":"/platform/orchestration/more/rail-specific"}]},{"group":"Additional information","pages":[{"title":"Precision and rounding","mode":"wide","href":"/platform/additional-information/precision"},{"title":"Receipts","mode":"wide","href":"/platform/additional-information/receipts"},{"group":"Webhooks","pages":[{"title":"Webhooks","mode":"wide","description":null,"href":"/platform/additional-information/webhooks/overview"},{"title":"Webhook event signature verification","mode":"wide","href":"/platform/additional-information/webhooks/signature"},{"title":"Event structure","description":null,"href":"/platform/additional-information/webhooks/structure"}]},{"title":"Requests for Information (RFI's)","href":"/platform/additional-information/rfi"},{"title":"FAQ guidance for your users","mode":"wide","href":"/platform/additional-information/faq"},{"title":"Pricing","href":"/platform/additional-information/pricing"}]}]},{"tab":"API reference","icon":"brackets-curly","pages":[{"title":"API reference","href":"/api-reference/introduction/introduction"}]},{"tab":"Changelog","icon":"calendar","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"title":"Webhook event signature verification - Bridge","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}