A webhook is an API endpoint made available to external applications that can be called to notify your application whenever a significant event occurs. This allows your app to react or respond immediately to these events.You can set a webhook URL per service on your Fapshi dashboard. When set, a POST request will be sent to this webhook URL whenever the status of a payment changes to:
SUCCESSFUL — when a payment attempt completes successfully
FAILED — when a payment attempt fails (usually on operator networks like MTN Mobile Money or Orange Money)
EXPIRED — when a payment link expires after 24 hours without successful payment
The payload of the webhook request will be the same as the response body returned when querying a payment status.
Payment Initiated: Your external application initiates a payment by calling one of Fapshi’s payment endpoints (e.g., initiate-pay or direct-pay).
Payment Processed: Fapshi Server processes the payment transaction. This includes handling the payment flow, communicating with payment operators, and updating the transaction status.
Webhook Sent: When the payment status changes to SUCCESSFUL, FAILED, or EXPIRED, Fapshi Server automatically sends a POST request to your configured webhook URL with the updated transaction details.
Webhook Received: Your external application receives the webhook notification and can process it accordingly (e.g., update your database, send notifications, trigger other workflows).
Your server should respond quickly to webhook requests to avoid timeouts, ideally with a 200 status code. Fapshi sends only one webhook request per event, regardless of whether your server responds or not.
Webhooks are not retried automatically. If your server is down, times out, or returns an error, Fapshi will not send the notification again on its own.
Because delivery is not guaranteed, do not rely on webhooks alone. Periodically check the status of transactions that are still CREATED or PENDING in your system. See the Reconciliation Checklist.
You can authenticate the origin of a webhook request by setting a webhook secret on the Fapshi dashboard. When a secret is configured, every webhook request includes a header called x-wh-secret whose value is the secret you set on the dashboard. Comparing the value in this header to the secret you configured tells you whether the request came from Fapshi.
x-wh-secret is a static shared secret, not a signature. It is not an HMAC and is not computed from the request body; it is the exact value you set on the dashboard, sent unchanged with every webhook notification.
Recommended practice:
Reject any webhook whose x-wh-secret header is missing or does not match your secret.
Compare the values with a constant-time comparison function.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fapshi Documentation","description":"Explore Fapshi's comprehensive documentation for seamless payment integration. Discover detailed API references, quickstart guides, and essential tutorials to streamline transactions with our payment solution.","colors":{"primary":"#3f5cfd","light":"#7b8eff","dark":"#1d3ef9"},"logo":{"light":"https://mintcdn.com/fapshi/1s8iwhVYoQFU0Q7A/logo/light.svg?fit=max\u0026auto=format\u0026n=1s8iwhVYoQFU0Q7A\u0026q=85\u0026s=48db73896945dd0a02d396be36b0f600","dark":"https://mintcdn.com/fapshi/1s8iwhVYoQFU0Q7A/logo/dark.svg?fit=max\u0026auto=format\u0026n=1s8iwhVYoQFU0Q7A\u0026q=85\u0026s=9a4a9cf414139d9ec9ecdefec4268a56"},"favicon":{"light":"https://mintcdn.com/fapshi/1s8iwhVYoQFU0Q7A/favicon.svg?fit=max\u0026auto=format\u0026n=1s8iwhVYoQFU0Q7A\u0026q=85\u0026s=812724956dc77759d96af2903e7e93f4","dark":"https://mintcdn.com/fapshi/1s8iwhVYoQFU0Q7A/favicon-dark.svg?fit=max\u0026auto=format\u0026n=1s8iwhVYoQFU0Q7A\u0026q=85\u0026s=b0f6f82e89e9a489bfbf0af554a637fa"},"api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","php","python","java","go"]}},"navbar":{"links":[{"href":"https://dashboard.fapshi.com/auth/signup","label":"Create account"}],"primary":{"type":"button","label":"Sign in","href":"https://dashboard.fapshi.com"}},"footer":{"socials":{"github":"https://github.com/fapshi","linkedin":"https://linkedin.com/company/fapshiinc","youtube":"https://youtube.com/@fapshi","facebook":"https://facebook.com/fapshi","instagram":"https://instagram.com/fapshiinc","x":"https://x.com/fapshi"}},"seo":{"metatags":{"charset":"UTF-8","viewport":"width=device-width, initial-scale=1.0","description":"Fapshi Documentation: Comprehensive guides and API references for payments collection and disbursement. Learn to create payment links, manage transactions, and more.","keywords":"Fapshi API, payment integration, mobile money API, payment links, transaction management, API documentation, developer tools, no-code payments, event ticketing, invoicing","author":"Fapshi Team","robots":"index, follow","googlebot":"index, follow","google":"notranslate","google-site-verification":"wyX0OphWlYDllFqj8UMDlFbbkdnm3Xnizg6uwfg4j4Y","generator":"Mintlify","theme-color":"#3f5cfd","color-scheme":"light dark","format-detection":"telephone=no","referrer":"origin","revisit-after":"7 days","language":"en","copyright":"Copyright 2026 Fapshi Inc.","distribution":"global","coverage":"Worldwide","category":"Technology","HandheldFriendly":"True","MobileOptimized":"320","apple-mobile-web-app-capable":"yes","apple-mobile-web-app-status-bar-style":"black","apple-mobile-web-app-title":"Fapshi Documentation","application-name":"Fapshi Documentation","msapplication-TileColor":"#3f5cfd","msapplication-TileImage":"/favicon-dark.svg","og:title":"Fapshi Documentation: Seamless Payment Integration API","og:type":"website","og:url":"https://docs.fapshi.com","og:image":"/og-image.jpg","og:description":"Discover Fapshi’s API for online payments collection, disbursement, and transaction management. Get started with our guides and API references.","og:site_name":"Fapshi Documentation","og:locale":"en_US","og:locale:alternate":"fr_FR","twitter:card":"summary_large_image","twitter:site":"@fapshi","twitter:creator":"@fapshi","twitter:title":"Fapshi API Documentation","twitter:description":"Discover Fapshi’s API for online payments collection, disbursement, and transaction management. Get started with our guides and API references.","twitter:image":"/og-image.jpg","twitter:image:alt":"Fapshi Documentation Preview"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"en"},{"language":"fr","href":"fr"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fapshi","hasAudioNarration":false,"actualSubdomain":"fapshi","customDomains":["docs.fapshi.com"],"gitSource":{"type":"github","owner":"djotchuang","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf373fd1c84ec1c2102451","collectionId":"651f9dbf-4a81-40fd-8d73-97b2cfd4bcc0","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf373fd1c84ec1c2102451"},"entitlements":{},"buildId":"6adf373fd1c84ec1c2102451","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"en","tag":"API Reference","count":15},{"language":"en","tag":"Guides","count":15},{"language":"fr","tag":"Référence API","count":15},{"language":"fr","tag":"Guides","count":15},{"language":"en","tag":"Endpoints","count":9},{"language":"fr","tag":"Points de terminaison","count":9},{"language":"en","tag":"API Overview","count":6},{"language":"en","tag":"No-code Solutions","count":6},{"language":"fr","tag":"Aperçu de l’API","count":6},{"language":"fr","tag":"Solutions sans code","count":6},{"language":"en","tag":"Preliminary Knowledge","count":4},{"language":"en","tag":"Getting Started","count":4},{"language":"en","tag":"Managing Payments","count":4},{"language":"fr","tag":"Connaissances Préliminaires","count":4},{"language":"fr","tag":"Commencer","count":4},{"language":"fr","tag":"Gestion des paiements","count":4},{"language":"en","tag":"Third-party Integrations","count":1},{"language":"fr","tag":"Intégrations tierces","count":1}]},"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":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/api-reference/endpoint/webhook","slug":"/en/api-reference/endpoint/webhook","pageMetadata":{"title":"Webhook Integration","description":"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.","openapi":"en/api-reference/openapi.json WEBHOOK /webhook/payment-status","playground":"none","keywords":["webhook","payment notification","fapshi webhook","payment event","transaction status"],"href":"/en/api-reference/endpoint/webhook"},"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: \"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,OptimizedImage,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`A webhook is an API endpoint made available to external applications that can be called to notify your application whenever a significant event occurs. This allows your app to react or respond immediately to these events.`}),`\n`,_jsxs(_components.p,{children:[`You can set a webhook URL per service on your Fapshi dashboard. When set, a `,_jsx(_components.strong,{children:`POST`}),` request will be sent to this webhook URL whenever the status of a payment changes to:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SUCCESSFUL`}),` — when a payment attempt completes successfully`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`FAILED`}),` — when a payment attempt fails (usually on operator networks like MTN Mobile Money or Orange Money)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`EXPIRED`}),` — when a payment link expires after 24 hours without successful payment`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The payload of the webhook request will be the same as the response body returned when `,_jsx(_components.a,{href:`/en/api-reference/endpoint/payment-status`,children:`querying a payment status`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-webhooks-work`,children:`How Webhooks Work`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=50194b5abad7f5e966ef9a3dc6ff5931`,alt:`Webhook Sequence Diagram`,\"data-og-width\":`2816`,width:`2816`,\"data-og-height\":`1536`,height:`1536`,\"data-path\":`images/api-references/webhook-sequence-diagram.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?w=280\u0026fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=9a41684145cdf035d123994e04b134c3 280w, https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?w=560\u0026fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=8800168bd690bea8494d3268d05cb958 560w, https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?w=840\u0026fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=1138c101f8d8c0972ec2bedac1abffac 840w, https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?w=1100\u0026fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=b82a72d294cb5cd31f7ed716a89b0f7c 1100w, https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?w=1650\u0026fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=275ff8c16de0c7e29219226f3f2b4736 1650w, https://mintcdn.com/fapshi/rsmiGbzLVUpOYdAW/images/api-references/webhook-sequence-diagram.png?w=2500\u0026fit=max\u0026auto=format\u0026n=rsmiGbzLVUpOYdAW\u0026q=85\u0026s=39fce10169365d568e0ef7da8e18751b 2500w`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Payment Initiated`}),`: Your external application initiates a payment by calling one of Fapshi’s payment endpoints (e.g., `,_jsx(_components.a,{href:`/en/api-reference/endpoint/initiate-pay`,children:`initiate-pay`}),` or `,_jsx(_components.a,{href:`/en/api-reference/endpoint/direct-pay`,children:`direct-pay`}),`).`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Payment Processed`}),`: Fapshi Server processes the payment transaction. This includes handling the payment flow, communicating with payment operators, and updating the transaction status.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Webhook Sent`}),`: When the payment status changes to SUCCESSFUL, FAILED, or EXPIRED, Fapshi Server automatically sends a POST request to your configured webhook URL with the updated transaction details.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Webhook Received`}),`: Your external application receives the webhook notification and can process it accordingly (e.g., update your database, send notifications, trigger other workflows).`]}),`\n`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Your server should respond quickly to webhook requests to avoid timeouts, ideally with a 200 status code. Fapshi sends only one webhook request per event, regardless of whether your server responds or not.`})}),`\n`,_jsx(Heading,{level:`2`,id:`delivery-and-retries`,children:`Delivery and Retries`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Webhooks are `,_jsx(_components.strong,{children:`not retried automatically`}),`. If your server is down, times out, or returns an error, Fapshi will not send the notification again on its own.`]})}),`\n`,_jsx(_components.p,{children:`If a webhook was not delivered:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Resend it manually`}),` from the Fapshi dashboard, or`]}),`\n`,_jsxs(_components.li,{children:[`Call `,_jsx(_components.a,{href:`/en/api-reference/endpoint/payment-status`,children:_jsx(_components.code,{children:`GET /payment-status/{transId}`})}),` to get the current status.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Because delivery is not guaranteed, do not rely on webhooks alone. Periodically check the status of transactions that are still `,_jsx(_components.code,{children:`CREATED`}),` or `,_jsx(_components.code,{children:`PENDING`}),` in your system. See the `,_jsx(_components.a,{href:`/en/api-reference/preliminary-knowledge/transaction-handling#reconciliation-checklist`,children:`Reconciliation Checklist`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`webhook-security`,children:`Webhook Security`}),`\n`,_jsxs(_components.p,{children:[`You can authenticate the origin of a webhook request by setting a webhook secret on the Fapshi dashboard. When a secret is configured, every webhook request includes a header called `,_jsx(_components.code,{children:`x-wh-secret`}),` whose value is the secret you set on the dashboard. Comparing the value in this header to the secret you configured tells you whether the request came from Fapshi.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`x-wh-secret`}),` is a `,_jsx(_components.strong,{children:`static shared secret`}),`, not a signature. It is `,_jsx(_components.strong,{children:`not`}),` an HMAC and is not computed from the request body; it is the exact value you set on the dashboard, sent unchanged with every webhook notification.`]})}),`\n`,_jsx(_components.p,{children:`Recommended practice:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Reject any webhook whose `,_jsx(_components.code,{children:`x-wh-secret`}),` header is missing or does not match your secret.`]}),`\n`,_jsx(_components.li,{children:`Compare the values with a constant-time comparison function.`}),`\n`,_jsx(_components.li,{children:`Only expose your webhook URL over HTTPS.`}),`\n`,_jsxs(_components.li,{children:[`Before fulfilling an order, confirm the status with `,_jsx(_components.a,{href:`/en/api-reference/endpoint/payment-status`,children:_jsx(_components.code,{children:`GET /payment-status/{transId}`})}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`As a security measure, the dashboard does not let you view or determine whether a webhook secret has already been set for a service.`}),`\n`,_jsx(Heading,{level:`2`,id:`webhook-payload-format`,children:`Webhook Payload Format`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Webhook Integration","description":"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.","openapi":"en/api-reference/openapi.json WEBHOOK /webhook/payment-status","playground":"none","keywords":["webhook","payment notification","fapshi webhook","payment event","transaction status"],"href":"/en/api-reference/endpoint/webhook"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How Webhooks Work","slug":"how-webhooks-work","depth":2,"children":[]},{"title":"Delivery and Retries","slug":"delivery-and-retries","depth":2,"children":[]},{"title":"Webhook Security","slug":"webhook-security","depth":2,"children":[]},{"title":"Webhook Payload Format","slug":"webhook-payload-format","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.","security":[],"responses":{"200":"542dfee5-6aee-40ca-9efe-5e2a4ec92017"},"method":"post","type":"webhook","servers":["229d331e-c101-4b4b-a433-7abc3d732d2e"],"path":"/webhook/payment-status","baseUrlOptions":["https://sandbox.fapshi.com"],"title":"","codeSamples":[],"requestExampleLanguages":["bash","javascript","php","python","java","go"],"requiredOnlyExamples":false,"requestExamples":[],"requestExampleType":"webhook","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"542dfee5-6aee-40ca-9efe-5e2a4ec92017":{"description":"Acknowledgement of webhook receipt","content":{"application/json":{"schema":{"type":"object","properties":{"transId":{"type":"string","description":"Transaction ID of the payment.","uniqueKey":"transId","typeLabel":"string"},"status":{"type":"string","enum":["CREATED","PENDING","SUCCESSFUL","FAILED","EXPIRED"],"description":"Transaction status","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"medium":{"type":"string","enum":["mobile money","orange money","fapshi"],"description":"Payment method","uniqueKey":"medium","typeLabel":"enum\u003cstring>"},"serviceName":{"type":"string","description":"Name of the service in use","uniqueKey":"serviceName","typeLabel":"string"},"transType":{"type":"string","enum":["Collection","Payout"],"description":"Type of transaction","uniqueKey":"transType","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"Transaction amount","uniqueKey":"amount","typeLabel":"integer"},"revenue":{"type":"integer","description":"Amount received when Fapshi fees (3% of amount) have been deducted","uniqueKey":"revenue","typeLabel":"integer"},"payerName":{"type":"string","description":"Client name","uniqueKey":"payerName","typeLabel":"string"},"email":{"type":"string","format":"email","description":"Client email","uniqueKey":"email","typeLabel":"string\u003cemail>"},"redirectUrl":{"type":"string","format":"uri","description":"URL to redirect after payment","uniqueKey":"redirectUrl","typeLabel":"string\u003curi>"},"externalId":{"type":"string","description":"The transaction ID on your application","uniqueKey":"externalId","typeLabel":"string"},"userId":{"type":"string","description":"ID of the client on your application","uniqueKey":"userId","typeLabel":"string"},"webhook":{"type":"string","format":"uri","description":"The webhook you defined for your service","uniqueKey":"webhook","typeLabel":"string\u003curi>"},"reason":{"type":"string","description":"Typically appears when a payout via fapshi fails","uniqueKey":"reason","typeLabel":"string"},"financialTransId":{"type":"string","description":"Transaction ID with the payment operator","uniqueKey":"financialTransId","typeLabel":"string"},"dateInitiated":{"type":"string","format":"date","description":"Date when the payment was initiated","uniqueKey":"dateInitiated","typeLabel":"string\u003cdate>"},"dateConfirmed":{"type":"string","format":"date","description":"Date when the payment was made","uniqueKey":"dateConfirmed","typeLabel":"string\u003cdate>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"transId":"\u003cstring>","status":"CREATED","medium":"mobile money","serviceName":"\u003cstring>","transType":"Collection","amount":123,"revenue":123,"payerName":"\u003cstring>","email":"jsmith@example.com","redirectUrl":"\u003cstring>","externalId":"\u003cstring>","userId":"\u003cstring>","webhook":"\u003cstring>","reason":"\u003cstring>","financialTransId":"\u003cstring>","dateInitiated":"2023-12-25","dateConfirmed":"2023-12-25"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"229d331e-c101-4b4b-a433-7abc3d732d2e":{"url":"https://sandbox.fapshi.com"}}},"originalFileLocation":"en/api-reference/openapi.json"},"subdomain":"fapshi","siteName":"Fapshi Documentation","title":"Fapshi Documentation: Seamless Payment Integration API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/api-reference/endpoint/webhook","matchLevel":0},"fr":{"href":"/fr/api-reference/endpoint/webhook","matchLevel":1}}},"lastModified":"2026-10-26T11:19:42.942Z","originalFileLocation":"en/api-reference/endpoint/webhook.mdx","locale":"en"},"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=\"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.\">\u003cmeta data-mint-head name=\"keywords\" content=\"Fapshi API, payment integration, mobile money API, payment links, transaction management, API documentation, developer tools, no-code payments, event ticketing, invoicing\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fapshi Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_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/fapshi/EkPc3JoecOQiI6v3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Fapshi Documentation: Seamless Payment Integration API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Discover Fapshi’s API for online payments collection, disbursement, and transaction management. Get started with our guides and API references.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fapshi Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fapshi.mintlify.app/og-image.jpg\">\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=\"Fapshi API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Discover Fapshi’s API for online payments collection, disbursement, and transaction management. Get started with our guides and API references.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fapshi.mintlify.app/og-image.jpg\">\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/fapshi/EkPc3JoecOQiI6v3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fapshi Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3f5cfd\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"charset\" content=\"UTF-8\">\u003cmeta data-mint-head name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\u003cmeta data-mint-head name=\"author\" content=\"Fapshi Team\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003cmeta data-mint-head name=\"google\" content=\"notranslate\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"wyX0OphWlYDllFqj8UMDlFbbkdnm3Xnizg6uwfg4j4Y\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#3f5cfd\">\u003cmeta data-mint-head name=\"color-scheme\" content=\"light dark\">\u003cmeta data-mint-head name=\"format-detection\" content=\"telephone=no\">\u003cmeta data-mint-head name=\"referrer\" content=\"origin\">\u003cmeta data-mint-head name=\"revisit-after\" content=\"7 days\">\u003cmeta data-mint-head name=\"language\" content=\"en\">\u003cmeta data-mint-head name=\"copyright\" content=\"Copyright 2026 Fapshi Inc.\">\u003cmeta data-mint-head name=\"distribution\" content=\"global\">\u003cmeta data-mint-head name=\"coverage\" content=\"Worldwide\">\u003cmeta data-mint-head name=\"category\" content=\"Technology\">\u003cmeta data-mint-head name=\"HandheldFriendly\" content=\"True\">\u003cmeta data-mint-head name=\"MobileOptimized\" content=\"320\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-capable\" content=\"yes\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fapshi Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileImage\" content=\"/favicon-dark.svg\">\u003cmeta data-mint-head name=\"og:locale:alternate\" content=\"fr_FR\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@fapshi\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"Fapshi Documentation Preview\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/api-reference/endpoint/webhook.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.fapshi.com/fr/api-reference/endpoint/webhook\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fapshi.com/#organization\",\"name\":\"Fapshi Documentation\",\"url\":\"https://docs.fapshi.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fapshi/1s8iwhVYoQFU0Q7A/logo/light.svg?fit=max\u0026auto=format\u0026n=1s8iwhVYoQFU0Q7A\u0026q=85\u0026s=48db73896945dd0a02d396be36b0f600\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fapshi.com#website\",\"name\":\"Fapshi Documentation\",\"url\":\"https://docs.fapshi.com\",\"publisher\":{\"@id\":\"https://docs.fapshi.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook#webpage\",\"url\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\",\"name\":\"Webhook Integration\",\"description\":\"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.\",\"dateModified\":\"2026-10-26T11:19:42.942Z\",\"isPartOf\":{\"@id\":\"https://docs.fapshi.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.fapshi.com/en/api-reference/endpoint/initiate-pay\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhook Integration\",\"item\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook#apireference\",\"headline\":\"Webhook Integration\",\"name\":\"Webhook Integration\",\"description\":\"Learn how to integrate webhooks to receive real-time payment status updates from Fapshi.\",\"url\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fapshi.com/en/api-reference/endpoint/webhook#webpage\"},\"image\":\"https://docs.fapshi.com/og-image.jpg\",\"dateModified\":\"2026-10-26T11:19:42.942Z\",\"keywords\":\"webhook, payment notification, fapshi webhook, payment event, transaction status\",\"publisher\":{\"@id\":\"https://docs.fapshi.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fapshi.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fapshi Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fapshi Documentation","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/en"}]},{"tab":"API Reference","groups":[{"group":"API Overview","pages":[{"title":"Getting Started with the API","href":"/en/api-reference/getting-started"},{"title":"Create a Service","href":"/en/api-reference/create-a-service"},{"group":"Preliminary Knowledge","pages":[{"title":"API Credentials","href":"/en/api-reference/preliminary-knowledge/api-credentials"},{"title":"Live vs Sandbox Environment","href":"/en/api-reference/preliminary-knowledge/environment"},{"title":"Request Status","href":"/en/api-reference/preliminary-knowledge/request-status"},{"title":"Transaction Handling","href":"/en/api-reference/preliminary-knowledge/transaction-handling"}]}]},{"group":"Endpoints","pages":[{"title":"Generate a Payment Link","openapi":"en/api-reference/openapi.json POST /initiate-pay","href":"/en/api-reference/endpoint/initiate-pay"},{"title":"Initiate a Direct Payment Request","openapi":"en/api-reference/openapi.json POST /direct-pay","href":"/en/api-reference/endpoint/direct-pay"},{"title":"Get Payment Transaction Status","openapi":"en/api-reference/openapi.json GET /payment-status/{transId}","href":"/en/api-reference/endpoint/payment-status"},{"title":"Expire a Payment Transaction","openapi":"en/api-reference/openapi.json POST /expire-pay","href":"/en/api-reference/endpoint/expire-pay"},{"title":"Get Transactions by User ID","openapi":"en/api-reference/openapi.json GET /transaction/{userId}","href":"/en/api-reference/endpoint/transaction-by-user"},{"title":"Search Transactions","openapi":"en/api-reference/openapi.json GET /search","href":"/en/api-reference/endpoint/search-transactions"},{"title":"Get Service Balance","openapi":"en/api-reference/openapi.json GET /balance","href":"/en/api-reference/endpoint/balance"},{"title":"Make a Payout","description":"Send money to a user's mobile money, orange money or fapshi account via a payout-enabled service.","openapi":"en/api-reference/openapi.json POST /payout","href":"/en/api-reference/endpoint/payout"},{"title":"Webhook Integration","openapi":"en/api-reference/openapi.json WEBHOOK /webhook/payment-status","playground":"none","href":"/en/api-reference/endpoint/webhook"}]}]}],"global":{"dropdowns":[{"dropdown":"Help \u0026 Support","icon":"handshake","description":"Check our Knowledge Base.","href":"https://fapshi.com/en/help-and-support"},{"dropdown":"Newsroom","icon":"newspaper","description":"Stay updated with our latest news.","href":"https://fapshi.com/en/newsroom"},{"dropdown":"Suggest a Feature","icon":"pen","description":"Share your ideas for new features.","href":"https://fapshi.com/en/suggest-feature"},{"dropdown":"Developer Community","icon":"slack","description":"Join our community of developers.","href":"https://fapshicommunity.slack.com/join/shared_invite/zt-1dz7tl3kj-Wl_mdNxiiCI31i8mrVIrtQ#/shared-invite/email"},{"dropdown":"WhatsApp Channel","icon":"whatsapp","description":"Follow our WhatsApp channel.","href":"https://whatsapp.com/channel/0029Vb8kgPt4NViomR6ko51S"}]}},{"language":"fr","pages":[{"title":"fr","href":"/fr/api-reference/endpoint/webhook"}]}]},"title":"Fapshi Documentation: Seamless Payment Integration API","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a74be98ba7","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","zoom-image-lightbox-BNnMwe0F.js","lightbox-handle-r17bVUz3.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}