Webhooks are HTTP notifications sent from Lago to your application.
The messages are sent as a POST request to every webhook endpoint defined in
the settings of your Lago organization.If you return an error (any response other than a 2xx) or if there is a network
issue, the message is sent again. Lago attempts each message 3 times, waiting
longer between each attempt.
The object_type field names the key that carries the object. For example, an
invoice.created message has "object_type": "invoice" and an invoice key.
Unique key
Lago sends an idempotency key (a unique identifier) in the X-Lago-Unique-Key HTTP header. Use it to
process a message only once.
Signature
Along with the payload, the message carries the X-Lago-Signature and X-Lago-Signature-Algorithm HTTP headers.They ensure the message comes from Lago and has not been altered.To verify the signature, decode it and compare the result with the body of the webhook.You choose between two signature algorithms when you create a webhook endpoint, hmac or jwt. The
default is jwt.
JWT signature
1. Retrieve the public key
from lago_python_client import Clientclient = Client(api_key='__YOUR_API_KEY__')webhooks_public_key = client.webhooks().public_key()
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Lago","description":"Developer documentation for Lago, the open-source billing platform for usage metering, subscriptions, invoicing, payments, and revenue operations.","colors":{"primary":"#006CFA","light":"#006CFA","dark":"#006CFA"},"logo":{"light":"https://mintcdn.com/lago-docs/zZSJbpe68PHhSs3x/logo/light.svg?fit=max\u0026auto=format\u0026n=zZSJbpe68PHhSs3x\u0026q=85\u0026s=b4af3001527c985b81858b9a0928534c","dark":"https://mintcdn.com/lago-docs/zZSJbpe68PHhSs3x/logo/dark.svg?fit=max\u0026auto=format\u0026n=zZSJbpe68PHhSs3x\u0026q=85\u0026s=1eb7aacac796b0cc6bf05be790a792b1"},"favicon":"https://mintcdn.com/lago-docs/8N-yOElNGe9jRGG5/favicon.svg?fit=max\u0026auto=format\u0026n=8N-yOElNGe9jRGG5\u0026q=85\u0026s=5c319e58dd9b5c5b8a31cf2ad8009a1c","api":{"openapi":"https://swagger.getlago.com/openapi.yaml","mdx":{"server":"https://api.getlago.com/api/v1"}},"background":{"color":{"light":"#F5F5EF","dark":"#131923"}},"navbar":{"links":[{"href":"https://getlago.com/book-a-demo","label":"Book a Demo"}],"primary":{"type":"button","label":"Get Started","href":"https://getlago.com/book-a-demo"}},"footer":{"socials":{"github":"https://github.com/getlago/lago","slack":"https://getlago.com/slack","x":"https://x.com/getlago","linkedin":"https://www.linkedin.com/company/getlago","youtube":"https://www.youtube.com/channel/UCp6ltp7n3SgDVsmerJ7O7ZA"},"links":[{"header":"Documentation","items":[{"label":"Get started","href":"https://getlago.com/docs/guide/introduction/welcome-to-lago"},{"label":"API reference","href":"https://getlago.com/docs/api-reference/intro"},{"label":"Integrations","href":"https://getlago.com/docs/integrations/introduction"},{"label":"Templates","href":"https://getlago.com/docs/templates/introduction"},{"label":"Changelog","href":"https://getlago.com/docs/changelog/product"},{"label":"FAQ","href":"https://getlago.com/docs/faq/about-lago"}]},{"header":"Developers","items":[{"label":"Developer hub","href":"https://getlago.com/docs/developers"},{"label":"Authentication","href":"https://getlago.com/docs/auth"},{"label":"Webhooks","href":"https://getlago.com/docs/guide/webhooks"},{"label":"SDKs","href":"https://getlago.com/docs/developers"},{"label":"OpenAPI spec","href":"https://swagger.getlago.com/"},{"label":"MCP server","href":"https://getlago.com/docs/guide/ai-agents/mcp-server"},{"label":"Self-hosted","href":"https://getlago.com/docs/guide/lago-self-hosted/overview"},{"label":"llms.txt","href":"https://getlago.com/docs/llms.txt"}]},{"header":"Platform","items":[{"label":"Usage metering","href":"https://getlago.com/platform/usage-metering"},{"label":"Billing \u0026 invoicing","href":"https://getlago.com/platform/billing-invoicing"},{"label":"Cash collection","href":"https://getlago.com/platform/cash-collection"},{"label":"Revenue analytics","href":"https://getlago.com/platform/revenue-analytics"},{"label":"Entitlements","href":"https://getlago.com/platform/entitlements"},{"label":"Lago AI","href":"https://getlago.com/platform/ai"},{"label":"Pricing","href":"https://getlago.com/pricing"}]},{"header":"Company","items":[{"label":"About Lago","href":"https://getlago.com/docs/about"},{"label":"Customers","href":"https://getlago.com/customers"},{"label":"Blog","href":"https://getlago.com/blog"},{"label":"Contact","href":"https://getlago.com/docs/contact"},{"label":"Trust center","href":"https://security.getlago.com"},{"label":"Status","href":"https://status.getlago.com"}]}]},"seo":{"metatags":{"canonical":"https://getlago.com/docs","description":"Developer documentation for Lago's API-first billing platform, including OpenAPI, SDKs, webhooks, MCP, authentication, and implementation guides.","keywords":"Lago API, billing API, usage metering API, OpenAPI, billing SDK, Lago MCP"},"organization":{"id":"https://getlago.com/#organization","name":"Lago","legalName":"Get Lago Corp.","url":"https://getlago.com","logo":"https://getlago.com/docs/logo/light.svg","sameAs":["https://github.com/getlago","https://www.linkedin.com/company/getlago","https://x.com/GetLago","https://www.youtube.com/channel/UCp6ltp7n3SgDVsmerJ7O7ZA"]},"indexing":"all"},"fonts":{"heading":{"family":"GT America","weight":700,"source":"fonts/GT-America-Standard-Medium.woff2","format":"woff2"},"body":{"family":"GT America","source":"fonts/GT-America-Standard-Regular.woff2","format":"woff2"}},"styling":{"codeblocks":"dark","latex":true},"integrations":{"ga4":{"measurementId":"G-743BQ9THCG"},"cookies":{"key":"lago_docs_analytics","value":"granted"}},"errors":{"404":{"redirect":false,"title":"Documentation page not found","description":"No Lago documentation exists at this URL. Start at [Lago Developer Documentation](/welcome), browse [Developer Resources](/developers), inspect the [documentation index](/llms.txt) or [sitemap](/sitemap.xml), or search the [API reference](/api-reference/intro)."}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://getlago.com/blog"},{"anchor":"Community","icon":"slack","href":"https://getlago.com/slack"},{"anchor":"GitHub","icon":"github","href":"https://github.com/getlago/lago"},{"anchor":"Status","icon":"signal-bars","href":"https://status.getlago.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lago-docs","hasAudioNarration":false,"actualSubdomain":"lago-docs","customDomains":["getlago.com"],"gitSource":{"type":"github","owner":"getlago","repo":"lago-doc","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af5c6195cae6d002f81a42b","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"default","tag":"API References","count":243},{"language":"default","tag":"API Reference","count":243},{"language":"default","tag":"Guide","count":206},{"language":"default","tag":"Integrations","count":54},{"language":"default","tag":"Plans","count":46},{"language":"default","tag":"Resources","count":46},{"language":"default","tag":"Charges","count":39},{"language":"default","tag":"Pricing \u0026 Subscriptions","count":35},{"language":"default","tag":"Subscriptions","count":31},{"language":"default","tag":"Invoices","count":27}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"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}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html{visibility:hidden;background-color:#F5F5EF}@media (prefers-color-scheme: dark){html{background-color:#131923}}html.ready{visibility:visible}.dark .welcome-card{background-color:#1c2535!important;border-color:rgba(255, 255, 255, 0.1)!important;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.3)!important;color:#e5e7eb}.dark .welcome-card:hover{background-color:#243044!important}.dark .welcome-card h3{color:#ffffff}.dark .welcome-card p{color:#9ca3af!important}#changelog-month-nav{padding-left:2.5rem;width:19rem;box-sizing:border-box;margin-bottom:1.75rem;max-height:45vh;overflow-y:auto}#changelog-month-nav .changelog-month-nav__year{margin:0 0 0.5rem;font-size:0.875rem;line-height:1.5rem;font-weight:500;color:#364152}#changelog-month-nav .changelog-month-nav__list{list-style:none;margin:0;padding:0;border-left:1px solid rgba(0, 0, 0, 0.08)}#changelog-month-nav .changelog-month-nav__list a{display:block;padding:0.25rem 0 0.25rem 0.75rem;margin-left:-1px;border-left:1px solid transparent;font-size:0.875rem;line-height:1.5rem;color:#697586;text-decoration:none;transition:color 0.15s ease, border-color 0.15s ease}#changelog-month-nav .changelog-month-nav__list a:hover{color:#121926}#changelog-month-nav .changelog-month-nav__list a.is-active{color:#006CFA;border-left-color:#006CFA;font-weight:500}.dark #changelog-month-nav .changelog-month-nav__year{color:#cdd5df}.dark #changelog-month-nav .changelog-month-nav__list{border-left-color:rgba(255, 255, 255, 0.12)}.dark #changelog-month-nav .changelog-month-nav__list a{color:#9aa4b2}.dark #changelog-month-nav .changelog-month-nav__list a:hover{color:#ffffff}.dark #changelog-month-nav .changelog-month-nav__list a.is-active{color:#4d9bff;border-left-color:#4d9bff}.update-container>div:first-child{display:none}.update-container>div:nth-child(2){flex:1 1 100%;max-width:100%;width:100%}.update-container{gap:0}#footer a[href*=\"utm_campaign=poweredBy\"]{display:none}"}],"page":{"pagePath":"api-reference/webhooks/format---signature","slug":"/api-reference/webhooks/format---signature","pageMetadata":{"title":"Format and signature","description":"Webhooks are HTTP notifications sent from Lago to your application.","href":"/api-reference/webhooks/format---signature"},"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: \"Webhooks are HTTP notifications sent from Lago to your application.\"\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={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The messages are sent as a `,_jsx(_components.code,{children:`POST`}),` request to every webhook endpoint defined in\nthe settings of your Lago organization.`]}),`\n`,_jsx(_components.p,{children:`If you return an error (any response other than a 2xx) or if there is a network\nissue, the message is sent again. Lago attempts each message 3 times, waiting\nlonger between each attempt.`}),`\n`,_jsx(Heading,{level:`2`,id:`message-format`,children:`Message format`}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`POST __WEBHOOK_URL__`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"webhook_type\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"__TYPE__\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"object_type\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"__OBJECT_TYPE__\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"organization_id\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"__ORGANIZATION_ID__\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"__OBJECT_TYPE__\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: {}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`object_type`}),` field names the key that carries the object. For example, an\n`,_jsx(_components.code,{children:`invoice.created`}),` message has `,_jsx(_components.code,{children:`\"object_type\": \"invoice\"`}),` and an `,_jsx(_components.code,{children:`invoice`}),` key.`]}),`\n`,_jsx(Heading,{level:`2`,id:`unique-key`,children:`Unique key`}),`\n`,_jsxs(_components.p,{children:[`Lago sends an idempotency key (a unique identifier) in the `,_jsx(_components.code,{children:`X-Lago-Unique-Key`}),` HTTP header. Use it to\nprocess a message only once.`]}),`\n`,_jsx(Heading,{level:`2`,id:`signature`,children:`Signature`}),`\n`,_jsxs(_components.p,{children:[`Along with the payload, the message carries the `,_jsx(_components.code,{children:`X-Lago-Signature`}),` and `,_jsx(_components.code,{children:`X-Lago-Signature-Algorithm`}),` HTTP headers.`]}),`\n`,_jsx(_components.p,{children:`They ensure the message comes from Lago and has not been altered.`}),`\n`,_jsx(_components.p,{children:`To verify the signature, decode it and compare the result with the body of the webhook.`}),`\n`,_jsxs(_components.p,{children:[`You choose between two signature algorithms when you create a webhook endpoint, `,_jsx(_components.code,{children:`hmac`}),` or `,_jsx(_components.code,{children:`jwt`}),`. The\ndefault is `,_jsx(_components.code,{children:`jwt`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`jwt-signature`,children:`JWT signature`}),`\n`,_jsx(Heading,{level:`4`,id:`1-retrieve-the-public-key`,children:`1. Retrieve the public key`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` lago_python_client `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` Client`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`client = Client(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`api_key`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'__YOUR_API_KEY__'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`webhooks_public_key = client.webhooks().public_key()`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`9`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` apiKey`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"__YOUR_API_KEY__\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.getlago.com/api/v1/webhooks/json_public_key\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`headers:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`Authorization:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`apiKey`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`webhook`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` } = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` webhooksPublicKey`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`webhook`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`public_key`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`17`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'json'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'net/http'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`api_key`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"__YOUR_API_KEY__\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`uri`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`URI`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'https://api.getlago.com/api/v1/webhooks/json_public_key'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`http`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:`Net::HTTP`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(uri.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`host`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, uri.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`port`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`http.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`use_ssl`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = http.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`send_request`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'GET'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` uri.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`request_uri`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` ''`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'Authorization'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` => `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"Bearer `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`#{`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`api_key`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`webhooks_public_key`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:`JSON`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`parse`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(response.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`body`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`dig`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'webhook'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'public_key'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})})]}),`\n`,_jsx(`br`,{}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`You should persist the public key on your side to avoid querying it for each\nwebhook.`})}),`\n`,_jsx(Heading,{level:`4`,id:`2-decode-and-validate-the-signature`,children:`2. Decode and validate the signature`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,numberOfLines:`10`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` jwt`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`decoded_signature = jwt.decode(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` request.headers.get(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'X-Lago-Signature'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` webhooks_public_key,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` algorithms`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'RS256'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` issuer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.getlago.com\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`decoded_signature[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'data'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`] == request.body`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`15`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` jwt`}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"jsonwebtoken\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` token`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`header`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"X-Lago-Signature\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`jwt`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`verify`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` token`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` webhooksPublicKey`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` algorithms:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"RS256\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` issuer:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.getlago.com\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payload`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` payload`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` === `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`15`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'openssl'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'jwt'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`decoded_signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:`JWT`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`decode`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` request.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`headers`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'X-Lago-Signature'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:` OpenSSL::PKey::RSA`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:`Base64`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`decode64`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(webhooks_public_key)),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` algorithm:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'RS256'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` iss:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.getlago.com\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` verify_iss:`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`first`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`decoded_signature[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'data'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`] == request.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`body`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`3`,id:`hmac-signature`,children:`HMAC signature`}),`\n`,_jsx(Heading,{level:`4`,id:`decode-and-validate-the-signature`,children:`Decode and validate the signature`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,numberOfLines:`6`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` hmac`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` base64`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`calc_sig = hmac.new(LAGO_HMAC_KEY, request.body.encode(), `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'sha256'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`).digest()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`base64_sig = base64.b64encode(calc_sig).decode()`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`request.headers.get(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'X-Lago-Signature'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) == base64_sig`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`10`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` crypto`}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'crypto'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`header`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'X-Lago-Signature'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`crypto`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`createHmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'sha256'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'YOUR_ORGANIZATION_HMAC_KEY'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`update`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` encodedBody`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`digest`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`toString`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'base64'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` == `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`encodedBody`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`7`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`require`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'openssl'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = request.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`headers`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'X-Lago-Signature'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:`OpenSSL::HMAC`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`digest`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'sha-256'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'YOUR_ORGANIZATION_HMAC_KEY'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, request.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`body`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`base64_hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4EC9B0`,\"--shiki-dark\":`#4EC9B0`},children:`Base64`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`strict_encode64`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(hmac)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`base64_hmac == signature`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`7`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$_SERVER`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'X-Lago-Signature'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`];`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$requestBody`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`file_get_contents`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'php://input'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`hash_hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'sha256'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$requestBody`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'YOUR_ORGANIZATION_HMAC_KEY'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$base64Signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`base64_encode`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$hmac`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$valid`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`hash_equals`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`$base64Signature`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})})]})]})}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":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Format and signature","description":"Webhooks are HTTP notifications sent from Lago to your application.","href":"/api-reference/webhooks/format---signature"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Message format","slug":"message-format","depth":2,"children":[]},{"title":"Unique key","slug":"unique-key","depth":2,"children":[]},{"title":"Signature","slug":"signature","depth":2,"children":[{"title":"JWT signature","slug":"jwt-signature","depth":3,"children":[]},{"title":"1. Retrieve the public key","slug":"1-retrieve-the-public-key","depth":4,"children":[]},{"title":"2. Decode and validate the signature","slug":"2-decode-and-validate-the-signature","depth":4,"children":[]},{"title":"HMAC signature","slug":"hmac-signature","depth":3,"children":[]},{"title":"Decode and validate the signature","slug":"decode-and-validate-the-signature","depth":4,"children":[]}]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/lago-docs/a0e77058367d9146/canonical.js","/docs/_mintlify/custom/lago-docs/fa2446312177e9c6/loader.js","/docs/_mintlify/custom/lago-docs/c55d8403f7fc83ad/changelog-anchor-redirect.js","/docs/_mintlify/custom/lago-docs/8c326c8b67b47933/changelog-month-nav.js","/docs/_mintlify/custom/lago-docs/103c90943d27f62a/webmcp.js","/docs/_mintlify/custom/lago-docs/1219fb859e5c496e/github-outbound.js"],"subdomain":"lago-docs","siteName":"Lago","title":"Format and signature - Lago","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T09:14:59.155Z","originalFileLocation":"api-reference/webhooks/format---signature.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=\"Webhooks are HTTP notifications sent from Lago to your application.\">\u003cmeta data-mint-head name=\"keywords\" content=\"Lago API, billing API, usage metering API, OpenAPI, billing SDK, Lago MCP\">\u003cmeta data-mint-head name=\"application-name\" content=\"Lago\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_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=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Format and signature - Lago\">\u003cmeta data-mint-head property=\"og:description\" content=\"Webhooks are HTTP notifications sent from Lago to your application.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Lago\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://getlago.com/docs/api-reference/webhooks/format---signature\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lago-docs.mintlify.site/docs/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Format+and+signature\u0026amp;description=Webhooks+are+HTTP+notifications+sent+from+Lago+to+your+application.\u0026amp;theme=e69bad9b2f17285816711238\u0026amp;signature=1abaa924dcc63cd00c83202b7f54d7460578c2ddd30b0835cdb7a1fe429c51df\">\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=\"Format and signature - Lago\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Webhooks are HTTP notifications sent from Lago to your application.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lago-docs.mintlify.site/docs/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Format+and+signature\u0026amp;description=Webhooks+are+HTTP+notifications+sent+from+Lago+to+your+application.\u0026amp;theme=e69bad9b2f17285816711238\u0026amp;signature=1abaa924dcc63cd00c83202b7f54d7460578c2ddd30b0835cdb7a1fe429c51df\">\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=\"/docs/mintlify-assets/_mintlify/favicons/lago-docs/PXUAhcpsneOuo3Dn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Lago\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#006CFA\">\u003clink data-mint-head rel=\"canonical\" href=\"https://getlago.com/docs/api-reference/webhooks/format---signature\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/webhooks/format---signature.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://getlago.com/#organization\",\"name\":\"Lago\",\"legalName\":\"Get Lago Corp.\",\"url\":\"https://getlago.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://getlago.com/docs/logo/light.svg\"},\"sameAs\":[\"https://github.com/getlago\",\"https://www.linkedin.com/company/getlago\",\"https://x.com/GetLago\",\"https://www.youtube.com/channel/UCp6ltp7n3SgDVsmerJ7O7ZA\"]},{\"@type\":\"WebSite\",\"@id\":\"https://getlago.com/docs#website\",\"name\":\"Lago\",\"url\":\"https://getlago.com/docs\",\"publisher\":{\"@id\":\"https://getlago.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://getlago.com/docs/api-reference/webhooks/format---signature#webpage\",\"url\":\"https://getlago.com/docs/api-reference/webhooks/format---signature\",\"name\":\"Format and signature\",\"description\":\"Webhooks are HTTP notifications sent from Lago to your application.\",\"dateModified\":\"2026-10-21T09:14:59.155Z\",\"isPartOf\":{\"@id\":\"https://getlago.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://getlago.com/docs/api-reference/webhooks/format---signature#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://getlago.com/docs/api-reference/webhooks/format---signature#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://getlago.com/docs/api-reference/intro\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Format and signature\",\"item\":\"https://getlago.com/docs/api-reference/webhooks/format---signature\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://getlago.com/docs/api-reference/webhooks/format---signature#article\",\"headline\":\"Format and signature\",\"name\":\"Format and signature\",\"description\":\"Webhooks are HTTP notifications sent from Lago to your application.\",\"url\":\"https://getlago.com/docs/api-reference/webhooks/format---signature\",\"mainEntityOfPage\":{\"@id\":\"https://getlago.com/docs/api-reference/webhooks/format---signature#webpage\"},\"dateModified\":\"2026-10-21T09:14:59.155Z\",\"publisher\":{\"@id\":\"https://getlago.com/#organization\"},\"isPartOf\":{\"@id\":\"https://getlago.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Lago\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Lago\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/api-reference/webhooks/format---signature.md","siteName":"Lago","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://getlago.com/blog"},{"anchor":"Community","icon":"slack","href":"https://getlago.com/slack"},{"anchor":"GitHub","icon":"github","href":"https://github.com/getlago/lago"},{"anchor":"Status","icon":"signal-bars","href":"https://status.getlago.com/"}]},"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/welcome"}]},{"tab":"Guide","pages":[{"title":"Guide","href":"/guide/introduction/welcome-to-lago"}]},{"tab":"API References","groups":[{"group":"API Reference","pages":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/api-reference/intro"},{"title":"API standards","href":"/api-reference/api-standards"},{"title":"API versioning and deprecation policy","href":"/api-reference/versioning"},{"title":"Errors","href":"/api-reference/errors"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Rate limits","href":"/api-reference/rate-limits"}]},{"group":"Add-ons","pages":[{"title":"The add-on object","href":"/api-reference/add-ons/add-on-object"},{"openapi":"POST /add_ons","title":"Create an add-on","href":"/api-reference/add-ons/create"},{"openapi":"PUT /add_ons/{code}","title":"Update an add-on","href":"/api-reference/add-ons/update"},{"openapi":"DELETE /add_ons/{code}","title":"Delete an add-on","href":"/api-reference/add-ons/destroy"},{"openapi":"GET /add_ons/{code}","title":"Retrieve an add-on","href":"/api-reference/add-ons/get-specific"},{"openapi":"GET /add_ons","title":"List all add-ons","href":"/api-reference/add-ons/get-all"}]},{"group":"Alerts","pages":[{"title":"The alert object","href":"/api-reference/alerts/alert-object"},{"openapi":"POST /subscriptions/{external_id}/alerts","title":"Create an alert","href":"/api-reference/alerts/create"},{"openapi":"PUT /subscriptions/{external_id}/alerts/{code}","title":"Update an alert","href":"/api-reference/alerts/update"},{"openapi":"DELETE /subscriptions/{external_id}/alerts/{code}","title":"Delete an alert","href":"/api-reference/alerts/delete"},{"openapi":"GET /subscriptions/{external_id}/alerts/{code}","title":"Retrieve an alert","href":"/api-reference/alerts/get-specific"},{"openapi":"GET /subscriptions/{external_id}/alerts","title":"List all alerts","href":"/api-reference/alerts/get-all"}]},{"group":"Audit logs","pages":[{"title":"The activity log object","href":"/api-reference/audit-logs/activity-logs-object"},{"openapi":"GET /activity_logs","title":"List all activity logs","href":"/api-reference/audit-logs/get-all-activity-logs"},{"openapi":"GET /activity_logs/{activity_id}","title":"Retrieve an activity log","href":"/api-reference/audit-logs/get-specific-activity-log"},{"title":"The API log object","href":"/api-reference/audit-logs/api-logs-object"},{"openapi":"GET /api_logs","title":"List all API logs","href":"/api-reference/audit-logs/get-all-api-logs"},{"openapi":"GET /api_logs/{request_id}","title":"Retrieve an API log","href":"/api-reference/audit-logs/get-specific-api-log"}]},{"group":"Billable metrics","pages":[{"title":"The billable metric object","href":"/api-reference/billable-metrics/object"},{"title":"Create a billable metric","openapi":"POST /billable_metrics","href":"/api-reference/billable-metrics/create"},{"title":"Update a billable metric","openapi":"PUT /billable_metrics/{code}","href":"/api-reference/billable-metrics/update"},{"openapi":"DELETE /billable_metrics/{code}","title":"Delete a billable metric","href":"/api-reference/billable-metrics/destroy"},{"openapi":"GET /billable_metrics/{code}","title":"Retrieve a billable metric","href":"/api-reference/billable-metrics/get-specific"},{"openapi":"GET /billable_metrics","title":"List all billable metrics","href":"/api-reference/billable-metrics/get-all"}]},{"group":"Billing entities","pages":[{"title":"The billing entity object","href":"/api-reference/billing-entities/object"},{"title":"Create a billing entity","openapi":"POST /billing_entities","href":"/api-reference/billing-entities/create"},{"title":"Update a billing entity","openapi":"PUT /billing_entities/{code}","href":"/api-reference/billing-entities/update"},{"title":"Retrieve a billing entity","openapi":"GET /billing_entities/{code}","href":"/api-reference/billing-entities/get-specific"},{"title":"List all billing entities","openapi":"GET /billing_entities","href":"/api-reference/billing-entities/get-all"}]},{"group":"Coupons","pages":[{"title":"The coupon object","href":"/api-reference/coupons/coupon-object"},{"openapi":"POST /coupons","title":"Create a coupon","href":"/api-reference/coupons/create"},{"openapi":"PUT /coupons/{code}","title":"Update a coupon","href":"/api-reference/coupons/update"},{"openapi":"DELETE /coupons/{code}","title":"Delete a coupon","href":"/api-reference/coupons/destroy"},{"openapi":"GET /coupons/{code}","title":"Retrieve a coupon","href":"/api-reference/coupons/get-specific"},{"openapi":"GET /coupons","title":"List all coupons","href":"/api-reference/coupons/get-all"},{"title":"The applied coupon object","href":"/api-reference/coupons/applied-coupon-object"},{"openapi":"POST /applied_coupons","title":"Apply a coupon","href":"/api-reference/coupons/apply"},{"openapi":"DELETE /customers/{external_customer_id}/applied_coupons/{applied_coupon_id}","title":"Delete an applied coupon","href":"/api-reference/coupons/destroy-applied-coupon"},{"openapi":"GET /applied_coupons","title":"List all applied coupons","href":"/api-reference/coupons/get-all-applied"}]},{"group":"Credit notes","pages":[{"title":"The credit note object","href":"/api-reference/credit-notes/credit-note-object"},{"openapi":"POST /credit_notes/estimate","title":"Estimate a credit note","href":"/api-reference/credit-notes/estimate"},{"openapi":"POST /credit_notes","title":"Create a credit note","href":"/api-reference/credit-notes/create"},{"openapi":"POST /credit_notes/{lago_id}/download","title":"Download a credit note","href":"/api-reference/credit-notes/download"},{"openapi":"PUT /credit_notes/{lago_id}","title":"Update a credit note","href":"/api-reference/credit-notes/update"},{"openapi":"PUT /credit_notes/{lago_id}/void","title":"Void available credit","href":"/api-reference/credit-notes/void"},{"openapi":"GET /credit_notes/{lago_id}","title":"Retrieve a credit note","href":"/api-reference/credit-notes/get-specific"},{"openapi":"GET /credit_notes","title":"List all credit notes","href":"/api-reference/credit-notes/get-all"},{"group":"Metadata","pages":[{"openapi":"POST /credit_notes/{lago_id}/metadata","title":"Replace all metadata","href":"/api-reference/credit-notes/metadata/create-metadata-cn"},{"openapi":"PATCH /credit_notes/{lago_id}/metadata","title":"Update metadata","href":"/api-reference/credit-notes/metadata/update-metadata-cn"},{"openapi":"DELETE /credit_notes/{lago_id}/metadata/{key}","title":"Delete a metadata","href":"/api-reference/credit-notes/metadata/delete-a-metadata-cn"},{"openapi":"DELETE /credit_notes/{lago_id}/metadata","title":"Delete all metadata","href":"/api-reference/credit-notes/metadata/delete-all-metadata-cn"}]}]},{"group":"Customer usage","pages":[{"title":"The customer usage object","href":"/api-reference/customer-usage/customer-usage-object"},{"openapi":"GET /analytics/usage","title":"Retrieve usages","href":"/api-reference/customer-usage/usages"},{"openapi":"GET /customers/{external_customer_id}/current_usage","title":"Retrieve current usage","href":"/api-reference/customer-usage/get-current"},{"openapi":"GET /customers/{external_customer_id}/projected_usage","title":"Retrieve projected usage","href":"/api-reference/customer-usage/get-projected"},{"openapi":"GET /customers/{external_customer_id}/past_usage","title":"Retrieve past usage","href":"/api-reference/customer-usage/get-past"}]},{"group":"Customers","pages":[{"title":"The customer object","href":"/api-reference/customers/object"},{"openapi":"POST /customers","title":"Create a customer","href":"/api-reference/customers/create"},{"openapi":"POST /customers","title":"Update a customer","href":"/api-reference/customers/update"},{"openapi":"POST /customers/{external_customer_id}/checkout_url","title":"Regenerate checkout URL","href":"/api-reference/customers/psp-checkout-url"},{"openapi":"DELETE /customers/{external_customer_id}","title":"Delete a customer","href":"/api-reference/customers/delete"},{"openapi":"GET /customers/{external_customer_id}","title":"Retrieve a customer","href":"/api-reference/customers/get-specific"},{"openapi":"GET /customers","title":"List all customers","href":"/api-reference/customers/get-all"},{"openapi":"GET /customers/{external_customer_id}/portal_url","title":"Retrieve customer portal URL","href":"/api-reference/customers/customer-portal"}]},{"group":"Entitlements","pages":[{"title":"The feature object","href":"/api-reference/entitlements/features/feature-object"},{"openapi":"POST /features","title":"Create a feature","href":"/api-reference/entitlements/features/create-feature"},{"openapi":"PUT /features/{code}","title":"Update a feature","href":"/api-reference/entitlements/features/update-feature"},{"openapi":"DELETE /features/{code}","title":"Delete a feature","href":"/api-reference/entitlements/features/delete-feature"},{"openapi":"DELETE /features/{code}/privileges/{privilege_code}","title":"Delete a feature privilege","href":"/api-reference/entitlements/features/delete-privilege"},{"openapi":"GET /features/{code}","title":"Retrieve a feature","href":"/api-reference/entitlements/features/get-feature"},{"openapi":"GET /features","title":"List all features","href":"/api-reference/entitlements/features/get-all-features"},{"title":"The plan entitlement object","href":"/api-reference/entitlements/plan-entitlements/plan-entitlement-object"},{"openapi":"POST /plans/{code}/entitlements","title":"Create plan entitlements","href":"/api-reference/entitlements/plan-entitlements/create-plan-entitlement"},{"openapi":"PATCH /plans/{code}/entitlements","title":"Update plan entitlements","href":"/api-reference/entitlements/plan-entitlements/update-plan-entitlement"},{"openapi":"DELETE /plans/{code}/entitlements/{feature_code}","title":"Delete a plan entitlement","href":"/api-reference/entitlements/plan-entitlements/delete-plan-entitlement"},{"openapi":"DELETE /plans/{code}/entitlements/{feature_code}/privileges/{privilege_code}","title":"Delete a plan entitlement privilege","href":"/api-reference/entitlements/plan-entitlements/delete-plan-entitlement-privilege"},{"openapi":"GET /plans/{code}/entitlements/{feature_code}","title":"Retrieve a plan entitlement","href":"/api-reference/entitlements/plan-entitlements/get-specific-plan-entitlement"},{"openapi":"GET /plans/{code}/entitlements","title":"List plan entitlements","href":"/api-reference/entitlements/plan-entitlements/get-all-plan-entitlements"},{"title":"The subscription entitlement object","href":"/api-reference/entitlements/subscription-entitlements/subscription-entitlement-object"},{"openapi":"PATCH /subscriptions/{external_id}/entitlements","title":"Update subscription entitlements","href":"/api-reference/entitlements/subscription-entitlements/update-subscription-entitlement"},{"openapi":"DELETE /subscriptions/{external_id}/entitlements/{feature_code}","title":"Delete a subscription entitlement","href":"/api-reference/entitlements/subscription-entitlements/delete-subscription-entitlement"},{"openapi":"DELETE /subscriptions/{external_id}/entitlements/{feature_code}/privileges/{privilege_code}","title":"Delete a subscription entitlement privilege","href":"/api-reference/entitlements/subscription-entitlements/delete-subscription-entitlement-privilege"},{"openapi":"GET /subscriptions/{external_id}/entitlements","title":"List subscription entitlements","href":"/api-reference/entitlements/subscription-entitlements/get-all-subscription-entitlements"}]},{"group":"Events","pages":[{"title":"The event object","href":"/api-reference/events/event-object"},{"openapi":"POST /events","title":"Send usage event","href":"/api-reference/events/usage"},{"openapi":"POST /events/batch","title":"Batch usage events","href":"/api-reference/events/batch"},{"openapi":"POST /events/estimate_fees","title":"Estimate an upcoming fee","href":"/api-reference/events/estimated-fee"},{"openapi":"GET /events/{transaction_id}","title":"Retrieve an event","href":"/api-reference/events/get-specific"},{"openapi":"GET /events","title":"List all events","href":"/api-reference/events/list-events"}]},{"group":"Fees","pages":[{"title":"The fee object","href":"/api-reference/fees/fee-object"},{"openapi":"PUT /fees/{lago_id}","title":"Update a fee","href":"/api-reference/fees/update-fee"},{"openapi":"DELETE /fees/{lago_id}","title":"Delete a fee","href":"/api-reference/fees/destroy-fee"},{"openapi":"GET /fees/{lago_id}","title":"Retrieve a fee","href":"/api-reference/fees/retrieve-fee"},{"openapi":"GET /fees","title":"List all fees","href":"/api-reference/fees/list-fees"}]},{"group":"Governance","pages":[{"title":"The governance entity object","href":"/api-reference/governance/entity-object"},{"openapi":"POST /usage_attribution_types","title":"Create a governance entity","href":"/api-reference/governance/create-entity"},{"openapi":"PUT /usage_attribution_types/{code}","title":"Update a governance entity","href":"/api-reference/governance/update-entity"},{"openapi":"DELETE /usage_attribution_types/{code}","title":"Delete a governance entity","href":"/api-reference/governance/delete-entity"},{"openapi":"GET /usage_attribution_types/{code}","title":"Retrieve a governance entity","href":"/api-reference/governance/get-specific-entity"},{"openapi":"GET /usage_attribution_types","title":"List all governance entities","href":"/api-reference/governance/get-all-entities"},{"title":"The attributed usage object","href":"/api-reference/governance/attributed-usage-object"},{"openapi":"GET /customers/{external_customer_id}/attributed_usage","title":"Retrieve attributed usage","href":"/api-reference/governance/get-attributed-usage"}]},{"group":"Invoices","pages":[{"title":"The invoice object","href":"/api-reference/invoices/invoice-object"},{"openapi":"POST /invoices","title":"Create a one-off invoice","href":"/api-reference/invoices/create-oneoff"},{"openapi":"POST /invoices/preview","title":"Preview an invoice","href":"/api-reference/invoices/preview"},{"openapi":"POST /invoices/{lago_id}/download","title":"Download an invoice","href":"/api-reference/invoices/download"},{"openapi":"POST /invoices/{lago_id}/void","title":"Void an invoice","href":"/api-reference/invoices/void"},{"openapi":"POST /invoices/{lago_id}/retry","title":"Retry an invoice finalization","href":"/api-reference/invoices/retry_finalization"},{"openapi":"POST /invoices/{lago_id}/retry_payment","title":"Retry an invoice payment","href":"/api-reference/invoices/retry"},{"openapi":"POST /invoices/{lago_id}/payment_url","title":"Generate a payment URL","href":"/api-reference/invoices/payment-url"},{"openapi":"PUT /invoices/{lago_id}/refresh","title":"Refresh an invoice","href":"/api-reference/invoices/refresh"},{"openapi":"PUT /invoices/{lago_id}/finalize","title":"Finalize an invoice","href":"/api-reference/invoices/finalize"},{"openapi":"PUT /invoices/{lago_id}","title":"Update an invoice","href":"/api-reference/invoices/update"},{"openapi":"GET /invoices/{lago_id}","title":"Retrieve an invoice","href":"/api-reference/invoices/get-specific"},{"openapi":"GET /invoices","title":"List all invoices","href":"/api-reference/invoices/get-all"}]},{"group":"Organizations","pages":[{"title":"The organization object","href":"/api-reference/organizations/organization-object"},{"openapi":"PUT /organizations","title":"Update organization (deprecated)","href":"/api-reference/organizations/update"}]},{"group":"Payments","pages":[{"title":"The payment object","href":"/api-reference/payments/payment-object"},{"title":"Create a payment","openapi":"POST /payments","href":"/api-reference/payments/create"},{"title":"Retrieve a payment","openapi":"GET /payments/{lago_id}","href":"/api-reference/payments/get-specific"},{"title":"List all payments","openapi":"GET /payments","href":"/api-reference/payments/get-all"}]},{"group":"Payment methods","pages":[{"title":"The payment method object","href":"/api-reference/payment-methods/payment-method-object"},{"openapi":"PUT /customers/{external_customer_id}/payment_methods/{lago_id}/set_as_default","title":"Update a payment method","href":"/api-reference/payment-methods/update"},{"openapi":"DELETE /customers/{external_customer_id}/payment_methods/{lago_id}","title":"Delete a payment method from a customer","href":"/api-reference/payment-methods/delete"},{"openapi":"GET /customers/{external_customer_id}/payment_methods","title":"List all payment methods for a customer","href":"/api-reference/payment-methods/get-all"}]},{"group":"Payment receipts","pages":[{"title":"The payment receipt object","href":"/api-reference/payment-receipts/payment-receipt-object"},{"openapi":"GET /payment_receipts/{lago_id}","title":"Retrieve a payment receipt","href":"/api-reference/payment-receipts/get-specific"},{"openapi":"GET /payment_receipts","title":"List all payment receipts","href":"/api-reference/payment-receipts/get-all"}]},{"group":"Payment requests","pages":[{"title":"The payment request object","href":"/api-reference/payment-requests/payment-request-object"},{"title":"Create a payment request","openapi":"POST /payment_requests","href":"/api-reference/payment-requests/create"},{"title":"List all payment requests","openapi":"GET /payment_requests","href":"/api-reference/payment-requests/get-all"}]},{"group":"Plans","pages":[{"title":"The plan object","href":"/api-reference/plans/object"},{"title":"Create a plan","openapi":"POST /plans","href":"/api-reference/plans/create"},{"title":"Update a plan","openapi":"PUT /plans/{code}","href":"/api-reference/plans/update"},{"openapi":"DELETE /plans/{code}","title":"Delete a plan","href":"/api-reference/plans/destroy"},{"openapi":"GET /plans/{code}","title":"Retrieve a plan","href":"/api-reference/plans/get-specific"},{"openapi":"GET /plans","title":"List all plans","href":"/api-reference/plans/get-all-plans"},{"group":"Charges","pages":[{"title":"The charge object","href":"/api-reference/plans/charges/object"},{"title":"Create a charge","openapi":"POST /plans/{code}/charges","href":"/api-reference/plans/charges/create"},{"title":"Update a charge","openapi":"PUT /plans/{code}/charges/{charge_code}","href":"/api-reference/plans/charges/update"},{"title":"Delete a charge","openapi":"DELETE /plans/{code}/charges/{charge_code}","href":"/api-reference/plans/charges/destroy"},{"title":"Retrieve a charge","openapi":"GET /plans/{code}/charges/{charge_code}","href":"/api-reference/plans/charges/get-specific"},{"title":"List all charges","openapi":"GET /plans/{code}/charges","href":"/api-reference/plans/charges/get-all"},{"group":"Filters","pages":[{"title":"The charge filter object","href":"/api-reference/plans/charges/filters/object"},{"title":"Create a charge filter","openapi":"POST /plans/{code}/charges/{charge_code}/filters","href":"/api-reference/plans/charges/filters/create"},{"title":"Update a charge filter","openapi":"PUT /plans/{code}/charges/{charge_code}/filters/{filter_id}","href":"/api-reference/plans/charges/filters/update"},{"title":"Delete a charge filter","openapi":"DELETE /plans/{code}/charges/{charge_code}/filters/{filter_id}","href":"/api-reference/plans/charges/filters/destroy"},{"title":"Retrieve a charge filter","openapi":"GET /plans/{code}/charges/{charge_code}/filters/{filter_id}","href":"/api-reference/plans/charges/filters/get-specific"},{"title":"List all charge filters","openapi":"GET /plans/{code}/charges/{charge_code}/filters","href":"/api-reference/plans/charges/filters/get-all"}]}]},{"group":"Fixed Charges","pages":[{"title":"The fixed charge object","href":"/api-reference/plans/fixed-charges/object"},{"title":"Create a fixed charge","openapi":"POST /plans/{code}/fixed_charges","href":"/api-reference/plans/fixed-charges/create"},{"title":"Update a fixed charge","openapi":"PUT /plans/{code}/fixed_charges/{fixed_charge_code}","href":"/api-reference/plans/fixed-charges/update"},{"title":"Delete a fixed charge","openapi":"DELETE /plans/{code}/fixed_charges/{fixed_charge_code}","href":"/api-reference/plans/fixed-charges/destroy"},{"title":"Retrieve a fixed charge","openapi":"GET /plans/{code}/fixed_charges/{fixed_charge_code}","href":"/api-reference/plans/fixed-charges/get-specific"},{"title":"List all fixed charges","openapi":"GET /plans/{code}/fixed_charges","href":"/api-reference/plans/fixed-charges/get-all"}]}]},{"group":"Quotes \u0026 Order forms","pages":[{"group":"Quotes","pages":[{"title":"The quote object","href":"/api-reference/quotes/quote-object"},{"title":"The quote version object","href":"/api-reference/quotes/quote-version-object"},{"openapi":"POST /quote_versions/{lago_id}/approve","title":"Approve a quote version","href":"/api-reference/quotes/approve-version"},{"openapi":"POST /quote_versions/{lago_id}/void","title":"Void a quote version","href":"/api-reference/quotes/void-version"},{"openapi":"POST /quote_versions/{lago_id}/clone","title":"Clone a quote version","href":"/api-reference/quotes/clone-version"},{"openapi":"GET /quotes/{lago_id}","title":"Retrieve a quote","href":"/api-reference/quotes/get-specific"},{"openapi":"GET /quotes","title":"List all quotes","href":"/api-reference/quotes/get-all"},{"openapi":"GET /quote_versions/{lago_id}","title":"Retrieve a quote version","href":"/api-reference/quotes/get-specific-version"},{"openapi":"GET /quotes/{lago_id}/versions","title":"List all versions of a quote","href":"/api-reference/quotes/get-all-versions"}]},{"group":"Order forms","pages":[{"title":"The order form object","href":"/api-reference/quotes/order-forms/order-form-object"},{"openapi":"POST /order_forms/{lago_id}/mark_as_signed","title":"Mark an order form as signed","href":"/api-reference/quotes/order-forms/mark-as-signed"},{"openapi":"POST /order_forms/{lago_id}/void","title":"Void an order form","href":"/api-reference/quotes/order-forms/void"},{"openapi":"GET /order_forms/{lago_id}","title":"Retrieve an order form","href":"/api-reference/quotes/order-forms/get-specific"},{"openapi":"GET /order_forms","title":"List all order forms","href":"/api-reference/quotes/order-forms/get-all"}]},{"group":"Orders","pages":[{"title":"The order object","href":"/api-reference/quotes/orders/order-object"},{"openapi":"POST /orders/{lago_id}/execute","title":"Execute an order","href":"/api-reference/quotes/orders/execute"},{"openapi":"GET /orders/{lago_id}","title":"Retrieve an order","href":"/api-reference/quotes/orders/get-specific"},{"openapi":"GET /orders","title":"List all orders","href":"/api-reference/quotes/orders/get-all"}]}]},{"group":"Resources","pages":[{"title":"Currencies","href":"/api-reference/resources/currencies"},{"title":"Timezones","href":"/api-reference/resources/timezones"},{"title":"Document locales","href":"/api-reference/resources/locales"}]},{"group":"Subscriptions","pages":[{"title":"The subscription object","href":"/api-reference/subscriptions/subscription-object"},{"title":"Create a subscription","openapi":"POST /subscriptions","href":"/api-reference/subscriptions/assign-plan"},{"title":"Update a subscription","openapi":"PUT /subscriptions/{external_id}","href":"/api-reference/subscriptions/update"},{"title":"Terminate a subscription","openapi":"DELETE /subscriptions/{external_id}","href":"/api-reference/subscriptions/terminate"},{"title":"Retrieve a subscription","openapi":"GET /subscriptions/{external_id}","href":"/api-reference/subscriptions/get-specific"},{"title":"List all subscriptions","openapi":"GET /subscriptions","href":"/api-reference/subscriptions/get-all"},{"group":"Lifetime Usage","pages":[{"title":"The lifetime usage object","href":"/api-reference/subscriptions/lifetime-usage-object"},{"title":"Update subscription lifetime usage","openapi":"PUT /subscriptions/{external_id}/lifetime_usage","href":"/api-reference/subscriptions/update-lifetime-usage"},{"title":"Retrieve subscription lifetime usage","openapi":"GET /subscriptions/{external_id}/lifetime_usage","href":"/api-reference/subscriptions/get-lifetime-usage"}]},{"group":"Charges","pages":[{"title":"The charge object","href":"/api-reference/subscriptions/charges/object"},{"title":"Update a charge","openapi":"PUT /subscriptions/{external_id}/charges/{charge_code}","href":"/api-reference/subscriptions/charges/update"},{"title":"Retrieve a charge","openapi":"GET /subscriptions/{external_id}/charges/{charge_code}","href":"/api-reference/subscriptions/charges/get-specific"},{"title":"List all charges","openapi":"GET /subscriptions/{external_id}/charges","href":"/api-reference/subscriptions/charges/get-all"},{"group":"Filters","pages":[{"title":"The charge filter object","href":"/api-reference/subscriptions/charges/filters/object"},{"title":"Create a charge filter","openapi":"POST /subscriptions/{external_id}/charges/{charge_code}/filters","href":"/api-reference/subscriptions/charges/filters/create"},{"title":"Update a charge filter","openapi":"PUT /subscriptions/{external_id}/charges/{charge_code}/filters/{filter_id}","href":"/api-reference/subscriptions/charges/filters/update"},{"title":"Delete a charge filter","openapi":"DELETE /subscriptions/{external_id}/charges/{charge_code}/filters/{filter_id}","href":"/api-reference/subscriptions/charges/filters/destroy"},{"title":"Retrieve a charge filter","openapi":"GET /subscriptions/{external_id}/charges/{charge_code}/filters/{filter_id}","href":"/api-reference/subscriptions/charges/filters/get-specific"},{"title":"List all charge filters","openapi":"GET /subscriptions/{external_id}/charges/{charge_code}/filters","href":"/api-reference/subscriptions/charges/filters/get-all"}]}]},{"group":"Fixed Charges","pages":[{"title":"The fixed charge object","href":"/api-reference/subscriptions/fixed-charges/object"},{"title":"Update a fixed charge","openapi":"PUT /subscriptions/{external_id}/fixed_charges/{fixed_charge_code}","href":"/api-reference/subscriptions/fixed-charges/update"},{"title":"Retrieve a fixed charge","openapi":"GET /subscriptions/{external_id}/fixed_charges/{fixed_charge_code}","href":"/api-reference/subscriptions/fixed-charges/get-specific"},{"title":"List all fixed charges","openapi":"GET /subscriptions/{external_id}/fixed_charges","href":"/api-reference/subscriptions/fixed-charges/get-all"}]}]},{"group":"Taxes","pages":[{"title":"The tax object","href":"/api-reference/taxes/tax-object"},{"openapi":"POST /taxes","title":"Create a tax rate","href":"/api-reference/taxes/create"},{"openapi":"PUT /taxes/{code}","title":"Update a tax rate","href":"/api-reference/taxes/update"},{"openapi":"DELETE /taxes/{code}","title":"Delete a tax rate","href":"/api-reference/taxes/destroy"},{"openapi":"GET /taxes/{code}","title":"Retrieve a tax rate","href":"/api-reference/taxes/get-specific"},{"openapi":"GET /taxes","title":"List all tax rates","href":"/api-reference/taxes/get-all"}]},{"group":"Wallets","pages":[{"title":"The wallet object","href":"/api-reference/wallets/wallet-object"},{"openapi":"POST /wallets","title":"Create a wallet","href":"/api-reference/wallets/create"},{"openapi":"PUT /wallets/{lago_id}","title":"Update a wallet","href":"/api-reference/wallets/update"},{"openapi":"DELETE /wallets/{lago_id}","title":"Terminate a wallet","href":"/api-reference/wallets/terminate"},{"openapi":"GET /wallets/{lago_id}","title":"Retrieve a wallet","href":"/api-reference/wallets/get-specific"},{"openapi":"GET /wallets","title":"List all wallets","href":"/api-reference/wallets/get-all"},{"group":"Wallets by code","pages":[{"openapi":"POST /customers/{external_customer_id}/wallets","title":"Create a wallet for a customer","href":"/api-reference/wallets/create-for-customer"},{"openapi":"PUT /customers/{external_customer_id}/wallets/{code}","title":"Update a wallet by code","href":"/api-reference/wallets/update-by-code"},{"openapi":"DELETE /customers/{external_customer_id}/wallets/{code}","title":"Terminate a wallet by code","href":"/api-reference/wallets/terminate-by-code"},{"openapi":"GET /customers/{external_customer_id}/wallets/{code}","title":"Retrieve a wallet by code","href":"/api-reference/wallets/get-specific-by-code"},{"openapi":"GET /customers/{external_customer_id}/wallets","title":"List all wallets for a customer","href":"/api-reference/wallets/get-all-for-customer"}]},{"group":"Wallet transactions","pages":[{"title":"The wallet transaction object","href":"/api-reference/wallets/wallet-transaction-object"},{"openapi":"POST /wallet_transactions","title":"Top-up a wallet","href":"/api-reference/wallets/top-up"},{"openapi":"POST /wallet_transactions/{lago_id}/payment_url","title":"Generate a payment URL","href":"/api-reference/wallets/wallet-transaction-payment-url"},{"openapi":"GET /wallet_transactions/{lago_id}","title":"Retrieve a transaction","href":"/api-reference/wallets/get-specific-transaction"},{"openapi":"GET /wallets/{lago_id}/wallet_transactions","title":"List all wallet transactions","href":"/api-reference/wallets/get-all-transactions"},{"openapi":"GET /wallet_transactions/{lago_id}/consumptions","title":"List all consumptions for a wallet transaction","href":"/api-reference/wallets/get-all-consumptions"},{"openapi":"GET /wallet_transactions/{lago_id}/fundings","title":"List all fundings for a wallet transaction","href":"/api-reference/wallets/get-all-fundings"}]},{"group":"Wallet alerts","pages":[{"title":"The wallet alert object","href":"/api-reference/wallets/wallet-alert-object"},{"openapi":"POST /customers/{external_customer_id}/wallets/{wallet_code}/alerts","title":"Create a wallet alert","href":"/api-reference/wallets/create-alert"},{"openapi":"PUT /customers/{external_customer_id}/wallets/{wallet_code}/alerts/{code}","title":"Update a wallet alert","href":"/api-reference/wallets/update-alert"},{"openapi":"DELETE /customers/{external_customer_id}/wallets/{wallet_code}/alerts/{code}","title":"Delete a wallet alert","href":"/api-reference/wallets/delete-alert"},{"openapi":"GET /customers/{external_customer_id}/wallets/{wallet_code}/alerts/{code}","title":"Retrieve a wallet alert","href":"/api-reference/wallets/get-specific-alert"},{"openapi":"GET /customers/{external_customer_id}/wallets/{wallet_code}/alerts","title":"List all wallet alerts","href":"/api-reference/wallets/get-all-alerts"}]}]},{"group":"Webhook endpoints","pages":[{"title":"The webhook endpoint object","href":"/api-reference/webhook-endpoints/webhook-endpoint-object"},{"openapi":"POST /webhook_endpoints","title":"Create a webhook endpoint","href":"/api-reference/webhook-endpoints/create"},{"openapi":"PUT /webhook_endpoints/{lago_id}","title":"Update a webhook endpoint","href":"/api-reference/webhook-endpoints/update"},{"openapi":"DELETE /webhook_endpoints/{lago_id}","title":"Delete a webhook endpoint","href":"/api-reference/webhook-endpoints/destroy"},{"openapi":"GET /webhook_endpoints","title":"List all webhook endpoints","href":"/api-reference/webhook-endpoints/get-all"},{"openapi":"GET /webhook_endpoints/{lago_id}","title":"Retrieve a webhook endpoint","description":"This endpoint is used to retrieve an existing webhook endpoint.","href":"/api-reference/webhook-endpoints/get-specific"}]},{"group":"Webhooks","pages":[{"title":"Format and signature","href":"/api-reference/webhooks/format---signature"},{"title":"Messages","description":"The event types Lago sends to your webhook endpoints. New types are added over time, so make sure your integration accepts a type it does not know yet.","href":"/api-reference/webhooks/messages"}]}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/introduction"}]},{"tab":"Templates","pages":[{"title":"Templates","href":"/templates/introduction"}]},{"tab":"FAQ","pages":[{"title":"FAQ","href":"/faq/about-lago"}]},{"tab":"Knowledge Base","href":"https://knowledge.getlago.com"},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/product"}]}]},"basePath":"","title":"Format and signature - Lago","buildId":"dpl_4UDxC3erAcBDHX8QT9FjyxxnLZSQ","deploymentId":"dpl_4UDxC3erAcBDHX8QT9FjyxxnLZSQ","dynamics":[],"chunks":[]}