Money In Operation — This webhook fires when a customer completes a Virtual Account payment, transferring funds into your SingaPay account.
Information
POST request to your configured transaction_notif_url when a Virtual Account transaction is successfully processed.
This webhook may share a callback URL with other event types. See Shared webhook endpoints for routing by
event value.Request Details
Headers
The
Authorization token for VA webhooks is a randomly generated string — not a user access token. This is because the webhook is triggered by a bank payment notification (system event), not a user action. Extract it as-is from the header and use it in the string to sign. See How to Validate Signature below.Body Parameters
number
required
HTTP Status Code. Example:
200boolean
required
Indicates if the transaction was successful. Example:
truestring
required
Event type identifier. Always
"va-transaction" for this webhook.string
required
Event timestamp in format
"d M Y H:i:s". Example: "26 Dec 2025 13:35:45"object
required
Container for transaction and payment details.
Payload Example
Success
Security and responses
Return HTTP200 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).