Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.
Any 2xx acknowledges delivery. Response body is ignored but must be empty or at most 64 KiB (MERCHANT_WEBHOOK_MAX_RESPONSE_BYTES); a larger body fails the delivery attempt. Prefer HTTP 204 No Content.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OrsunPay","description":"Guides, API contracts and workspace walkthroughs for merchants integrating OrsunPay.","colors":{"primary":"#826300","light":"#FFCC00","dark":"#705600"},"logo":{"light":"https://mintcdn.com/orsunpay/9giosiM-mO_kwig_/brand/logo-light.svg?fit=max\u0026auto=format\u0026n=9giosiM-mO_kwig_\u0026q=85\u0026s=993e4b5b338d8309f92a9295890ce0b8","dark":"https://mintcdn.com/orsunpay/9giosiM-mO_kwig_/brand/logo-dark.svg?fit=max\u0026auto=format\u0026n=9giosiM-mO_kwig_\u0026q=85\u0026s=3f7a25249f226fc3db217801c714262c"},"favicon":"https://mintcdn.com/orsunpay/9giosiM-mO_kwig_/brand/favicon.svg?fit=max\u0026auto=format\u0026n=9giosiM-mO_kwig_\u0026q=85\u0026s=2ad7f5317a7cd3fc82e1751839429c8f","api":{"playground":{"display":"simple"}},"navbar":{"links":[{"href":"https://orsunpay.com/contact","label":"Support"}],"primary":{"type":"button","label":"Merchant cabinet","href":"https://r1-cabinet.orsunpay.com"}},"fonts":{"family":"Onest"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"orsunpay","hasAudioNarration":false,"actualSubdomain":"orsunpay","customDomains":["docs.orsunpay.com"],"gitSource":{"type":"github","owner":"orsuntech","repo":"orsunpay-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6aed3b9f94899c7f5d7debb7"},"entitlements":{},"buildId":"6aed7a978edba1c7664b50a7","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API Reference","count":54},{"language":"default","tag":"Endpoints","count":53},{"language":"default","tag":"Guides","count":33},{"language":"default","tag":"Cashier player","count":18},{"language":"default","tag":"Usage billing","count":15},{"language":"default","tag":"Server SDKs","count":9},{"language":"default","tag":"Payment methods","count":8},{"language":"default","tag":"Integration essentials","count":6},{"language":"default","tag":"Accept a payment","count":6},{"language":"default","tag":"Manage payments","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/webhooks/refund-succeeded-event","slug":"/api-reference/webhooks/refund-succeeded-event","pageMetadata":{"title":"Refund succeeded event","description":"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.","version":null,"deprecated":null,"openapi":"/openapi.json webhook refundSucceeded","href":"/api-reference/webhooks/refund-succeeded-event","autogeneratedByOpenApi":true},"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: \"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Refund succeeded event","description":"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.","version":null,"deprecated":null,"openapi":"/openapi.json webhook refundSucceeded","href":"/api-reference/webhooks/refund-succeeded-event","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.","operationId":"receiveRefundSucceeded","parameters":["af319882-423b-4473-88c8-a811b701bd0e","ba5075cc-434a-45da-89cd-f8735b327df2","18e397c0-eed8-4c59-b5a9-feb1f9fdbb1a"],"requestBody":"c094bd15-cc7d-45c9-8383-7bcc58d311fb","responses":{"2XX":"3de56ba3-c5c8-4520-886e-ef421474ed53"},"security":[],"summary":"Refund succeeded event","tags":["Webhooks"],"method":"post","type":"webhook","servers":[],"path":"refundSucceeded","baseUrlOptions":[],"title":"Refund succeeded event","codeSamples":[],"requiredOnlyExamples":false,"requestExamples":[{"language":"json","filename":"Example","code":"{\n \"api_version\": \"2026-10-31\",\n \"created\": \"2026-10-10T10:05:00.000Z\",\n \"created_at\": \"2026-10-10T10:05:00.000Z\",\n \"data\": {\n \"refund\": {\n \"amount\": \"5.00\",\n \"currency\": \"EUR\",\n \"errorCode\": null,\n \"id\": \"rf_example\",\n \"provider\": \"stripe\",\n \"providerRefundId\": \"re_example\",\n \"reason\": \"requested_by_customer\",\n \"status\": \"SUCCEEDED\",\n \"transactionId\": \"tr_example\"\n },\n \"transaction\": {\n \"amount\": \"12.30\",\n \"id\": \"tr_example\",\n \"livemode\": true,\n \"orderId\": \"order_example_001\",\n \"refundState\": \"partial\",\n \"refundedAmount\": \"5.00\"\n }\n },\n \"id\": \"evt_0j7s2pft4v8b9t8nj2cra1eg01\",\n \"livemode\": true,\n \"type\": \"refund.succeeded\"\n}"}],"requestExampleType":"webhook","responseExampleType":"generated"},"dependencies":{"parameters":{"af319882-423b-4473-88c8-a811b701bd0e":{"description":"t=\u003cUnix seconds>,v1=\u003chex HMAC-SHA256(timestamp + \".\" + exact raw body)>; never log this header","in":"header","name":"OrsunPay-Signature","required":true,"schema":{"pattern":"^t=[0-9]+,v1=[a-f0-9]{64}$","type":"string","isRequired":true,"description":"t=\u003cUnix seconds>,v1=\u003chex HMAC-SHA256(timestamp + \".\" + exact raw body)>; never log this header","uniqueKey":"","typeLabel":"string"}},"ba5075cc-434a-45da-89cd-f8735b327df2":{"description":"Convenience copy of body id (evt_…); deduplicate only after verifying the signed body","in":"header","name":"OrsunPay-Event-Id","required":true,"schema":{"pattern":"^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string","isRequired":true,"description":"Convenience copy of body id (evt_…); deduplicate only after verifying the signed body","uniqueKey":"","typeLabel":"string"}},"18e397c0-eed8-4c59-b5a9-feb1f9fdbb1a":{"description":"Convenience copy of body type","in":"header","name":"OrsunPay-Event-Type","required":true,"schema":{"example":"refund.succeeded","type":"string","isRequired":true,"description":"Convenience copy of body type","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"example":{"api_version":"2026-10-31","created":"2026-10-10T10:05:00.000Z","created_at":"2026-10-10T10:05:00.000Z","data":{"refund":{"amount":"5.00","currency":"EUR","errorCode":null,"id":"rf_example","provider":"stripe","providerRefundId":"re_example","reason":"requested_by_customer","status":"SUCCEEDED","transactionId":"tr_example"},"transaction":{"amount":"12.30","id":"tr_example","livemode":true,"orderId":"order_example_001","refundState":"partial","refundedAmount":"5.00"}},"id":"evt_0j7s2pft4v8b9t8nj2cra1eg01","livemode":true,"type":"refund.succeeded"},"schema":{"description":"Immutable refund terminal event. Amounts use currency precision; retain the maximum refundedAmount when events arrive out of order.","properties":{"api_version":{"example":"2026-10-31","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","type":"string","isRequired":true,"uniqueKey":"api_version","typeLabel":"string"},"created":{"description":"Alias of created_at, preserved across retries.","format":"date-time","type":"string","isRequired":true,"uniqueKey":"created","typeLabel":"string\u003cdate-time>"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"data":{"properties":{"refund":{"properties":{"amount":{"pattern":"^(0|[1-9]\\d{0,19})(\\.\\d{1,18})?$","type":"string","isRequired":true,"uniqueKey":"data.refund.amount","typeLabel":"string"},"currency":{"type":"string","isRequired":true,"uniqueKey":"data.refund.currency","typeLabel":"string"},"errorCode":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.refund.errorCode.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.refund.errorCode.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.refund.errorCode","typeLabel":"string | null"},"id":{"type":"string","isRequired":true,"uniqueKey":"data.refund.id","typeLabel":"string"},"provider":{"type":"string","isRequired":true,"uniqueKey":"data.refund.provider","typeLabel":"string"},"providerRefundId":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.refund.providerRefundId.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.refund.providerRefundId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.refund.providerRefundId","typeLabel":"string | null"},"reason":{"enum":["requested_by_customer","duplicate","fraudulent","other"],"type":"string","isRequired":true,"uniqueKey":"data.refund.reason","typeLabel":"enum\u003cstring>"},"status":{"enum":["SUCCEEDED","FAILED"],"type":"string","isRequired":true,"uniqueKey":"data.refund.status","typeLabel":"enum\u003cstring>"},"transactionId":{"type":"string","isRequired":true,"uniqueKey":"data.refund.transactionId","typeLabel":"string"}},"required":["id","transactionId","amount","currency","status","reason","provider","providerRefundId","errorCode"],"type":"object","isRequired":true,"uniqueKey":"data.refund","typeLabel":"object"},"transaction":{"properties":{"amount":{"pattern":"^(0|[1-9]\\d{0,19})(\\.\\d{1,18})?$","type":"string","isRequired":true,"uniqueKey":"data.transaction.amount","typeLabel":"string"},"id":{"type":"string","isRequired":true,"uniqueKey":"data.transaction.id","typeLabel":"string"},"livemode":{"type":"boolean","isRequired":true,"uniqueKey":"data.transaction.livemode","typeLabel":"boolean"},"orderId":{"type":"string","isRequired":true,"uniqueKey":"data.transaction.orderId","typeLabel":"string"},"refundState":{"enum":["none","partial","full"],"type":"string","isRequired":true,"uniqueKey":"data.transaction.refundState","typeLabel":"enum\u003cstring>"},"refundedAmount":{"pattern":"^(0|[1-9]\\d{0,19})(\\.\\d{1,18})?$","type":"string","isRequired":true,"uniqueKey":"data.transaction.refundedAmount","typeLabel":"string"}},"required":["id","orderId","amount","refundedAmount","refundState","livemode"],"type":"object","isRequired":true,"uniqueKey":"data.transaction","typeLabel":"object"}},"required":["refund","transaction"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"},"id":{"pattern":"^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"livemode":{"description":"Mode of the transaction snapshot; false for sandbox.","type":"boolean","isRequired":true,"uniqueKey":"livemode","typeLabel":"boolean"},"type":{"enum":["refund.succeeded","refund.failed"],"type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"}},"required":["id","type","api_version","created_at","created","data","livemode"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"api_version":"2026-10-31","created":"2026-10-10T10:05:00.000Z","created_at":"2026-10-10T10:05:00.000Z","data":{"refund":{"amount":"5.00","currency":"EUR","errorCode":null,"id":"rf_example","provider":"stripe","providerRefundId":"re_example","reason":"requested_by_customer","status":"SUCCEEDED","transactionId":"tr_example"},"transaction":{"amount":"12.30","id":"tr_example","livemode":true,"orderId":"order_example_001","refundState":"partial","refundedAmount":"5.00"}},"id":"evt_0j7s2pft4v8b9t8nj2cra1eg01","livemode":true,"type":"refund.succeeded"}}},"exampleType":"examples"}},"required":true,"exampleType":"examples"},"responses":{"3de56ba3-c5c8-4520-886e-ef421474ed53":{"description":"Any 2xx acknowledges delivery. Response body is ignored but must be empty or at most 64 KiB (MERCHANT_WEBHOOK_MAX_RESPONSE_BYTES); a larger body fails the delivery attempt. Prefer HTTP 204 No Content.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{},"servers":{}},"originalFileLocation":"openapi.json"},"subdomain":"orsunpay","siteName":"OrsunPay","title":"Refund succeeded event - OrsunPay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T02:29:57.349Z","originalFileLocation":"api-reference/webhooks/refund-succeeded-event.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=\"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OrsunPay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Refund succeeded event - OrsunPay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OrsunPay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://orsunpay.mintlify.site/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Refund+succeeded+event\u0026amp;description=Terminal+refund+event+sent+to+the+original+sale+callbackUrl%2C+falling+back+to+the+merchant+default+webhook+URL.+Verify+HMAC-SHA256+over+the+exact+raw+body+before\u0026amp;theme=29e3bf99624baacd33338dc6\u0026amp;signature=9a305ee02c536cf0f997e870ff7747992e8ece10c471e7742c1c1ac999b91a75\">\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=\"Refund succeeded event - OrsunPay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://orsunpay.mintlify.site/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Refund+succeeded+event\u0026amp;description=Terminal+refund+event+sent+to+the+original+sale+callbackUrl%2C+falling+back+to+the+merchant+default+webhook+URL.+Verify+HMAC-SHA256+over+the+exact+raw+body+before\u0026amp;theme=29e3bf99624baacd33338dc6\u0026amp;signature=9a305ee02c536cf0f997e870ff7747992e8ece10c471e7742c1c1ac999b91a75\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/orsunpay/XvMZZnN-BopedfX_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OrsunPay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#826300\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/webhooks/refund-succeeded-event.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.orsunpay.com/#organization\",\"name\":\"OrsunPay\",\"url\":\"https://docs.orsunpay.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/orsunpay/9giosiM-mO_kwig_/brand/logo-light.svg?fit=max\u0026auto=format\u0026n=9giosiM-mO_kwig_\u0026q=85\u0026s=993e4b5b338d8309f92a9295890ce0b8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.orsunpay.com#website\",\"name\":\"OrsunPay\",\"url\":\"https://docs.orsunpay.com\",\"publisher\":{\"@id\":\"https://docs.orsunpay.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event#webpage\",\"url\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event\",\"name\":\"Refund succeeded event\",\"description\":\"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.\",\"dateModified\":\"2026-11-06T02:29:57.349Z\",\"isPartOf\":{\"@id\":\"https://docs.orsunpay.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.orsunpay.com/api-reference/cashier-player/create-a-crypto-invoice\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks\",\"item\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-failed-event\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Refund succeeded event\",\"item\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event#apireference\",\"headline\":\"Refund succeeded event\",\"name\":\"Refund succeeded event\",\"description\":\"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.\",\"url\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event\",\"mainEntityOfPage\":{\"@id\":\"https://docs.orsunpay.com/api-reference/webhooks/refund-succeeded-event#webpage\"},\"dateModified\":\"2026-11-06T02:29:57.349Z\",\"publisher\":{\"@id\":\"https://docs.orsunpay.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.orsunpay.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OrsunPay\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OrsunPay","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Using the API","pages":[{"title":"Merchant API reference","sidebarTitle":"API overview","href":"/api-overview"}]},{"group":"Endpoints","pages":[{"group":"Cashier player","pages":[{"title":"Create a crypto invoice","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/crypto/invoices","href":"/api-reference/cashier-player/create-a-crypto-invoice"},{"title":"Retrieve a crypto invoice","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/crypto/invoices/{id}","href":"/api-reference/cashier-player/retrieve-a-crypto-invoice"},{"title":"Quote a crypto deposit","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/crypto/quote","href":"/api-reference/cashier-player/quote-a-crypto-deposit"},{"title":"List eligible deposit methods","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/methods","href":"/api-reference/cashier-player/list-eligible-deposit-methods"},{"title":"List cashier operations","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/operations","href":"/api-reference/cashier-player/list-cashier-operations"},{"title":"Submit a deposit","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/operations","href":"/api-reference/cashier-player/submit-a-deposit"},{"title":"Retrieve a cashier operation","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/operations/{id}","href":"/api-reference/cashier-player/retrieve-a-cashier-operation"},{"title":"Quote a deposit","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/quote","href":"/api-reference/cashier-player/quote-a-deposit"},{"title":"Refresh cashier authorization","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/reauthorize","href":"/api-reference/cashier-player/refresh-cashier-authorization"},{"title":"Read the authenticated player cashier and its currency","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/session","href":"/api-reference/cashier-player/read-the-authenticated-player-cashier-and-its-currency"},{"title":"Read the immutable presentation pinned when the player session was created","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/template","href":"/api-reference/cashier-player/read-the-immutable-presentation-pinned-when-the-player-session-was-created"},{"title":"List withdrawals","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/withdrawals","href":"/api-reference/cashier-player/list-withdrawals"},{"title":"Request a withdrawal","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/withdrawals","href":"/api-reference/cashier-player/request-a-withdrawal"},{"title":"List eligible withdrawal methods","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/withdrawals/choices","href":"/api-reference/cashier-player/list-eligible-withdrawal-methods"},{"title":"Quote a withdrawal","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/withdrawals/quote","href":"/api-reference/cashier-player/quote-a-withdrawal"},{"title":"Retrieve a withdrawal","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/withdrawals/{id}","href":"/api-reference/cashier-player/retrieve-a-withdrawal"},{"title":"Cancel a withdrawal","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/withdrawals/{id}/cancel","href":"/api-reference/cashier-player/cancel-a-withdrawal"},{"title":"Reconcile a withdrawal reservation","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier-ui/withdrawals/{id}/reconcile-reserve","href":"/api-reference/cashier-player/reconcile-a-withdrawal-reservation"}]},{"group":"Cashier embedding policy","pages":[{"title":"Read the stored merchant frame origin; does not authorize a session","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/cashier-ui/frame-policy/{id}","href":"/api-reference/cashier-embedding-policy/read-the-stored-merchant-frame-origin;-does-not-authorize-a-session"}]},{"group":"Cashier sessions (merchant S2S)","pages":[{"title":"Authorize a player cashier from the merchant backend","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier/sessions","href":"/api-reference/cashier-sessions-merchant-s2s/authorize-a-player-cashier-from-the-merchant-backend"},{"title":"Renew player access for the same bound instance","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier/sessions/{id}/access-grants","href":"/api-reference/cashier-sessions-merchant-s2s/renew-player-access-for-the-same-bound-instance"},{"title":"Revoke this player cashier immediately","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier/sessions/{id}/revoke","href":"/api-reference/cashier-sessions-merchant-s2s/revoke-this-player-cashier-immediately"},{"title":"Acknowledge a wallet effect","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cashier/wallet/receipts","href":"/api-reference/cashier-sessions-merchant-s2s/acknowledge-a-wallet-effect"}]},{"group":"Payments","pages":[{"title":"List payments or find by order ID","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment","href":"/api-reference/payments/list-payments-or-find-by-order-id"},{"title":"Create withdrawal transaction (Payout)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment/payout","href":"/api-reference/payments/create-withdrawal-transaction-payout"},{"title":"Create deposit transaction (Sale)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment/sale","href":"/api-reference/payments/create-deposit-transaction-sale"},{"title":"Get a payment by ID","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment/{id}","href":"/api-reference/payments/get-a-payment-by-id"}]},{"group":"Payment links","pages":[{"title":"List the authenticated merchant’s links, newest first","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment-links","href":"/api-reference/payment-links/list-the-authenticated-merchant’s-links-newest-first"},{"title":"Create a merchant-scoped payment link","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment-links","href":"/api-reference/payment-links/create-a-merchant-scoped-payment-link"},{"title":"Get a link owned by the authenticated merchant","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment-links/{id}","href":"/api-reference/payment-links/get-a-link-owned-by-the-authenticated-merchant"},{"title":"Permanently deactivate a link; repeated requests are safe","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment-links/{id}/deactivate","href":"/api-reference/payment-links/permanently-deactivate-a-link;-repeated-requests-are-safe"}]},{"group":"Refunds","pages":[{"title":"List refunds for a payment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/payment/{id}/refunds","href":"/api-reference/refunds/list-refunds-for-a-payment"},{"title":"Request a full or partial refund","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/payment/{id}/refunds","href":"/api-reference/refunds/request-a-full-or-partial-refund"},{"title":"Get a refund","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/refunds/{id}","href":"/api-reference/refunds/get-a-refund"}]},{"group":"Transactions","pages":[{"title":"Poll a merchant transaction","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/transactions/{id}","href":"/api-reference/transactions/poll-a-merchant-transaction"}]},{"group":"Usage billing","pages":[{"title":"Record a usage event","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/events","href":"/api-reference/usage-billing/record-a-usage-event"},{"title":"List usage invoices","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage-billing/invoices","href":"/api-reference/usage-billing/list-usage-invoices"},{"title":"List usage plans","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage-billing/plans","href":"/api-reference/usage-billing/list-usage-plans"},{"title":"Create a usage plan","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/plans","href":"/api-reference/usage-billing/create-a-usage-plan"},{"title":"List usage subscriptions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage-billing/subscriptions","href":"/api-reference/usage-billing/list-usage-subscriptions"},{"title":"Create a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions","href":"/api-reference/usage-billing/create-a-usage-subscription"},{"title":"Get a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage-billing/subscriptions/{id}","href":"/api-reference/usage-billing/get-a-usage-subscription"},{"title":"confirmAutoRenew for a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/auto-renew/confirm","href":"/api-reference/usage-billing/confirmautorenew-for-a-usage-subscription"},{"title":"disableAutoRenew for a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/auto-renew/disable","href":"/api-reference/usage-billing/disableautorenew-for-a-usage-subscription"},{"title":"setupAutoRenew for a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/auto-renew/setup","href":"/api-reference/usage-billing/setupautorenew-for-a-usage-subscription"},{"title":"Cancel a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/cancel","href":"/api-reference/usage-billing/cancel-a-usage-subscription"},{"title":"notifications for a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/notifications","href":"/api-reference/usage-billing/notifications-for-a-usage-subscription"},{"title":"paymentHistory for a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/usage-billing/subscriptions/{id}/payments/history","href":"/api-reference/usage-billing/paymenthistory-for-a-usage-subscription"},{"title":"recoverPayment for a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/payments/recover","href":"/api-reference/usage-billing/recoverpayment-for-a-usage-subscription"},{"title":"Reconcile a usage subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/usage-billing/subscriptions/{id}/sync","href":"/api-reference/usage-billing/reconcile-a-usage-subscription"}]},{"group":"Webhooks","pages":[{"title":"Refund failed event","description":"Terminal refund event sent to the original sale callbackUrl, falling back to the merchant default webhook URL. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks. The refund and transaction snapshot stays byte-identical across retries/redrives; retain the maximum cumulative refundedAmount using decimal arithmetic.","version":null,"deprecated":null,"openapi":"/openapi.json webhook refundFailed","href":"/api-reference/webhooks/refund-failed-event"},{"title":"Refund succeeded event","version":null,"deprecated":null,"openapi":"/openapi.json webhook refundSucceeded","href":"/api-reference/webhooks/refund-succeeded-event"},{"title":"Transaction status event","description":"OrsunPay sends this POST to the transaction callbackUrl after a status update. Verify HMAC-SHA256 over the exact raw body before parsing, using the merchant webhook secret (ADR-010). Reject signature timestamps beyond 300 seconds; compare in constant time. Deliveries are at least once and can arrive out of order. Deduplicate by the signed body id. Secret rotation takes effect immediately (no dual signing); failed deliveries retry for approximately 31 hours. API keys are not sent with webhooks.","version":null,"deprecated":null,"openapi":"/openapi.json webhook transactionUpdated","href":"/api-reference/webhooks/transaction-status-event"}]}]}]},{"tab":"Payment methods","pages":[{"title":"Payment methods","href":"/payment-methods"}]},{"tab":"Workspaces","pages":[{"title":"Workspaces","href":"/merchant-cabinet"}]}]},"basePath":"","title":"Refund succeeded event - OrsunPay","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}