Skip to main content
Money In Operation — This webhook fires when a customer completes a payment via a Payment Link, transferring funds into your SingaPay account.

Information

MethodPathFormatAuthentication
POSThttps://your-webhook-url/callbackjsonHMAC SHA512 Signature
SingaPay sends a POST request to your configured transaction_notif_url when a Payment Link transaction is successfully completed. For optional view and expiry notifications (when someone opens a link), see Payment Link Inquiry.
This webhook may share a callback URL with other event types. See Shared webhook endpoints for routing by event value.

Request Details

Headers

FieldValueTypeMandatoryDescription
Content-Typeapplication/jsonAlphabeticYesSpecifies JSON format for the request body
X-PARTNER-IDAlphanumericYesYour API Key from the merchant dashboard. Example: b3ed7d4b-a96c-6c08-b3c7-12c3124242d9

Body Parameters

status
number
required
HTTP Status Code. Example: 200
success
boolean
required
true for 2xx responses, false for 4xx–5xx.
data
object
required
Container for transaction, customer, and payment details.

Payload Examples

{
    "status": 200,
    "success": true,
    "data": {
        "transaction": {
            "reff_no": "18917720251110094037705",
            "type": "pl",
            "status": "paid",
            "amount": {
                "value": "10000.00",
                "currency": "IDR"
            },
            "tip": null,
            "post_timestamp": "10 Nov 2025 09:46:38",
            "processed_timestamp": "10 Nov 2025 09:46:38"
        },
        "customer": {
            "id": null,
            "name": "Mohammad Zulkifli Katili",
            "email": "mohzulkilfikatili@gmail.com",
            "phone": "082291501085"
        },
        "payment": {
            "method": "payment_link",
            "additional_info": {
                "payment_link": {
                    "id": 189,
                    "reff_no": "PL20251105160923690b1443a67e9",
                    "title": "tes",
                    "payment_date": "2025-11-05T09:09:49.000000Z",
                    "payment_url": "https://sandbox-paymentlink.singapay.id/b2b/PL20251105160923690b1443a67e9",
                    "status": "open",
                    "required_customer_detail": true,
                    "max_usage": 1000,
                    "current_usage": 4,
                    "expired_at": null,
                    "total_amount": "10000.00",
                    "account_id": 35,
                    "created_at": "2025-11-05T09:09:49.000000Z",
                    "updated_at": "2025-11-10T02:46:38.000000Z"
                }
            }
        }
    }
}

Transaction Status Codes

StatusDescription
paidPayment completed successfully
pendingPayment is pending
expiredPayment link has expired
failedPayment has failed

Event Description

This webhook fires when a payment is successfully completed through a payment link. The payload covers:

Transaction Details

Reference number, type, status, amount, and timestamps.

Customer Info

Name, email, and phone number of the paying customer.

Payment Link Metadata

Usage count, expiry, status, URL, and creation timestamps.

Payment Method

Method used (payment_link) and all associated additional info.


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).