Skip to main content
Money Out Operation — This webhook fires when funds are transferred from your SingaPay account to a beneficiary’s bank account.

Information

SingaPay sends a POST request to your configured disbursement_notif_url when a disbursement transaction is successfully processed or fails.
This webhook may share a callback URL with other event types. See Shared webhook endpoints for routing by event value.

Request Details

Headers

All signature-related headers (X-Signature, X-Timestamp, Authorization) are always included when your merchant account has API credentials configured. Extract the access token from the Authorization header and use it as-is in the string to sign. See How to Validate Signature below.

Body Parameters

string
required
Response code. See Appendix 01 — Response Codes. Example: SP000
string
required
Human-readable response message. Example: Successfully
string
required
Transaction type identifier. Always "disbursement" for bank transfer. Use this to distinguish from "ewallet-topup" and "qris-issuer" on the shared URL.
object
required
Response payload object.

Payload Examples



Security and responses

Return HTTP 200 promptly after validating the request. For retry behavior, see Webhook retry mechanism. Verify every webhook using Security and signature validation. Use your configured callback path when building StringToSign. Handle duplicate deliveries idempotently using stable identifiers from the payload (for example transaction_id or reff_no).

Disbursement-Specific Notes

Idempotency

Each reference_number can only be used once per account. If you retry with the same reference_number, you’ll receive the existing transaction status rather than creating a duplicate transfer.
Detecting Duplicate Webhooks

Timestamp Formats

Disbursement webhooks use two different timestamp formats. Don’t mix them up.
Converting millisecond timestamps

Balance Reconciliation

The balance_after field shows your account balance after each transaction. For failed transactions, both currency and value are null — no balance change occurred.
Balance Consistency Check

Appendix

01: Response Codes

02: Transaction Status