Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is created, updated, or deleted for a customer.
A call to GET /api/v1/payment-method/pool-account also sends PAYMENT_METHOD.UPDATED for the pool account, on every call.
The payload structure is identical across all events. Only the event field changes.
Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex’s public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview & Security section for verification instructions.
The payment method data relevant to this event, with the fields of the REST PaymentMethod. Unlike the REST response, institution, transaction and recipient carry every subfield stored with the payment method (see PaymentMethodInstitution and PaymentMethodRecipient), including recipientIdType and recipientIdNumber. Empty values (empty strings, null and empty objects, at every depth) are omitted, so meta, institution, transaction and recipient appear only when they carry something. CARD-channel payment methods omit accountName/accountNumber/institution and instead include card fields (last4, brand, expiration, cardName); dynamic virtual accounts may additionally include expiresInMinutes, amount, and extra.
Show child attributes
Response
Acknowledge receipt. Return any 2xx status code quickly. Response body is ignored.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Afriex Business API","colors":{"primary":"#0075FF","light":"#0075FF","dark":"#0075FF"},"logo":{"light":"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/logo/light.svg?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=de5afeca786c40704f98e96da7d2b1b9","dark":"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/logo/dark.png?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=cdc436ca4fd0df7233a6e3db67941a84"},"favicon":"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/favicon.png?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=48a66687297df9128bf997d1ad6f10cd","api":{"openapi":"api-reference/openapi.json"},"navbar":{"links":[{"href":"https://afriex.statuspage.io","label":"Status"},{"href":"mailto:support@afriex.com","label":"Support"},{"icon":"/images/play.svg","href":"https://god.gw.postman.com/run-collection/36243325-4caa2575-18c9-4374-892d-ea0dc5a9ec48?action=collection%2Ffork\u0026source=rip_markdown\u0026collection-url=entityId%3D36243325-4caa2575-18c9-4374-892d-ea0dc5a9ec48%26entityType%3Dcollection%26workspaceId%3D05fc21e0-e07f-4bc9-bab5-55be8ed3082d","label":"Run in Postman"}],"primary":{"type":"button","label":"Dashboard","href":"https://business.afriex.com/"}},"footer":{"socials":{"x":"https://x.com/afriexapp","github":"https://github.com/Afri-exchange","linkedin":"https://linkedin.com/company/afriex"}},"contextual":{"options":["copy","view","chatgpt","claude","mcp",{"title":"LLMs.txt","description":"Provide information to help LLMs use the full API docs site","icon":"robot","href":"https://docs.afriex.com/llms.txt"}],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"wave-pulse","href":"https://afriex.statuspage.io"},{"anchor":"Support","icon":"envelope","href":"mailto:support@afriex.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"afriex-5d97ad2e","hasAudioNarration":false,"actualSubdomain":"afriex-5d97ad2e","customDomains":["docs.afriex.com"],"gitSource":{"type":"github","owner":"afri-exchange","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae59bb6acf37ed506a0f8f5","collectionId":"490feb78-2920-4995-97be-af4ea87f5aed","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae59bb6acf37ed506a0f8f5"},"entitlements":{},"buildId":"6ae59bb6acf37ed506a0f8f5","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API reference","count":63},{"language":"default","tag":"Payment Batches","count":12},{"language":"default","tag":"Payment Methods","count":11},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Customers","count":7},{"language":"default","tag":"Transactions","count":7},{"language":"default","tag":"Webhooks","count":6},{"language":"default","tag":"Requests and responses","count":5},{"language":"default","tag":"Overview","count":4},{"language":"default","tag":"Sandbox helpers","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"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":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".navbar-link a[href^=\"https://god.gw.postman.com/\"]{padding:.375rem .75rem;border-radius:.375rem;background-color:#ff6c37;color:#fff;font-weight:600}.navbar-link a[href^=\"https://god.gw.postman.com/\"]:hover{background-color:#e85a2a;color:#fff}#navbar div.flex-1:has(>nav .navbar-link){flex:none}"}],"page":{"pagePath":"api-reference/endpoint/webhooks/payment-method-events","slug":"/api-reference/endpoint/webhooks/payment-method-events","pageMetadata":{"title":"Payment Method Events","openapi":"webhook payment_method.events","description":"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is **created**, **updated**, or **deleted** for a customer.\n\nA call to `GET /api/v1/payment-method/pool-account` also sends `PAYMENT_METHOD.UPDATED` for the pool account, on every call.\n\nThe payload structure is **identical** across all events. Only the `event` field changes.\n\n**Security**: Every request includes an `x-webhook-signature` header and an `x-afriex-business-id` header carrying your business id. You **must** verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the [Webhooks Overview \u0026 Security](https://docs.afriex.com/api-reference/endpoint/webhooks/introduction) section for verification instructions.","href":"/api-reference/endpoint/webhooks/payment-method-events"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is \", _jsx(_components.strong, {\n children: \"created\"\n }), \", \", _jsx(_components.strong, {\n children: \"updated\"\n }), \", or \", _jsx(_components.strong, {\n children: \"deleted\"\n }), \" for a customer.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A call to \", _jsx(_components.code, {\n children: \"GET /api/v1/payment-method/pool-account\"\n }), \" also sends \", _jsx(_components.code, {\n children: \"PAYMENT_METHOD.UPDATED\"\n }), \" for the pool account, on every call.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The payload structure is \", _jsx(_components.strong, {\n children: \"identical\"\n }), \" across all events. Only the \", _jsx(_components.code, {\n children: \"event\"\n }), \" field changes.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Security\"\n }), \": Every request includes an \", _jsx(_components.code, {\n children: \"x-webhook-signature\"\n }), \" header and an \", _jsx(_components.code, {\n children: \"x-afriex-business-id\"\n }), \" header carrying your business id. You \", _jsx(_components.strong, {\n children: \"must\"\n }), \" verify this signature using Afriex’s public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the \", _jsx(_components.a, {\n href: \"https://docs.afriex.com/api-reference/endpoint/webhooks/introduction\",\n children: \"Webhooks Overview \u0026 Security\"\n }), \" section for verification instructions.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`event-types`,children:`Event Types`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PAYMENT_METHOD.CREATED`}),` - A new payment method has been created`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PAYMENT_METHOD.UPDATED`}),` - Payment method information has been updated`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PAYMENT_METHOD.DELETED`}),` - A payment method has been deleted`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`sample-payloads`,children:`Sample Payloads`}),`\n`,_jsx(Heading,{level:`3`,id:`payment-method-created`,children:`Payment Method Created`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"30965945-ffa8-53d6-aef7-24b14dbbe129\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"event\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"PAYMENT_METHOD.CREATED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"createdAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-24T09:13:33.883Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"paymentMethodId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6936b8774f987b2994865b73\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"channel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"BANK_ACCOUNT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customerId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6922e4520a53e858ab42efa8\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institution\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institutionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"000013\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institutionName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Guaranty Trust Bank (GTBank) Plc\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accountName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"John Doe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accountNumber\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1234567890\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"countryCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"NG\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`payment-method-updated`,children:`Payment Method Updated`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"b2a99d6b-9ce2-592f-9426-3e2df8f786ce\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"event\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"PAYMENT_METHOD.UPDATED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"createdAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-24T09:13:33.883Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"paymentMethodId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6936b8774f987b2994865b73\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"channel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"BANK_ACCOUNT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customerId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6922e4520a53e858ab42efa8\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institution\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institutionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"000013\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institutionName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Guaranty Trust Bank (GTBank) Plc\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accountName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"John Smith\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accountNumber\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1234567890\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"countryCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"NG\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`payment-method-deleted`,children:`Payment Method Deleted`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"39e222bf-f2f9-5d0b-81ef-713c9ebc2346\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"event\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"PAYMENT_METHOD.DELETED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"createdAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-04-24T09:13:33.883Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"paymentMethodId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"69f87b0dcc0ee96511560796\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"channel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"BANK_ACCOUNT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customerId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6922e4520a53e858ab42efa8\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institution\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institutionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"000013\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"institutionName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Guaranty Trust Bank (GTBank) Plc\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accountName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"John Smith\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"accountNumber\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1234567890\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"countryCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"NG\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Payment Method Events","openapi":"webhook payment_method.events","description":"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is **created**, **updated**, or **deleted** for a customer.\n\nA call to `GET /api/v1/payment-method/pool-account` also sends `PAYMENT_METHOD.UPDATED` for the pool account, on every call.\n\nThe payload structure is **identical** across all events. Only the `event` field changes.\n\n**Security**: Every request includes an `x-webhook-signature` header and an `x-afriex-business-id` header carrying your business id. You **must** verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the [Webhooks Overview \u0026 Security](https://docs.afriex.com/api-reference/endpoint/webhooks/introduction) section for verification instructions.","href":"/api-reference/endpoint/webhooks/payment-method-events"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Event Types","slug":"event-types","depth":2,"children":[]},{"title":"Sample Payloads","slug":"sample-payloads","depth":2,"children":[{"title":"Payment Method Created","slug":"payment-method-created","depth":3,"children":[]},{"title":"Payment Method Updated","slug":"payment-method-updated","depth":3,"children":[]},{"title":"Payment Method Deleted","slug":"payment-method-deleted","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"paymentMethodWebhookEvent","security":[],"servers":["b5c7c49f-693d-4157-9c09-4e62e3798f30"],"summary":"Payment Method Events","description":"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is **created**, **updated**, or **deleted** for a customer.\n\nA call to `GET /api/v1/payment-method/pool-account` also sends `PAYMENT_METHOD.UPDATED` for the pool account, on every call.\n\nThe payload structure is **identical** across all events. Only the `event` field changes.\n\n**Security**: Every request includes an `x-webhook-signature` header and an `x-afriex-business-id` header carrying your business id. You **must** verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the [Webhooks Overview \u0026 Security](https://docs.afriex.com/api-reference/endpoint/webhooks/introduction) section for verification instructions.","tags":["Webhooks"],"requestBody":"9f95fd9b-fb76-4f2c-a1a8-0a3795df33b3","responses":{"200":"8fe728c2-7381-4f80-bc86-77b4d1482861","400":"2af4c522-7acb-4cee-9f1f-5eae11f95b60","401":"85860381-670b-40aa-9e23-6bc8a663bc08"},"method":"post","type":"webhook","path":"payment_method.events","baseUrlOptions":["https://your-domain.com/webhook"],"title":"Payment Method Events","codeSamples":[],"requiredOnlyExamples":false,"requestExamples":[{"language":"json","filename":"paymentMethodCreated","code":"{\n \"id\": \"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f\",\n \"event\": \"PAYMENT_METHOD.CREATED\",\n \"createdAt\": \"2026-04-24T09:13:33.883Z\",\n \"data\": {\n \"paymentMethodId\": \"69528259ba52c13b669fb241\",\n \"channel\": \"BANK_ACCOUNT\",\n \"customerId\": \"69528240ba52c13b669fb239\",\n \"institution\": {\n \"institutionName\": \"United Bank for Africa\"\n },\n \"accountName\": \"John Doe\",\n \"accountNumber\": \"0123456789\",\n \"countryCode\": \"NG\",\n \"currency\": \"NGN\",\n \"capabilities\": [\n \"WITHDRAW\"\n ],\n \"status\": \"active\"\n }\n}"},{"language":"json","filename":"paymentMethodUpdated","code":"{\n \"id\": \"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f\",\n \"event\": \"PAYMENT_METHOD.UPDATED\",\n \"createdAt\": \"2026-04-24T09:13:33.883Z\",\n \"data\": {\n \"paymentMethodId\": \"69528259ba52c13b669fb241\",\n \"channel\": \"BANK_ACCOUNT\",\n \"customerId\": \"69528240ba52c13b669fb239\",\n \"institution\": {\n \"institutionName\": \"United Bank for Africa\"\n },\n \"accountName\": \"John Doe\",\n \"accountNumber\": \"0123456789\",\n \"countryCode\": \"NG\",\n \"currency\": \"NGN\",\n \"capabilities\": [\n \"WITHDRAW\"\n ],\n \"status\": \"active\"\n }\n}"},{"language":"json","filename":"paymentMethodDeleted","code":"{\n \"id\": \"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f\",\n \"event\": \"PAYMENT_METHOD.DELETED\",\n \"createdAt\": \"2026-04-24T09:13:33.883Z\",\n \"data\": {\n \"paymentMethodId\": \"69528259ba52c13b669fb241\",\n \"channel\": \"BANK_ACCOUNT\",\n \"customerId\": \"69528240ba52c13b669fb239\",\n \"institution\": {\n \"institutionName\": \"United Bank for Africa\"\n },\n \"accountName\": \"John Doe\",\n \"accountNumber\": \"0123456789\",\n \"countryCode\": \"NG\",\n \"currency\": \"NGN\",\n \"capabilities\": [\n \"WITHDRAW\"\n ],\n \"status\": \"active\"\n }\n}"}],"requestExampleType":"webhook","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique ID of this event. Every delivery attempt of the same event carries the same `id`, so use it to ignore a delivery you have already processed.","examples":["8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f"],"isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"event":{"type":"string","enum":["PAYMENT_METHOD.CREATED","PAYMENT_METHOD.UPDATED","PAYMENT_METHOD.DELETED"],"description":"Identifies which payment method event occurred","examples":["PAYMENT_METHOD.UPDATED"],"isRequired":true,"uniqueKey":"event","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"string","format":"date-time","description":"When Afriex created the event. Retries keep this value, and the signature covers it, so you can reject a delivery that is older than you expect.","examples":["2026-04-24T09:13:33.883Z"],"isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"data":{"type":"object","description":"The payment method data relevant to this event, with the fields of the REST `PaymentMethod`. Unlike the REST response, `institution`, `transaction` and `recipient` carry every subfield stored with the payment method (see `PaymentMethodInstitution` and `PaymentMethodRecipient`), including `recipientIdType` and `recipientIdNumber`. Empty values (empty strings, `null` and empty objects, at every depth) are omitted, so `meta`, `institution`, `transaction` and `recipient` appear only when they carry something. CARD-channel payment methods omit accountName/accountNumber/institution and instead include card fields (last4, brand, expiration, cardName); dynamic virtual accounts may additionally include expiresInMinutes, amount, and extra.","required":["paymentMethodId","channel","customerId","countryCode"],"properties":{"paymentMethodId":{"type":"string","description":"The unique identifier for the payment method.","isRequired":true,"uniqueKey":"data.paymentMethodId","typeLabel":"string"},"customerId":{"type":"string","description":"The unique identifier of the customer.","isRequired":true,"uniqueKey":"data.customerId","typeLabel":"string"},"channel":{"type":"string","enum":["BANK_ACCOUNT","MOBILE_MONEY","SWIFT","INTERAC","UPI","WE_CHAT","ALIPAY","CARD","CRYPTO","VIRTUAL_BANK_ACCOUNT","POOL_ACCOUNT","ACH_BANK_ACCOUNT","PAYBILL_TILL","RFP","VIRTUAL_CARD"],"description":"The payment method channel.","isRequired":true,"uniqueKey":"data.channel","typeLabel":"enum\u003cstring>"},"countryCode":{"type":"string","description":"The ISO 3166-1 alpha-2 country code.","isRequired":true,"uniqueKey":"data.countryCode","typeLabel":"string"},"reference":{"type":"string","description":"Identifier to reconcile incoming deposits against.","uniqueKey":"data.reference","typeLabel":"string"},"institution":{"type":"object","description":"On a payment method, only `institutionId`, `institutionName`, `institutionCode`, `institutionAddress` and the correspondent bank fields are returned. The address components and `institutionBranch` are accepted when you create one but are not returned on it; `institutionBranch` is returned by the institution list.","properties":{"institutionId":{"type":"string","description":"The unique identifier of the bank or mobile money provider if required.","uniqueKey":"data.institution.institutionId","typeLabel":"string"},"institutionName":{"type":"string","description":"The name of the bank or mobile money provider if required.","uniqueKey":"data.institution.institutionName","typeLabel":"string"},"institutionCode":{"type":"string","description":"The code of the bank or mobile money provider.","uniqueKey":"data.institution.institutionCode","typeLabel":"string"},"institutionAddress":{"type":"string","description":"The address of the bank or mobile money provider if required.","uniqueKey":"data.institution.institutionAddress","typeLabel":"string"},"institutionAddressLine1":{"type":"string","description":"Optional. First line of `institutionAddress`, for SWIFT payment methods. Used ahead of `recipientAddressLine1`.","uniqueKey":"data.institution.institutionAddressLine1","typeLabel":"string"},"institutionAddressCity":{"type":"string","description":"Optional. City of `institutionAddress`, for SWIFT payment methods.","uniqueKey":"data.institution.institutionAddressCity","typeLabel":"string"},"institutionAddressState":{"type":"string","description":"Optional. State of `institutionAddress`, for SWIFT payment methods.","uniqueKey":"data.institution.institutionAddressState","typeLabel":"string"},"institutionAddressZip":{"type":"string","description":"Optional. Postal or ZIP code of `institutionAddress`, for SWIFT payment methods.","uniqueKey":"data.institution.institutionAddressZip","typeLabel":"string"},"institutionAddressCountry":{"type":"string","description":"Optional. Country of `institutionAddress`, for SWIFT payment methods.","uniqueKey":"data.institution.institutionAddressCountry","typeLabel":"string"},"institutionBranch":{"type":"string","description":"The branch of the bank. Required when creating a BANK_ACCOUNT payment method in CNY. Bank lists return it too, often as an empty string.","uniqueKey":"data.institution.institutionBranch","typeLabel":"string"},"correspondentBankName":{"type":"string","description":"The correspondent (intermediary) bank name. Mandatory for USD (SWIFT) payout payment methods; required to produce settlement advices/invoices.","uniqueKey":"data.institution.correspondentBankName","typeLabel":"string"},"correspondentBankAccountNumber":{"type":"string","description":"The correspondent (intermediary) bank account number. Mandatory for USD (SWIFT) payout payment methods; required to produce settlement advices/invoices.","uniqueKey":"data.institution.correspondentBankAccountNumber","typeLabel":"string"}},"uniqueKey":"data.institution","typeLabel":"object"},"transaction":{"type":"object","properties":{"transactionInvoice":{"type":"string","description":"The invoice filename (S3 object key) for the transaction, as returned by the media upload endpoint.","uniqueKey":"data.transaction.transactionInvoice","typeLabel":"string"},"transactionNarration":{"type":"string","description":"The optional reason for the transaction.","uniqueKey":"data.transaction.transactionNarration","typeLabel":"string"}},"uniqueKey":"data.transaction","typeLabel":"object"},"recipient":{"type":"object","description":"On a payment method, only `recipientEmail`, `recipientPhone`, `recipientAddress` and `recipientName` are returned. The other fields are accepted when you create one but are not returned on it.","properties":{"recipientEmail":{"type":"string","format":"email","description":"The email address of the recipient if needed.","uniqueKey":"data.recipient.recipientEmail","typeLabel":"string\u003cemail>"},"recipientPhone":{"type":"string","description":"The phone number of the recipient in E.164 format.","uniqueKey":"data.recipient.recipientPhone","typeLabel":"string"},"recipientAddress":{"type":"string","description":"The address of the recipient if needed.","uniqueKey":"data.recipient.recipientAddress","typeLabel":"string"},"recipientAddressLine1":{"type":"string","description":"Optional. First line of `recipientAddress`. Used on SWIFT payment methods when `institutionAddressLine1` is not sent.","uniqueKey":"data.recipient.recipientAddressLine1","typeLabel":"string"},"recipientAddressCity":{"type":"string","description":"Optional. City of `recipientAddress`.","uniqueKey":"data.recipient.recipientAddressCity","typeLabel":"string"},"recipientAddressState":{"type":"string","description":"Optional. State of `recipientAddress`.","uniqueKey":"data.recipient.recipientAddressState","typeLabel":"string"},"recipientAddressZip":{"type":"string","description":"Optional. Postal or ZIP code of `recipientAddress`.","uniqueKey":"data.recipient.recipientAddressZip","typeLabel":"string"},"recipientAddressCountry":{"type":"string","description":"Optional. Country of `recipientAddress`.","uniqueKey":"data.recipient.recipientAddressCountry","typeLabel":"string"},"recipientIdType":{"type":"string","description":"The type of the recipient's ID. Needed, with `recipientIdNumber`, for BANK_ACCOUNT payment methods in CNY, where it is recorded as the recipient's KYC.","enum":["national_id","passport","drivers_license","voters_card","residence_permit","bvn","tax_id"],"uniqueKey":"data.recipient.recipientIdType","typeLabel":"enum\u003cstring>"},"recipientIdNumber":{"type":"string","description":"The number of the ID named by `recipientIdType`. Needed for BANK_ACCOUNT payment methods in CNY.","uniqueKey":"data.recipient.recipientIdNumber","typeLabel":"string"},"recipientUpiId":{"type":"string","description":"The recipient's UPI ID. Used on UPI payment methods; when omitted, `accountNumber` is used.","uniqueKey":"data.recipient.recipientUpiId","typeLabel":"string"},"recipientName":{"type":"string","description":"The name of the recipient if needed.","uniqueKey":"data.recipient.recipientName","typeLabel":"string"}},"uniqueKey":"data.recipient","typeLabel":"object"},"currency":{"type":"string","description":"The payment method's currency (ISO 4217). Use this instead of inferring currency from countryCode, which is ambiguous (e.g. a USD account in a non-US country).","uniqueKey":"data.currency","typeLabel":"string"},"capabilities":{"type":"array","items":{"type":"string","uniqueKey":"data.capabilities.items.[INDEX]","typeLabel":"string"},"description":"The operations this payment method is enabled for (e.g. DEPOSIT, WITHDRAW). Use it to select deposit-capable vs withdraw-capable methods. Also filterable via the `capabilities` query parameter.","uniqueKey":"data.capabilities","typeLabel":"string[]"},"accountName":{"type":"string","description":"Name of the account holder. Present for account-shaped channels.","uniqueKey":"data.accountName","typeLabel":"string"},"accountNumber":{"type":"string","description":"Account number. Present for account-shaped channels, except INTERAC, which returns none. For UPI it carries the recipient phone number, not the UPI ID.","uniqueKey":"data.accountNumber","typeLabel":"string"},"routingNumber":{"type":"string","description":"Bank routing number. Present for account-shaped channels that carry one (e.g. ACH bank accounts).","uniqueKey":"data.routingNumber","typeLabel":"string"},"bankAddress":{"type":"object","description":"The issuing bank's postal address, populated per account by the provider that provisioned it. Present on virtual accounts and other account-shaped payment methods whose provider supplies it; omitted otherwise. This is the bank's address, not the account holder's.","properties":{"line1":{"type":"string","description":"First line of the bank's street address.","uniqueKey":"data.bankAddress.line1","typeLabel":"string"},"line2":{"type":"string","description":"Second line of the bank's street address, when present.","uniqueKey":"data.bankAddress.line2","typeLabel":"string"},"city":{"type":"string","description":"City.","uniqueKey":"data.bankAddress.city","typeLabel":"string"},"state":{"type":"string","description":"State or region, when present.","uniqueKey":"data.bankAddress.state","typeLabel":"string"},"zip":{"type":"string","description":"Postal or ZIP code.","uniqueKey":"data.bankAddress.zip","typeLabel":"string"},"country":{"type":"string","description":"Country, as supplied by the provider.","uniqueKey":"data.bankAddress.country","typeLabel":"string"}},"uniqueKey":"data.bankAddress","typeLabel":"object"},"status":{"type":"string","enum":["active","pending","deleted","expired","blocked"],"description":"Lifecycle status of the payment method.","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"last4":{"type":"string","description":"Last 4 digits of the card. CARD channel only.","uniqueKey":"data.last4","typeLabel":"string"},"brand":{"type":"string","enum":["Visa","MasterCard","Discover","American Express","JCB","Diners Club","Eftpos Australia","UnionPay","Unknown"],"description":"Card brand. CARD channel only.","uniqueKey":"data.brand","typeLabel":"enum\u003cstring>"},"expiration":{"type":"object","description":"Card expiration. CARD channel only.","properties":{"month":{"type":"integer","uniqueKey":"data.expiration.month","typeLabel":"integer"},"year":{"type":"integer","uniqueKey":"data.expiration.year","typeLabel":"integer"}},"uniqueKey":"data.expiration","typeLabel":"object"},"cardName":{"type":"string","description":"Name on the card. CARD channel only.","uniqueKey":"data.cardName","typeLabel":"string"},"expiresInMinutes":{"type":"integer","description":"Minutes until a dynamic virtual account expires, when applicable.","uniqueKey":"data.expiresInMinutes","typeLabel":"integer"},"amount":{"oneOf":[{"type":"number","description":"The amount stored with the payment method, as you sent it (a number or a numeric string), or the requested amount for a dynamic virtual account, when applicable.","uniqueKey":"data.amount.oneOf.0","typeLabel":"number"},{"type":"string","description":"The amount stored with the payment method, as you sent it (a number or a numeric string), or the requested amount for a dynamic virtual account, when applicable.","uniqueKey":"data.amount.oneOf.1","typeLabel":"string"}],"uniqueKey":"data.amount","typeLabel":"number | string"},"extra":{"type":"object","description":"Additional channel-specific properties.","additionalProperties":true,"uniqueKey":"data.extra","typeLabel":"object"},"meta":{"type":"object","description":"The meta data you attached to the payment method when you created it.","uniqueKey":"data.meta","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["id","event","createdAt","data"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"paymentMethodCreated":{"title":"paymentMethodCreated","value":{"id":"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f","event":"PAYMENT_METHOD.CREATED","createdAt":"2026-04-24T09:13:33.883Z","data":{"paymentMethodId":"69528259ba52c13b669fb241","channel":"BANK_ACCOUNT","customerId":"69528240ba52c13b669fb239","institution":{"institutionName":"United Bank for Africa"},"accountName":"John Doe","accountNumber":"0123456789","countryCode":"NG","currency":"NGN","capabilities":["WITHDRAW"],"status":"active"}}},"paymentMethodUpdated":{"title":"paymentMethodUpdated","value":{"id":"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f","event":"PAYMENT_METHOD.UPDATED","createdAt":"2026-04-24T09:13:33.883Z","data":{"paymentMethodId":"69528259ba52c13b669fb241","channel":"BANK_ACCOUNT","customerId":"69528240ba52c13b669fb239","institution":{"institutionName":"United Bank for Africa"},"accountName":"John Doe","accountNumber":"0123456789","countryCode":"NG","currency":"NGN","capabilities":["WITHDRAW"],"status":"active"}}},"paymentMethodDeleted":{"title":"paymentMethodDeleted","value":{"id":"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f","event":"PAYMENT_METHOD.DELETED","createdAt":"2026-04-24T09:13:33.883Z","data":{"paymentMethodId":"69528259ba52c13b669fb241","channel":"BANK_ACCOUNT","customerId":"69528240ba52c13b669fb239","institution":{"institutionName":"United Bank for Africa"},"accountName":"John Doe","accountNumber":"0123456789","countryCode":"NG","currency":"NGN","capabilities":["WITHDRAW"],"status":"active"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"8fe728c2-7381-4f80-bc86-77b4d1482861":{"description":"Acknowledge receipt. Return any 2xx status code quickly. Response body is ignored.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"2af4c522-7acb-4cee-9f1f-5eae11f95b60":{"description":"Bad Request, malformed payload, invalid/missing signature, etc. Afriex will retry delivery.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"85860381-670b-40aa-9e23-6bc8a663bc08":{"description":"Unauthorized, signature verification failed.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{},"servers":{"b5c7c49f-693d-4157-9c09-4e62e3798f30":{"url":"https://your-domain.com/webhook","description":"The webhook URL you configure in the dashboard"}}},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"afriex-5d97ad2e","siteName":"Afriex Business API","title":"Payment Method Events - Afriex Business API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T09:09:39.986Z","originalFileLocation":"api-reference/endpoint/webhooks/payment-method-events.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=\"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is created, updated, or deleted for a customer. A call to GET /api/v1/payment-method/pool-account also sends PAYMENT_METHOD.UPDATED for the pool account, on every call. The payload structure is identical across all events. Only the event field changes. Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex\u0026#x27;s public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview \u0026amp; Security section for verification instructions.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Afriex Business API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Payment Method Events - Afriex Business API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is created, updated, or deleted for a customer. A call to GET /api/v1/payment-method/pool-account also sends PAYMENT_METHOD.UPDATED for the pool account, on every call. The payload structure is identical across all events. Only the event field changes. Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex\u0026#x27;s public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview \u0026amp; Security section for verification instructions.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Afriex Business API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://afriex-5d97ad2e.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Payment+Method+Events\u0026amp;description=Afriex+delivers+real-time+notifications+to+your+configured+webhook+URL+whenever+a+payment+method+is+**created**%2C+**updated**%2C+or+**deleted**+for+a+customer.%0A%0AA+\u0026amp;theme=c5e7ac6707206fe4b7db0208\u0026amp;signature=52daa7f05f20d63c757de2c0ce4587528665318b65a6d982b1a59279f0c40094\">\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=\"Payment Method Events - Afriex Business API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is created, updated, or deleted for a customer. A call to GET /api/v1/payment-method/pool-account also sends PAYMENT_METHOD.UPDATED for the pool account, on every call. The payload structure is identical across all events. Only the event field changes. Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex\u0026#x27;s public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview \u0026amp; Security section for verification instructions.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://afriex-5d97ad2e.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Payment+Method+Events\u0026amp;description=Afriex+delivers+real-time+notifications+to+your+configured+webhook+URL+whenever+a+payment+method+is+**created**%2C+**updated**%2C+or+**deleted**+for+a+customer.%0A%0AA+\u0026amp;theme=c5e7ac6707206fe4b7db0208\u0026amp;signature=52daa7f05f20d63c757de2c0ce4587528665318b65a6d982b1a59279f0c40094\">\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/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Afriex Business API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0075FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/webhooks/payment-method-events.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.afriex.com/#organization\",\"name\":\"Afriex Business API\",\"url\":\"https://docs.afriex.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/logo/light.svg?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=de5afeca786c40704f98e96da7d2b1b9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.afriex.com#website\",\"name\":\"Afriex Business API\",\"url\":\"https://docs.afriex.com\",\"publisher\":{\"@id\":\"https://docs.afriex.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events#webpage\",\"url\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events\",\"name\":\"Payment Method Events\",\"description\":\"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is created, updated, or deleted for a customer. A call to GET /api/v1/payment-method/pool-account also sends PAYMENT_METHOD.UPDATED for the pool account, on every call. The payload structure is identical across all events. Only the event field changes. Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview \u0026 Security section for verification instructions.\",\"dateModified\":\"2026-10-16T09:09:39.986Z\",\"isPartOf\":{\"@id\":\"https://docs.afriex.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Webhooks\",\"item\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Payment Method Events\",\"item\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events#apireference\",\"headline\":\"Payment Method Events\",\"name\":\"Payment Method Events\",\"description\":\"Afriex delivers real-time notifications to your configured webhook URL whenever a payment method is created, updated, or deleted for a customer. A call to GET /api/v1/payment-method/pool-account also sends PAYMENT_METHOD.UPDATED for the pool account, on every call. The payload structure is identical across all events. Only the event field changes. Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview \u0026 Security section for verification instructions.\",\"url\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events\",\"mainEntityOfPage\":{\"@id\":\"https://docs.afriex.com/api-reference/endpoint/webhooks/payment-method-events#webpage\"},\"dateModified\":\"2026-10-16T09:09:39.986Z\",\"publisher\":{\"@id\":\"https://docs.afriex.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.afriex.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Afriex Business API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Afriex Business API","nav":{"global":{"anchors":[{"anchor":"Status","icon":"wave-pulse","href":"https://afriex.statuspage.io"},{"anchor":"Support","icon":"envelope","href":"mailto:support@afriex.com"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/introduction"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/introduction"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Permissions","href":"/api-reference/permissions"},{"title":"IP allowlisting","href":"/api-reference/ip-allowlisting"}]},{"group":"Requests and responses","pages":[{"title":"Idempotency","href":"/api-reference/idempotency"},{"title":"Errors","href":"/api-reference/errors"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Rate limits","href":"/api-reference/rate-limits"},{"title":"Models","href":"/api-reference/models"}]},{"group":"Balance","pages":[{"title":"Get Balance","openapi":"GET /api/v1/org/balance","href":"/api-reference/endpoint/balance/get"}]},{"group":"Checkout Sessions","pages":[{"title":"Checkout Flow Guide","href":"/api-reference/endpoint/checkout-sessions/user-flow-guide"},{"title":"Create Checkout Session","openapi":"POST /api/v1/checkout-session","href":"/api-reference/endpoint/checkout-sessions/create"}]},{"group":"Rates","pages":[{"title":"Get Exchange Rates","openapi":"GET /api/v1/org/rates","href":"/api-reference/endpoint/rates/get"}]},{"group":"Customers","pages":[{"title":"Create Customer","openapi":"POST /api/v1/customer","href":"/api-reference/endpoint/customers/create"},{"title":"List Customers","openapi":"GET /api/v1/customer","href":"/api-reference/endpoint/customers/list"},{"title":"Get Customer","openapi":"GET /api/v1/customer/{customerId}","href":"/api-reference/endpoint/customers/get"},{"title":"Update Customer","openapi":"PATCH /api/v1/customer/{customerId}","href":"/api-reference/endpoint/customers/update"},{"title":"Delete Customer","openapi":"DELETE /api/v1/customer/{customerId}","href":"/api-reference/endpoint/customers/delete"},{"title":"Update Customer KYC","openapi":"PATCH /api/v1/customer/{customerId}/kyc","href":"/api-reference/endpoint/customers/update-kyc"},{"title":"Verify Customer","openapi":"POST /api/v1/customer/{customerId}/verify","href":"/api-reference/endpoint/customers/verify"}]},{"group":"Payment Methods","pages":[{"title":"Create Payment Method","openapi":"POST /api/v1/payment-method","href":"/api-reference/endpoint/payment-methods/create"},{"title":"List Payment Methods","openapi":"GET /api/v1/payment-method","href":"/api-reference/endpoint/payment-methods/list"},{"title":"Get Payment Method","openapi":"GET /api/v1/payment-method/{paymentMethodId}","href":"/api-reference/endpoint/payment-methods/get"},{"title":"Delete Payment Method","openapi":"DELETE /api/v1/payment-method/{paymentMethodId}","href":"/api-reference/endpoint/payment-methods/delete"},{"title":"List Institutions","openapi":"GET /api/v1/payment-method/institution","href":"/api-reference/endpoint/payment-methods/institution"},{"title":"Institution Codes","openapi":"GET /api/v1/payment-method/institution/codes","href":"/api-reference/endpoint/payment-methods/institution-codes"},{"title":"Resolve Payment Method","openapi":"GET /api/v1/payment-method/resolve","href":"/api-reference/endpoint/payment-methods/resolve"},{"title":"Get or Create Crypto Wallet","openapi":"GET /api/v1/payment-method/crypto-wallet","href":"/api-reference/endpoint/payment-methods/crypto-wallet"},{"title":"List Virtual Accounts","openapi":"GET /api/v1/payment-method/virtual-account","href":"/api-reference/endpoint/payment-methods/virtual-account"},{"title":"Create Virtual Account","openapi":"POST /api/v1/payment-method/virtual-account","href":"/api-reference/endpoint/payment-methods/virtual-account-create"},{"title":"Get Pool Account","openapi":"GET /api/v1/payment-method/pool-account","href":"/api-reference/endpoint/payment-methods/pool-account"}]},{"group":"Media","pages":[{"title":"Generate Upload URL","openapi":"POST /api/v1/media/url","href":"/api-reference/endpoint/media/generate-upload-url"}]},{"group":"Transactions","pages":[{"title":"Create Transaction","openapi":"POST /api/v1/transaction","href":"/api-reference/endpoint/transactions/create"},{"title":"List Transactions","openapi":"GET /api/v1/transaction","href":"/api-reference/endpoint/transactions/list"},{"title":"Quote a Withdrawal","openapi":"GET /api/v1/transaction/quote","href":"/api-reference/endpoint/transactions/quote"},{"title":"Get Transaction","openapi":"GET /api/v1/transaction/{transactionId}","href":"/api-reference/endpoint/transactions/get"},{"title":"Authorize Transaction","openapi":"POST /api/v1/transaction/{transactionId}/authorize","href":"/api-reference/endpoint/transactions/authorize"},{"title":"Get Settlement Advice","openapi":"GET /api/v1/transaction/{transactionId}/advice","href":"/api-reference/endpoint/transactions/advice"},{"title":"Submit Pool-Account Payment Proof","openapi":"POST /api/v1/transaction/pool-account","href":"/api-reference/endpoint/transactions/pool-account-proof"}]},{"group":"Payment Batches","pages":[{"title":"List Payment Batches","openapi":"GET /api/v1/payment-batch","href":"/api-reference/endpoint/payment-batches/list"},{"title":"Create Payment Batch","openapi":"POST /api/v1/payment-batch","href":"/api-reference/endpoint/payment-batches/create"},{"title":"Get Payment Batch","openapi":"GET /api/v1/payment-batch/{batchId}","href":"/api-reference/endpoint/payment-batches/get"},{"title":"Update Payment Batch","openapi":"PATCH /api/v1/payment-batch/{batchId}","href":"/api-reference/endpoint/payment-batches/update"},{"title":"Delete Payment Batch","openapi":"DELETE /api/v1/payment-batch/{batchId}","href":"/api-reference/endpoint/payment-batches/delete"},{"title":"List Batch Recipients","openapi":"GET /api/v1/payment-batch/{batchId}/recipients","href":"/api-reference/endpoint/payment-batches/list-recipients"},{"title":"Add Recipient to Batch","openapi":"POST /api/v1/payment-batch/{batchId}/recipients","href":"/api-reference/endpoint/payment-batches/add-recipient"},{"title":"Bulk Add Recipients to Batch","openapi":"POST /api/v1/payment-batch/{batchId}/recipients/bulk","href":"/api-reference/endpoint/payment-batches/add-recipients-bulk"},{"title":"Update Recipient in Batch","openapi":"PATCH /api/v1/payment-batch/{batchId}/recipients/{recipientId}","href":"/api-reference/endpoint/payment-batches/update-recipient"},{"title":"Remove Recipient from Batch","openapi":"DELETE /api/v1/payment-batch/{batchId}/recipients/{recipientId}","href":"/api-reference/endpoint/payment-batches/remove-recipient"},{"title":"Withdraw Batch","openapi":"POST /api/v1/payment-batch/{batchId}/withdraw","href":"/api-reference/endpoint/payment-batches/withdraw"},{"title":"List Batch Sessions","openapi":"GET /api/v1/payment-batch/{batchId}/sessions","href":"/api-reference/endpoint/payment-batches/list-sessions"}]},{"group":"SME Registration","pages":[{"title":"Register SME","openapi":"POST /api/v1/sme-registration","href":"/api-reference/endpoint/sme-registration/register"},{"title":"Get SME Registration Status","openapi":"GET /api/v1/sme-registration/status","href":"/api-reference/endpoint/sme-registration/status"}]},{"group":"Sandbox helpers","pages":[{"title":"Simulate Transaction Outcome","openapi":"POST /api/v1/transaction/{transactionId}/simulate","href":"/api-reference/endpoint/transactions/simulate"},{"title":"Top Up Sandbox Balance","openapi":"POST /api/v1/org/balance/topup","href":"/api-reference/endpoint/balance/topup"},{"title":"Simulate Virtual Account Transfer","openapi":"POST /api/v1/payment-method/virtual-account/simulate-transfer","href":"/api-reference/endpoint/payment-methods/virtual-account-simulate-transfer"},{"title":"Trigger Test Webhook","openapi":"POST /api/v1/webhooks/trigger","href":"/api-reference/endpoint/webhooks/trigger"}]},{"group":"Webhooks","pages":[{"title":"Introduction","href":"/api-reference/endpoint/webhooks/introduction"},{"title":"Customer Events","openapi":"webhook customer.events","description":"Afriex delivers real-time notifications to your configured webhook URL whenever a customer is **created**, **updated**, or **deleted**.\n\nThe payload structure is **identical** across all events. Only the `event` field changes.\n\n**Security**: Every request includes an `x-webhook-signature` header and an `x-afriex-business-id` header carrying your business id. You **must** verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the [Webhooks Overview \u0026 Security](https://docs.afriex.com/api-reference/endpoint/webhooks/introduction) section for verification instructions.","href":"/api-reference/endpoint/webhooks/customer-events"},{"title":"Payment Method Events","openapi":"webhook payment_method.events","href":"/api-reference/endpoint/webhooks/payment-method-events"},{"title":"Transaction Events","openapi":"webhook transaction.events","description":"Afriex sends real-time webhook notifications to your configured URL whenever a transaction is **created** or **updated**.\n\n- `TRANSACTION.CREATED`: Fired when a new transaction is initiated.\n- `TRANSACTION.UPDATED`: Fired when the transaction status or other fields change (most commonly `status` and `updatedAt`).\n\nThe payload structure is **identical** for both events. Only the `event` field and potentially `status` + `updatedAt` differ.\n\n**Security**: Every request includes an `x-webhook-signature` header and an `x-afriex-business-id` header carrying your business id. You **must** verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the [Webhooks Overview \u0026 Security](https://docs.afriex.com/api-reference/endpoint/webhooks/introduction) section for verification instructions.","href":"/api-reference/endpoint/webhooks/transaction-events"},{"title":"Checkout Session Events","openapi":"webhook checkout_session.events","href":"/api-reference/endpoint/webhooks/checkout-session-events"},{"title":"Pool Deposit Events","openapi":"webhook pool_deposit_request.events","href":"/api-reference/endpoint/webhooks/pool-deposit-events"}]}]}]},"basePath":"","title":"Payment Method Events - Afriex Business API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}