> ## Documentation Index
> Fetch the complete documentation index at: https://developer.moneyone.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Async pushes to your configured endpoint, with per-URL event subscription.

You can have MoneyOne push events to your configured webhook URL(s) on completion.
Each URL subscribes to one or both events, so you receive the journey outcome — and
optionally the data — the moment it is ready.

<Note>
  To configure your webhook URL(s) and their event subscriptions, contact
  `support@moneyone.in`.
</Note>

## Events

| Event              | Body                                                               | Description                                                                |
| ------------------ | ------------------------------------------------------------------ | -------------------------------------------------------------------------- |
| `JOURNEY_COMPLETE` | Identical to the [`/transaction/status`](./track-status) response. | The journey reached a terminal state. Gives the status only, not the data. |
| `DATA`             | Identical to the [`/transaction/data`](./fetch-data) response.     | The collected data is ready. Gives the data.                               |

A URL subscribes to one or both events (defaults to `JOURNEY_COMPLETE`). If you
subscribe only to `JOURNEY_COMPLETE`, call [`/transaction/data`](./fetch-data) when
you need the data.

## Request

MoneyOne POSTs to your endpoint. The body is identical to the corresponding status /
data response, and the event is identified by its `event_type` field.

```http theme={null}
POST <client webhook url>
Content-Type: application/json

{ ...same body as the corresponding status / data response... }
```

## Payloads

<AccordionGroup>
  <Accordion title="JOURNEY_COMPLETE payload">
    Identical to the [Track Status](./track-status) response.

    ```json theme={null}
    {
      "timestamp": "2026-03-31T08:02:45.111480334Z",
      "transaction_id": "ad277c38-ca13-49b0-befd-38343e221e6b",
      "event_type": "JOURNEY_COMPLETE",
      "event_status": "SUCCESS",
      "reference_id": "client-order-123",
      "event_data": [
        { "type": "KYC", "status": "VERIFIED", "data": {} }
      ]
    }
    ```
  </Accordion>

  <Accordion title="DATA payload">
    Identical to the [Fetch Data](./fetch-data) response.

    ```json theme={null}
    {
      "timestamp": "2024-06-23T10:30:00.000Z",
      "transaction_id": "txn_7f8a2b91c4d3e5f2",
      "event_type": "DATA",
      "event_status": "SUCCESS",
      "reference_id": "client-order-123",
      "data": [
        { "type": "KYC", "status": "VERIFIED", "data": { /* kyc data */ } }
      ]
    }
    ```
  </Accordion>
</AccordionGroup>

<Tip>
  Match webhook deliveries to your original request using `reference_id` (your
  correlation ID) or `transaction_id`. Acknowledge with a `2xx` promptly and do any
  heavy processing asynchronously so your handler stays fast.
</Tip>
