Skip to main content

Refund Payment

Use this to process refunds for payments made via one-time payment or AutoDebit. Both successful and failed refund attempts will trigger a notification through a webhook.

Process Flow

StepSenderReceiverProcess
1AcquirerAPI GatewayInitiate a refund request to API Gateway.
2API GatewayAcquirerAPI Gateway will respond with REFUND_PENDING while processing the request.
3API GatewayAcquirerThe final refund request will be parsed to Acquirer via webhook.


Request

POST /v1/bw/refund

refundIdStringMax length: 36Required
The unique external identifier (uuid v4) provided by the acquirer to PayNet when initiating a refund request.
checkoutIdStringMax length: 36Required
The similar checkoutId parsed during the first payment initiated.
paymentMethodStringMax length: 2Required
The paymentMethod selected during the first payment initiated.
amountStringMax length: 18Required
The intended amount to be refunded.
merchantReferenceIdStringMax length: 140Required
Refund reference to the recipient. To be shown to the user for the details of the refund.


Sample Request:

{
"refundId": "dd66946f-5834-49a1-9d51-89ccfbd77909",
"checkoutId": "b4e6c575-5393-4a1e-a231-269e9a3f8af3",
"paymentMethod": "01",
"amount": "10.00",
"merchantReferenceId": "ref20240925T132501"
}


Response

Data Object
endToEndIdStringMax length: 35Required
Unique message identification from RPP. This can be used to reconcile with RPP BackOffice or Reports.
refundStatusStringMax length: 35Required
The status will always be REFUND_PENDING while it’s processing.
End Data Object
messageStringMax length: 1024Required
Please refer to the list of reason codes in the appendix.


Sample Response:

{
"data": {
"endToEndId": "20240927M0000201861OBW00000001",
"refundStatus": "REFUND_PENDING"
},
"message": "OK"
}


Webhook : Update Refund Status

This webhook will notify you with the final status of the refund once the processing is complete.

refundIdStringMax length: 36Required
The unique external identifier (uuid v4) provided by the acquirer to PayNet when initiating a refund request.
checkoutIdStringMax length: 36Required
The similar checkoutId parsed during the first payment initiated.
endToEndIdStringMax length: 35Required
Unique message identification from RPP. This can be used to reconcile with RPP BackOffice or Reports.
paymentStatus Object
codeStringMax length: 4Required
Plese refer to the list of status codes in the appendix.
substateStringMax length: 35Required
The final refund status once it has processed. The potential substates are as below:

REFUND_PENDING - Refund is in progress.
REFUND_ACCEPTED - Refund sent to issuing bank for processing.
REFUND_REJECTED - Refund unable to process, refer to message field for the reasons.
REFUND_TIMEOUT - Refund timeout due to processing delay. Please verify the refund status in the next day report.
messageStringMax length: 1024Required
Please refer to the list of reason codes in the appendix.
End paymentStatus Object
issuerStringMax length: 100Required
Name of payer’s issuing bank.
paymentMethodStringMax length: 2Required
The paymentMethod selected during the first payment initiated.
amountStringMax length: 18Required
The amount requested for the refund.


Sample Request:

{
"refundId": "f36b4c31-44b2-40f2-820a-7fbd081cae9b",
"checkoutId": "b4e6c575-5393-4a1e-a231-269e9a3f8af3",
"endToEndId": "20240927M0000201861OBW00000001",
"paymentStatus": {
"code": "ACTC",
"substate": "REFUND_ACCEPTED",
"message": "U002"
},
"issuer": "Ambank",
"paymentMethod": "01",
"amount": "10.00"
}