Creating Refund for Multi-merchant is done on 2 steps
Multi-merchants can create refunds on behalf of a sub-merchant
- Multi-merchant refunds are made from the respective sub-merchant accounts (Sub-merchant IBAN will identify the sub-vendor account from which the refund must be made)
- Multi-merchant refunds are possible only if there is sufficient 'Balance in Hand' in the sub-merchant's account
- If the balance is not sufficient in the Sub-merchant's UPay account, the Sub-merchant will have to top up their balance to process the refunds successfully
- The top up amount will be used for refund purposes only, and the remaining amount, if any, will be returned to the account within the next Deposit cycle.
- The refund will automatically reach your customer's account within 1 working day for K-NET transactions and up to 10 working days for Credit Card, Apple Pay, Samsung Pay, Google Pay, and all other payment methods
Step 1:
Create a single refund
Step 2:
If isMultiVendorRefund
is true, call multivendorrefund and pass the refund payload that was received in the single refund response
The request is a POST request with the following parameters:
Input Parameter | Type | Length | Description |
---|---|---|---|
orderId | string, mandatory | 255 | Pass order ID received in Create Single Refund API. Single refund request must be created and sent. |
refundPayload | array, mandatory | ||
refundPayload.refundRequestId | string, mandatory | 255 | Pass refund request ID received in Create Single Refund API. |
refundPayload.ibanNumber | string, mandatory | 255 | Pass Sub-merchant IBAN number received in Create Single Refund API. |
refundPayload.totalPaid | string, mandatory | 255 | Pass total paid which is received in Create Single Refund API. |
refundPayload.refundedAmount | float, mandatory | 10,2 | Pass refunded amount received in Create Single Refund API. |
refundPayload.remainingLimit | float, mandatory | 10,2 | Pass the remaining amount received in Create Single Refund API. |
refundPayload.amountToRefund | float, mandatory | 10,2 | Pass how much amount you want refund to the merchant |
refundPayload.merchantType | string, mandatory | 255 | Pass merchant type received in Create Single Refund API. |
receiptId | string, optional | 255 | You can pass the receipt ID here for your reference |
customerFirstName | string, optional | 255 | Pass customer first name |
customerEmail | string, optional | 255 | Pass customer email address |
customerMobileNumber | string, optional | 255 | Pass customer mobile number |
reference | string, optional | 255 | You can pass the reference here |
notifyUrl | string, optional | 255 | You will get webhook data on this URL |
Request Model
{
"orderId": "ME3OdxVO6m20221010125525514466916880191941658236257649d20fa014b0",
"refundPayload": [
{
"refundRequestId": "WEVsTGo0ZTlOMg==",
"ibanNumber": "KW91KFHO0000000000051010173254",
"totalPaid": "10.000",
"refundedAmount": 0,
"remainingLimit": 10,
"amountToRefund": 1,
"merchantType": "vendor"
},
{
"refundRequestId": "RVc3OFhCRFoxSg==",
"ibanNumber": "KW31NBOK0000000000002010177457",
"totalPaid": "10.000",
"refundedAmount": 0,
"remainingLimit": 10,
"amountToRefund": 1,
"merchantType": "vendor"
}
],
"receiptId": "NHDBC55214",
"customerFirstName": "Jhon Smith",
"customerEmail": "[email protected]",
"customerMobileNumber": "+96512345678",
"reference": "HCNHD1425KSM",
"notifyUrl": "https://upayments.com"
}
Response Model
{
"status": true,
"message": "success",
"data": {
"responseData": {
"generated": [
{
"generatedInvoiceId": "bHo0SmxubGE2dg==",
"amount": 1,
"orderId": "k4eJmnNR8pME3OdxVO6m20221010125525514466916880191941658236257649d20fa014b0HGHHDwCEVkIzdHmYmvbE1zg3SEytjmWS",
"refundOrderId": "HGHHDwCEVkIzdHmYmvbE1zg3SEytjmWS",
"refundArn": "20230613132906948529208806612"
},
{
"generatedInvoiceId": "eUtZUjBNOWFxOQ==",
"amount": 1,
"orderId": "k4eJmnNR8pk4eJmnNR8pME3OdxVO6m20221010125525514466916880191941658236257649d20fa014b0HGHHDwCEVkIzdHmYmvbE1zg3SEytjmWSBUxEwUOEGGrGEyBs18p1HfX4LY4MGBvc",
"refundOrderId": "BUxEwUOEGGrGEyBs18p1HfX4LY4MGBvc",
"refundArn": "20230613132906948529208806612"
}
],
"dataTempered": [],
"refundIssue": [],
"insufficientBalance": []
}
}
}
Data flow diagram for Multi-merchant refunds