{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-platform/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["typography"]},"type":"markdown"},"seo":{"title":"Payment Session Webhooks","siteUrl":"https://docs.glomo.one","llmstxt":{"title":"Glomo developer documentation","description":"Cross-border payments APIs, organised by product. Each product section carries both the explanation of its objects and the job-shaped integration guides that set them up.","details":{"content":"How to use these docs:\n\n- Get started is the front door. It has one section per integration\n  (what you're building), each with the API calls in order and the guide that builds it, plus\n  how to get API keys.\n- The product sections - Payin, Payout, Multi-currency accounts,\n  Verification, Request for Information (RFI) - each hold two kinds of page.\n  Pages titled as a noun (\"Subscriptions\", \"Bank Transfer\") explain what\n  an object is. Pages titled as a job (\"Set up recurring subscriptions\",\n  \"Collect LRS remittances from India\") are complete integration flows\n  and live one level under the object they set up. Match a user's goal\n  against the job-shaped titles first.\n- Reports and Identity and Access Management are the two subjects with no\n  API counterpart. There are no endpoints for reports, users, roles or\n  invites; both pages document the merchant dashboard. A dashboard\n  procedure for something the API also does (a refund, a payout) is NOT\n  here - it stays in the product that owns it.\n- API reference is generated from OpenAPI and carries endpoint detail.\n- The OpenAPI description itself is published as a single self-contained\n  document at /openapi.yaml, and the same document as JSON at\n  /openapi.json. Every $ref is resolved into it, so one fetch is the\n  whole contract: 61 paths, 81 operations, 68 schemas - the same\n  endpoints the API reference pages render. Fetch that instead of\n  reading the 129 pages under /api-reference/.\n- Every page below, in full, is one document at /llms-full.txt. Fetch that\n  instead of the pages one by one. It leaves out the API reference;\n  /openapi.yaml is that.\n- Developer resources covers what every integration touches and no single\n  product owns: auth, errors, pagination, rate limits, webhooks,\n  versioning, supported countries, quotes, the MCP server for AI\n  agents, and the client SDKs.\n"},"sections":[{"title":"Get started","description":"The front door. The ordered API calls for each integration and the guide that delivers it, how to obtain API keys, and the platform glossary.","includeFiles":["**/get-started/**"]},{"title":"Payin","description":"Collecting money: customers, orders, checkout, payment links, payment methods (cards, bank transfer, pay via bank), refunds, disputes, purpose codes, fee models, custom fields, subscriptions, and resident India remittance under LRS. Includes the flows that set each up - bank transfers, subscriptions, LRS remittances, and server-to-server card payments.","includeFiles":["**/payin/**"]},{"title":"Payout","description":"Sending money: the payout life cycle, queued payouts, creating and cancelling a payout, rails, beneficiaries, purpose codes, and the action required state. Includes the flow that sends a payout over the API.","includeFiles":["**/payout/**"]},{"title":"Multi-currency accounts","description":"Holding money: balances, balance conversion, adding balance, and withdrawing balance.","includeFiles":["**/multi-currency-account/**"]},{"title":"Verification","description":"Proving who someone is and that an account is theirs: KYC, bank account validation, and third-party verification (TPV) with the flow that verifies a payer's bank account.","includeFiles":["**/verification/**"]},{"title":"Request for Information (RFI)","description":"Responding to a compliance request for information, per object - payment link, order, payment, payout - plus compliance reviews and RFIs raised on already-successful payments.","includeFiles":["**/request-for-information/**"]},{"title":"Nivo (Capital markets)","description":"Nivo, Glomo's capital markets suite (Nivo for AMCs, Nivo for Distributors, and overseas investing for brokers and wealth platforms). Mutual fund investments run as payment sessions: the fund, distributor, scheme, plan, ARN and folio roles; the distributor's relationship with a fund and what it fixes; and the flow that opens a session as a distributor.","includeFiles":["**/capital-markets/**"]},{"title":"Reports","description":"The downloadable and scheduled reports a merchant pulls from the dashboard for reconciliation, compliance and treasury: payment, subscription, settlement breakup, balance statement and KYC reports, plus scheduling one for recurring email delivery and customizing the fields and column order of a report. Dashboard only - there is no reports API.","includeFiles":["**/reports/**"]},{"title":"Identity and Access Management","description":"Administering who can use a merchant account: one set of credentials across multiple MIDs, switching between them without logging out, the Admin / Member / Sales Partner roles and what each may see and do, and inviting a new member. Dashboard only - there is no users, roles or invites API.","includeFiles":["**/access-management/**"]},{"title":"Settlement holidays","description":"The settlement holiday calendar for 2026 - the Indian and US bank and FX holidays on which payin, payout and settlement to the merchant's bank account may be delayed.","includeFiles":["**/settlement-holidays/**"]},{"title":"API reference","description":"Endpoint reference generated from the Glomo OpenAPI description.","includeFiles":["**/api-reference/**"]},{"title":"Developer resources","description":"What every integration touches and no single product owns: auth, errors, pagination, rate limits, webhooks, versioning, API validations, security, supported countries, quotes, connecting an AI agent to the Glomo MCP server, and the client SDKs - React Native, Flutter, Android and the Unified Web SDK, with per-version references and changelogs. Reports and Identity and Access Management used to be listed here and are now their own sections.","includeFiles":["**/platform/**"]}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"payment-session-webhooks","__idx":0},"children":["Payment Session Webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payment Session webhooks notify you each time a payment session moves to a new status. Every event carries the full session snapshot, so you can update your records from the webhook alone, without calling the API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["They are sent to the fund that owns the session and, when the session is credited to a distributor, to the distributor too. Both receive the same event, with the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event_id"]},"."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The sample payloads on this page are pretty-printed. The body Glomo sends is the RFC 8785 canonical form of the same object, and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Glomopay-Signature"]}," header is computed over those bytes. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/webhooks#webhook-authentication--security"},"children":["Webhook Authentication & Security"]},"."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event Type"},"children":["Event Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Typography","attributes":{"fontColor":"#B75906"},"children":[" created "]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Typography","attributes":{"fontColor":"#B75906"},"children":[" updated "]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session moved to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_in_progress"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_done"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_pending"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["remittance_claimed"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paid"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Typography","attributes":{"fontColor":"#008A5A"},"children":[" completed "]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The investor finished every step. Final."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Typography","attributes":{"fontColor":"#BC1919"},"children":[" failed "]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session ended without finishing. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.failure"]}," says why. Final."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Typography","attributes":{"fontColor":"#BC1919"},"children":[" expired "]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session passed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]}," before any money moved. Final."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payload","__idx":1},"children":["Payload"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unique per event. The same on every delivery attempt of that event, so use it to drop a redelivery. A repeat of the same status is a separate event with its own ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event_id"]}," (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#ordering-and-delivery"},"children":["Ordering and delivery"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occurred_at"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ISO 8601 timestamp, in UTC, of the change that produced the event."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["entity_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_session"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["One of the event types above."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session snapshot at the time of the change. Same fields as ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/openapi/payment_session/getpaymentsession"},"children":["Retrieve a payment session"]},", without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failure_reason"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.status"]}," is the session's new status."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"statuses","__idx":2},"children":["Statuses"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.status"]}," is one of these statuses. The event type follows from it."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["created"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["created"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session exists; the investor has not started KYC."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_in_progress"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The investor is going through KYC. Sent once ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.entities.kyc"]}," is present."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_done"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["KYC is complete; no money has moved yet."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A payment has started but has not succeeded. Sent once ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.entities.order"]}," is present."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["remittance_claimed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The investor's bank is not supported for LRS on Glomo, so they paid the fund directly and gave the transfer reference (UTR)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A payment on the session's order succeeded. Sent once ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.entities.order"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.entities.payments"]}," are present."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The investor finished every step. For session types with a folio transaction, sent once ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.entities.folio_transaction"]}," is present."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session ended without finishing."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session passed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]}," before any money moved."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ordering-and-delivery","__idx":3},"children":["Ordering and delivery"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Treat each event as \"the session's status is now ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.status"]},"\"."]}," Glomo sends an event whenever the session, one of its steps, its order or one of its payments changes state, so the same status can arrive more than once, including ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]},". Update your record from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]},"; an event with the status you already hold needs no action."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Not every status is sent for every session."]}," A session moves at the investor's pace, so a step can be skipped. For example, a top-up that reuses a completed KYC goes from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["created"]}," straight to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_done"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_in_progress"]}," can be skipped when KYC starts and finishes quickly. Read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," rather than expecting a fixed order of statuses."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_pending"]}," can repeat."]}," If a payment fails and the investor retries, each payment change sends a new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated"]}," event while the status stays ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_pending"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.entities.payments"]}," shows each attempt."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}," is sent when Glomo marks the session expired"]},", which happens once a day. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/openapi/payment_session/getpaymentsession"},"children":["Retrieve a payment session"]}," can read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}," earlier, as soon as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]}," has passed. Once money has started moving, the session never reads ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Events can arrive out of order."]}," Deliveries are queued and retried independently (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/webhooks"},"children":["retries"]},"), so a later event can arrive before an earlier one. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occurred_at"]}," gives the order of the changes; when the order matters to you, call ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/openapi/payment_session/getpaymentsession"},"children":["Retrieve a payment session"]}," for the current status."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sample-payload--updated-paid","__idx":4},"children":["Sample Payload — Updated (paid)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"Sample","header":{"controls":{"copy":{}}},"source":"{\n  \"event_id\": \"evt_psess_6819d8046mpKt_8c2f4a91d0b37e65a14c9f02\",\n  \"occurred_at\": \"2026-11-03T06:02:11Z\",\n  \"entity_type\": \"payment_session\",\n  \"event_type\": \"updated\",\n  \"data\": {\n    \"id\": \"psess_6819d8046mpKt\",\n    \"session_type\": \"kyc_lrs_folio\",\n    \"status\": \"paid\",\n    \"failure\": null,\n    \"created_at\": \"2026-11-03T05:12:40Z\",\n    \"expires_at\": \"2026-11-10T05:12:40Z\",\n    \"updated_at\": \"2026-11-03T06:02:11Z\",\n    \"customer_id\": \"cust_6819d7d0lrLvP\",\n    \"scheme\": {\n      \"scheme_code\": \"SCH001\",\n      \"name\": \"Example Global Equity Fund - Regular Plan\",\n      \"plan\": \"regular\",\n      \"distributor_arn\": \"ARN12345\"\n    },\n    \"amount\": {\n      \"value\": 500000,\n      \"currency\": \"USD\"\n    },\n    \"expected_entities\": [\"kyc\", \"folio\", \"order\", \"payments\", \"folio_transaction\"],\n    \"entities\": {\n      \"kyc\": {\n        \"id\": \"kyc_6819d8046mpKt\",\n        \"status\": \"completed\",\n        \"failure_reason\": null,\n        \"bank_enabled\": true,\n        \"updated_at\": \"2026-11-03T05:40:02Z\"\n      },\n      \"folio\": null,\n      \"order\": {\n        \"id\": \"order_678a4c88hpAjf\",\n        \"status\": \"paid\",\n        \"expires_at\": \"2026-11-04T05:45:00Z\",\n        \"updated_at\": \"2026-11-03T06:01:58Z\"\n      },\n      \"payments\": [\n        {\n          \"id\": \"payt_6819e5b1nTzXc\",\n          \"status\": \"success\",\n          \"amount\": 500000,\n          \"currency\": \"USD\",\n          \"method\": \"pay_via_bank\",\n          \"payer\": {\n            \"name\": \"Asha Verma\",\n            \"country\": \"IND\",\n            \"bank_name\": \"HDFC bank\",\n            \"account_number\": \"••••1234\"\n          },\n          \"paid_at\": \"2026-11-03T06:01:55Z\",\n          \"error_code\": null,\n          \"error_message\": null,\n          \"updated_at\": \"2026-11-03T06:01:58Z\"\n        }\n      ],\n      \"folio_transaction\": null\n    }\n  }\n}\n","lang":"Sample"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sample-payload--created","__idx":5},"children":["Sample Payload — Created"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"Sample","header":{"controls":{"copy":{}}},"source":"{\n  \"event_id\": \"evt_psess_6819d8046mpKt_3e7b19c05fa2d48b61e0c7a4\",\n  \"occurred_at\": \"2026-11-03T05:12:40Z\",\n  \"entity_type\": \"payment_session\",\n  \"event_type\": \"created\",\n  \"data\": {\n    \"id\": \"psess_6819d8046mpKt\",\n    \"session_type\": \"kyc_lrs_folio\",\n    \"status\": \"created\",\n    \"failure\": null,\n    \"created_at\": \"2026-11-03T05:12:40Z\",\n    \"expires_at\": \"2026-11-10T05:12:40Z\",\n    \"updated_at\": \"2026-11-03T05:12:40Z\",\n    \"customer_id\": null,\n    \"scheme\": {\n      \"scheme_code\": \"SCH001\",\n      \"name\": \"Example Global Equity Fund - Regular Plan\",\n      \"plan\": \"regular\",\n      \"distributor_arn\": \"ARN12345\"\n    },\n    \"amount\": {\n      \"value\": 500000,\n      \"currency\": \"USD\"\n    },\n    \"expected_entities\": [\"kyc\", \"folio\", \"order\", \"payments\", \"folio_transaction\"],\n    \"entities\": {\n      \"kyc\": null,\n      \"folio\": null,\n      \"order\": null,\n      \"payments\": [],\n      \"folio_transaction\": null\n    }\n  }\n}\n","lang":"Sample"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sample-payload--failed","__idx":6},"children":["Sample Payload — Failed"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"Sample","header":{"controls":{"copy":{}}},"source":"{\n  \"event_id\": \"evt_psess_6819d9a1bXcVq_f4a0c62e9b18d735c2e9a06b\",\n  \"occurred_at\": \"2026-11-02T11:30:47Z\",\n  \"entity_type\": \"payment_session\",\n  \"event_type\": \"failed\",\n  \"data\": {\n    \"id\": \"psess_6819d9a1bXcVq\",\n    \"session_type\": \"kyc_lrs\",\n    \"status\": \"failed\",\n    \"failure\": {\n      \"code\": \"kyc_rejected\",\n      \"message\": \"KYC verification was rejected\"\n    },\n    \"created_at\": \"2026-11-02T10:04:12Z\",\n    \"expires_at\": \"2026-11-09T10:04:12Z\",\n    \"updated_at\": \"2026-11-02T11:30:47Z\",\n    \"customer_id\": \"cust_6819d9b0pRtYw\",\n    \"scheme\": null,\n    \"amount\": null,\n    \"expected_entities\": [\"kyc\", \"order\", \"payments\"],\n    \"entities\": {\n      \"kyc\": {\n        \"id\": \"kyc_6819d9c2mNbVc\",\n        \"status\": \"failed\",\n        \"failure_reason\": \"Rejected due to unmet compliance requirements\",\n        \"bank_enabled\": true,\n        \"updated_at\": \"2026-11-02T11:30:45Z\"\n      },\n      \"order\": null,\n      \"payments\": []\n    }\n  }\n}\n","lang":"Sample"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failure.code"]}," is one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_failed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_expired"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc_rejected"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bank_not_supported"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_failed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sanction_hit"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ineligible_country"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prospect_folio_creation_failed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inbound_checkout_failed"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["shareable_link_unavailable"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failure.message"]}," is safe to show to the investor."]}]}]},"headings":[{"value":"Payment Session Webhooks","id":"payment-session-webhooks","depth":1},{"value":"Payload","id":"payload","depth":2},{"value":"Statuses","id":"statuses","depth":2},{"value":"Ordering and delivery","id":"ordering-and-delivery","depth":2},{"value":"Sample Payload — Updated (paid)","id":"sample-payload--updated-paid","depth":2},{"value":"Sample Payload — Created","id":"sample-payload--created","depth":2},{"value":"Sample Payload — Failed","id":"sample-payload--failed","depth":2}],"frontmatter":{"seo":{"title":"Payment Session Webhooks"}},"lastModified":"2026-11-06T11:05:55.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/platform/webhooks/payment-session","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}