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

# Overview

> Receive real-time notifications for transaction and account events via webhooks.

Webhooks allow Singapay to push real-time notifications to your server whenever an event occurs — such as a transaction status change, disbursement completion, or product expiration. Instead of polling the API, your endpoint receives an HTTP `POST` request the moment something happens.

## How it works

When an event is triggered, Singapay sends a `POST` request to the webhook URL you have configured in your merchant dashboard. Your server must respond with HTTP `200 OK` to acknowledge receipt.

## Retry mechanism

If your endpoint does not return HTTP `200 OK`, SingaPay automatically retries delivery. See [Webhook retry mechanism](/api-reference/webhooks/retry-mechanism) for status-specific rules, intervals, and failure notifications.

## Webhook categories

Webhooks are grouped by event type:

**Money In**

* Virtual Account Transaction
* QRIS Acquirer Transaction
* Payment Link Transaction
* E-Wallet Native Transaction
* Subscription Cycle

**Money Out**

* Disbursement Transaction
* E-Wallet Top Up Transaction
* QRIS Issuer Transaction

**Optional**

* Payment Link Inquiry
* Product Expiration
* Transaction Money-In Expiration

## Best practices

* Always validate the webhook payload before processing.
* Return `200 OK` as quickly as possible — offload heavy processing to a background job.
* Handle duplicate deliveries idempotently, since retries may deliver the same event more than once.
* Log all incoming webhook payloads for debugging and reconciliation.
