Choose the webhook integration that matches your Modulus payment product
Modulus currently provides two webhook contracts. They use different
authentication, payload, and retry models and are not interchangeable.
Payment Webhooks
The current signed webhook platform for Ecom Payment Links and Payment
Intents. Register endpoints, verify Standard Webhooks signatures, inspect
events, and retrigger delivery through the management API.
QR Ph Webhooks (Legacy)
The encrypted-JWE integration for QR Ph transactions.
These contracts are separate. Payment Webhooks use per-endpoint whsec_
signing secrets and Webhook-* signature headers. QR Ph webhooks use
encrypted JWE payloads and the QR Ph encryption key.
Recommended integration
New Ecom integrations should use Payment Webhooks.
It publishes terminal events for Payment Links and Payment Intents.QR Ph integrations use the QR Ph webhook guide.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Modulus Labs API","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/moduluslabsinc/-g2JuykdH6NQMhpI/logo/light.svg?fit=max\u0026auto=format\u0026n=-g2JuykdH6NQMhpI\u0026q=85\u0026s=cdd5299c31d35441c6c6cab379ca0363","dark":"https://mintcdn.com/moduluslabsinc/-g2JuykdH6NQMhpI/logo/dark.svg?fit=max\u0026auto=format\u0026n=-g2JuykdH6NQMhpI\u0026q=85\u0026s=4be7c52f34d4ef4a0ca4b775b9e6792e"},"favicon":"https://mintcdn.com/moduluslabsinc/Hug35GYfKojSeqvX/favicon.svg?fit=max\u0026auto=format\u0026n=Hug35GYfKojSeqvX\u0026q=85\u0026s=65fea7bcc7fbf1163d727867c0623188","api":{"openapi":["api-reference/qr/openapi.json","api-reference/onboarding/openapi.json","api-reference/webhooks/openapi.json","api-reference/payment-webhooks/openapi.json","api-reference/terminal-gateway/openapi.json","api-reference/transaction-reporting/openapi.json","api-reference/ecom/openapi.json"],"playground":{"display":"interactive"},"examples":{"languages":["curl","python","javascript","php","go","java","csharp"]}},"footer":{"socials":{"website":"https://moduluslabs.io"}},"search":{"prompt":"Search Modulus Labs API documentation..."},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Support","icon":"envelope","href":"mailto:support@moduluslabs.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moduluslabsinc","hasAudioNarration":false,"actualSubdomain":"moduluslabsinc","customDomains":["docs.moduluslabs.io"],"gitSource":{"type":"github","owner":"modulus-labs-io","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae44ceef49f5b7aedfd0755","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"default","tag":"Documentation","count":51},{"language":"default","tag":"API Reference","count":40},{"language":"default","tag":"Webhooks API","count":27},{"language":"default","tag":"Ecom API","count":17},{"language":"default","tag":"Payment Webhooks","count":16},{"language":"default","tag":"Onboarding API","count":11},{"language":"default","tag":"Terminal Gateway API","count":10},{"language":"default","tag":"QR Ph Webhooks (Legacy)","count":10},{"language":"default","tag":"Transaction Reporting API","count":9},{"language":"default","tag":"Payment Links","count":8}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"6979644a4ee895505c300ecd","deploymentId":"68ec6943b3c0516c1a13b4bf","questionText":"What is JWE","status":"active","generatedBy":"manual","createdAt":"2026-01-28T01:20:10.549Z","updatedAt":"2026-01-28T01:20:10.549Z","__v":0},{"_id":"6979643f4ee895505c300ea5","deploymentId":"68ec6943b3c0516c1a13b4bf","questionText":"How do I test before going live?","status":"active","generatedBy":"manual","createdAt":"2026-01-28T01:19:59.128Z","updatedAt":"2026-01-28T01:19:59.128Z","__v":0},{"_id":"6979643a4ee895505c300ea0","deploymentId":"68ec6943b3c0516c1a13b4bf","questionText":"What authentication does the API need?","status":"active","generatedBy":"manual","createdAt":"2026-01-28T01:19:54.290Z","updatedAt":"2026-01-28T01:19:54.290Z","__v":0}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"docs/webhooks/overview","slug":"/docs/webhooks/overview","pageMetadata":{"title":"Webhooks","description":"Choose the webhook integration that matches your Modulus payment product","href":"/docs/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: \"Choose the webhook integration that matches your Modulus payment product\"\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`,p:`p`,..._provideComponents(),...props.components},{Card,CardGroup,Heading,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Modulus currently provides two webhook contracts. They use different\nauthentication, payload, and retry models and are not interchangeable.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Payment Webhooks`,icon:`webhook`,href:`/docs/webhooks/payment/overview`,children:_jsx(_components.p,{children:`The current signed webhook platform for Ecom Payment Links and Payment\nIntents. Register endpoints, verify Standard Webhooks signatures, inspect\nevents, and retrigger delivery through the management API.`})}),_jsx(Card,{title:`QR Ph Webhooks (Legacy)`,icon:`qrcode`,href:`/docs/webhooks/setup`,children:_jsx(_components.p,{children:`The encrypted-JWE integration for QR Ph transactions.`})})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`These contracts are separate. Payment Webhooks use per-endpoint `,_jsx(_components.code,{children:`whsec_`}),`\nsigning secrets and `,_jsx(_components.code,{children:`Webhook-*`}),` signature headers. QR Ph webhooks use\nencrypted JWE payloads and the QR Ph encryption key.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`recommended-integration`,children:`Recommended integration`}),`\n`,_jsxs(_components.p,{children:[`New Ecom integrations should use `,_jsx(_components.a,{href:`/docs/webhooks/payment/overview`,children:`Payment Webhooks`}),`.\nIt publishes terminal events for Payment Links and Payment Intents.`]}),`\n`,_jsxs(_components.p,{children:[`QR Ph integrations use the `,_jsx(_components.a,{href:`/docs/webhooks/setup`,children:`QR Ph webhook guide`}),`.`]})]})}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":"Webhooks","description":"Choose the webhook integration that matches your Modulus payment product","href":"/docs/webhooks/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Recommended integration","slug":"recommended-integration","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"moduluslabsinc","siteName":"Modulus Labs API","title":"Webhooks - Modulus Labs API","contextualStarterQuestions":[{"_id":"6ab350481b8abc8d55d662eb","deploymentId":"68ec6943b3c0516c1a13b4bf","questionText":"Which webhook should I use?","status":"active","generatedBy":"contextual","path":"docs/webhooks/overview","createdAt":"2026-09-23T04:06:32.807Z","updatedAt":"2026-09-23T04:06:32.807Z","__v":0},{"_id":"6ab350481b8abc8d55d662ec","deploymentId":"68ec6943b3c0516c1a13b4bf","questionText":"How do I verify webhook signatures?","status":"active","generatedBy":"contextual","path":"docs/webhooks/overview","createdAt":"2026-09-23T04:06:32.807Z","updatedAt":"2026-09-23T04:06:32.807Z","__v":0},{"_id":"6ab350481b8abc8d55d662ed","deploymentId":"68ec6943b3c0516c1a13b4bf","questionText":"What's the difference between them?","status":"active","generatedBy":"contextual","path":"docs/webhooks/overview","createdAt":"2026-09-23T04:06:32.807Z","updatedAt":"2026-09-23T04:06:32.807Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-23T04:06:25.214Z","originalFileLocation":"docs/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=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Choose the webhook integration that matches your Modulus payment product\">\u003cmeta data-mint-head name=\"application-name\" content=\"Modulus Labs API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_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/moduluslabsinc/b12xWXezBf3lDUti/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Webhooks - Modulus Labs API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Choose the webhook integration that matches your Modulus payment product\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Modulus Labs API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.moduluslabs.io/docs/webhooks/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moduluslabsinc.mintlify.site/_mintlify/api/og/v2?division=Webhooks+API\u0026amp;title=Webhooks\u0026amp;description=Choose+the+webhook+integration+that+matches+your+Modulus+payment+product\u0026amp;theme=0e23bf0ca39f87857ce30bad\u0026amp;signature=e900d27d501198f172171a11df43268aa9a7e5150c461d7cb7642fa6f659ed0a\">\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=\"Webhooks - Modulus Labs API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Choose the webhook integration that matches your Modulus payment product\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moduluslabsinc.mintlify.site/_mintlify/api/og/v2?division=Webhooks+API\u0026amp;title=Webhooks\u0026amp;description=Choose+the+webhook+integration+that+matches+your+Modulus+payment+product\u0026amp;theme=0e23bf0ca39f87857ce30bad\u0026amp;signature=e900d27d501198f172171a11df43268aa9a7e5150c461d7cb7642fa6f659ed0a\">\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/moduluslabsinc/b12xWXezBf3lDUti/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Modulus Labs API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.moduluslabs.io/docs/webhooks/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/webhooks/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.moduluslabs.io/#organization\",\"name\":\"Modulus Labs API\",\"url\":\"https://docs.moduluslabs.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moduluslabsinc/-g2JuykdH6NQMhpI/logo/light.svg?fit=max\u0026auto=format\u0026n=-g2JuykdH6NQMhpI\u0026q=85\u0026s=cdd5299c31d35441c6c6cab379ca0363\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.moduluslabs.io#website\",\"name\":\"Modulus Labs API\",\"url\":\"https://docs.moduluslabs.io\",\"publisher\":{\"@id\":\"https://docs.moduluslabs.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.moduluslabs.io/docs/webhooks/overview#webpage\",\"url\":\"https://docs.moduluslabs.io/docs/webhooks/overview\",\"name\":\"Webhooks\",\"description\":\"Choose the webhook integration that matches your Modulus payment product\",\"dateModified\":\"2026-09-23T04:06:25.214Z\",\"isPartOf\":{\"@id\":\"https://docs.moduluslabs.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moduluslabs.io/docs/webhooks/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moduluslabs.io/docs/webhooks/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Modulus Labs API\",\"item\":\"https://docs.moduluslabs.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks\",\"item\":\"https://docs.moduluslabs.io/docs/webhooks/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.moduluslabs.io/docs/webhooks/overview#article\",\"headline\":\"Webhooks\",\"name\":\"Webhooks\",\"description\":\"Choose the webhook integration that matches your Modulus payment product\",\"url\":\"https://docs.moduluslabs.io/docs/webhooks/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moduluslabs.io/docs/webhooks/overview#webpage\"},\"dateModified\":\"2026-09-23T04:06:25.214Z\",\"publisher\":{\"@id\":\"https://docs.moduluslabs.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.moduluslabs.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Modulus Labs API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Modulus Labs API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/webhooks/overview.md","siteName":"Modulus Labs API","nav":{"global":{"anchors":[{"anchor":"Support","icon":"envelope","href":"mailto:support@moduluslabs.io"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":""},{"title":"Base URLs","href":"/docs/base-urls"}]},{"group":"QR API","pages":[{"title":"Introduction","href":"/docs/qr/introduction"},{"title":"Quickstart","href":"/docs/qr/quickstart"},{"title":"Authentication","href":"/docs/qr/authentication"},{"title":"Encryption","href":"/docs/qr/encryption"},{"title":"Testing","href":"/docs/qr/testing"},{"title":"Errors","description":"QR Ph error envelope and codes","href":"/docs/qr/errors"}]},{"group":"Webhooks API","pages":[{"title":"Webhooks","href":"/docs/webhooks/overview"},{"group":"Payment Webhooks","pages":[{"title":"Payment Webhooks","description":"Receive signed terminal payment events for Payment Links and Payment Intents","href":"/docs/webhooks/payment/overview"},{"title":"Payment Webhooks Quickstart","href":"/docs/webhooks/payment/quickstart"},{"title":"Endpoint Management","href":"/docs/webhooks/payment/endpoints"},{"title":"Events and Payloads","href":"/docs/webhooks/payment/events"},{"title":"Verify Signatures","href":"/docs/webhooks/payment/signatures"},{"title":"Retries and Retriggering","href":"/docs/webhooks/payment/retries"}]},{"group":"QR Ph Webhooks (Legacy)","pages":[{"title":"QR Ph Webhooks (Legacy)","href":"/docs/webhooks/qr-ph/overview"},{"title":"QR Ph Webhooks Quickstart (Legacy)","href":"/docs/webhooks/setup"},{"title":"Receiving QR Ph Webhooks (Legacy)","href":"/docs/webhooks/receiving"},{"title":"QR Ph Webhook Payload (Legacy)","href":"/docs/webhooks/payload"}]}]},{"group":"Onboarding API","pages":[{"title":"Introduction","href":"/docs/onboarding/introduction"},{"title":"Quickstart","href":"/docs/onboarding/quickstart"},{"title":"Authentication","href":"/docs/onboarding/authentication"},{"title":"Enums","href":"/docs/onboarding/enums"}]},{"group":"Terminal Gateway API","pages":[{"title":"Introduction","href":"/docs/terminal-gateway/introduction"},{"title":"Authentication","href":"/docs/terminal-gateway/authentication"},{"title":"Concepts","href":"/docs/terminal-gateway/concepts"},{"group":"HTTP API","pages":[{"title":"Quickstart","href":"/docs/terminal-gateway/http/quickstart"}]},{"group":"WebSocket API","pages":[{"title":"Quickstart","href":"/docs/terminal-gateway/websocket/quickstart"},{"title":"Actions","href":"/docs/terminal-gateway/websocket/actions"},{"title":"Notifications","href":"/docs/terminal-gateway/websocket/notifications"}]}]},{"group":"Transaction Reporting API","pages":[{"title":"Introduction","href":"/docs/transaction-reporting/introduction"},{"title":"Quickstart","href":"/docs/transaction-reporting/quickstart"},{"title":"Authentication","href":"/docs/transaction-reporting/authentication"},{"title":"Filtering","href":"/docs/transaction-reporting/filtering"}]},{"group":"Ecom API","pages":[{"title":"Introduction","href":"/docs/ecom/introduction"},{"title":"Errors","href":"/docs/ecom/errors"},{"group":"Payment Links","pages":[{"title":"Introduction","href":"/docs/ecom/payment-links"},{"title":"Quickstart","href":"/docs/ecom/quickstart"},{"title":"Authentication","href":"/docs/ecom/authentication"}]},{"group":"JavaScript SDK","pages":[{"title":"Introduction","href":"/docs/ecom/jssdk/introduction"},{"title":"Quickstart","href":"/docs/ecom/jssdk/quickstart"},{"title":"Card fields","href":"/docs/ecom/jssdk/card-fields"},{"title":"Confirm the payment","href":"/docs/ecom/jssdk/confirm-payment"},{"title":"3D Secure","href":"/docs/ecom/jssdk/3d-secure"}]}]},{"group":"Shared Resources","pages":[{"title":"Overview","href":"/docs/shared-resources"},{"title":"Glossary","href":"/docs/glossary"},{"title":"Testing","href":"/docs/testing"},{"title":"Errors","href":"/docs/errors"},{"title":"Go-live","href":"/docs/production"},{"title":"Build with AI","href":"/docs/build-with-ai"},{"title":"Changelog","href":"/changelog"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/qr/ping"}]}]},"basePath":"","title":"Webhooks - Modulus Labs API","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":[],"chunks":[]}