Refunding a split payment
How do I refund a split payment?
Overview
The refunding process for split payments allows merchants to return a portion or the full amount of a split payment to the original payer, with the refund being shouldered by the recipients proportional to what they received.
How to Initiate a Refund
Refunds for split payments can be initiated either through the API or the dashboard.
- To initiate a refund via the API, follow the steps in the Refund API documentation.
- To initiate a refund via the dashboard, feel free to check out our Refund help center article.
Refunds apply to the entire payment. However, partial refunds can also be processed if you don't wish to refund the full amount.
Distribution of Refunds
There are two ways to distribute which account will shoulder the refund amounts:
1. Proportional (Default)
By default, the refunded amount is distributed proportionally based on the original split percentages or amounts allocated to each recipient. Fees will still apply during the refund process, and they will be split proportionally among the recipients, just as in the original payment process.
For example: If a recipient originally received 50% of the net amount, they will also be deducted 50% of the refunded amount.
Sample Computation
Description | Amount |
---|---|
Original Payment | PHP 100.00 |
Recipient A | PHP 48.75 |
Recipient B | PHP 48.75 |
Fee (GCash rate) | PHP 2.50 |
If a full refund of PHP 100.00 is issued, the amounts that each recipient would shoulder will be proportional:
- Recipient A: PHP 50.00
- Recipient B: PHP 50.00
If a partial refund of PHP 50.00 is issued, the following amounts apply:
- Recipient A: PHP 24.38
- Recipient B: PHP 24.38
To see more examples, refer to our sample payment splitting computations page.
2. Custom (Using thesplit_refund
attribute)
split_refund
attribute)When the split_refund attribute is used, merchants can manually specify which party will shoulder the refund—either the parent merchant or one of its child merchants. This overrides the default proportional distribution and allows full control over how refund amounts are allocated.
In the snippet below, the full refund amount of PHP 100.00 is shoulder by the child merchant: org_child1xxxxxxxxxxxxxxxxxx
{
"data": {
"attributes": {
"amount": 10000,
"payment_id": "pay_xxxxxxxxxxxxxx",
"reason": "requested_by_customer",
"notes": "Out of delivery zone.",
"split_refund": {
"refund_sources": [
{
"merchant_id": "org_child1xxxxxxxxxxxxxxxxxx",
"split_type": "fixed",
"value": 10000
}
]
}
}
}
}
A customized refund split can also be configured across multiple merchants. In the example below, a full refund amount of PHP 100.00 is distributed as follows:
- the Child Merchant 1
org_child1xxxxxxxxxxxxxxxxxx
covers PHP 50.00 - the parent merchant
org_parent1xxxxxxxxxxxxxxxxxx
covers PHP 10.00 - and Child Merchant 2
org_child2xxxxxxxxxxxxxxxxxx
covers PHP 40.00.0
{
"data": {
"attributes": {
"amount": 10000,
"payment_id": "pay_xxxxxxxxxxxxxx",
"reason": "requested_by_customer",
"notes": "Out of delivery zone.",
"split_refund": {
"refund_sources": [
{
"merchant_id": "org_child1xxxxxxxxxxxxxxxxxx",
"split_type": "fixed",
"value": 5000
},
{
"merchant_id": "org_parent1xxxxxxxxxxxxxxxxxx",
"split_type": "fixed",
"value": 1000
},
{
"merchant_id": "org_child2xxxxxxxxxxxxxxxxxx",
"split_type": "fixed",
"value": 4000
}
]
}
}
}
}
Updated 5 days ago