Issue Refunds

 Another operational flow you can expect to handle is the issue refund flow. With the refunds endpoint, it's possible to perform partial refunds or full refunds.
Note
WePay and platform fees are refunded only in full refunds; if a partial refund is issued and your platform has not explicitly opted to refund platform fees, then the amount sent in the refund call will come from the merchant.

In order to issue a refund against a Payment, the Payment must:

  • Have a status of completed
  • Not already be fully refunded or disputed
  • Be less than 60 days old (unless your platform has a custom refund limit; in that case, use that number in this statement)
Additionally, the refund amount must be 100 or greater.

If you've subscribed to refund notifications, we will send a notification to your platform when a refund occurs.

When a refund occurs, you'll need to make sure you have a few things handy:

  • Payment ID
  • Refund Reason
  • Amount (could be a partial of the whole transaction [must be greater than $1.00], up to the whole transaction value itself)
  • Fee amount to return
  • Currency
Note

Exchange rates come into play when a Payment using a card from a different currency than the merchant's currency (i.e. a card in the UK paying a merchant in the United States) is refunded. At the time of initial payment, the exchange rate at that time is applied. When a Refund is issued, the exchange rate might be different and that exchange rate will be applied to the Refund. As such, the refunded amount that the payer receives back may be greater or less than the initial amount paid.

Create A Refund

Create a refund by sending a POST /refunds request, with a Unique-Key, similar to the one below:
Copy
Copied
{
  "payment_id": "00000000-0000-0000-0000-000006fcd875",
  "refund_reason": "delayed shipping",
  "amounts": {
	"total_amount": 100,
	"currency": "USD",
	"fee_refund_amount": 0
  }
}

Create A Partial Refund

Create a partial refund of the net and all or some of the platform fees by sending a POST /refunds request, with a Unique-Key, similar to the one below:
Copy
Copied
{
  "payment_id": "00000000-0000-0000-0000-000006fcd875",
  "refund_reason": "delayed shipping",
  "amounts": {
	"total_amount": 100,
	"currency": "USD",
	"fee_refund_amount": 50
  }
}

As a note, if your Merchant's account is below $0, we will attempt to execute a recovery to bring the account back up to $0. You'll receive a notification if we execute a Recovery.

Note

It is the merchant's responsibility to post their refund policy. We recommend that your platform provides a method for merchants to post their refund policy through your UI.