Cancel or refund a payin
How to cancel or refund a payin via API or Reporting Components
Payins can be canceled the same day it was processed and before the daily cutoff. After the cutoff, the payin can be partially or fully refunded.
The payin can be canceled or refunded via the void or refund endpoint in the API or within the reporting components on the Payin Details Component with the "Refund" button. Rainforest will handle the logic on if the payin is eligible for a void or refund.
Cancel a payin
A payin can be canceled, also known as voided, when the payin status is Processing
and before the daily cutoff defined by the payment method type and explained in the deposit timing for payments guide.
PAYIN TYPE | DAILY CUTOFF |
---|---|
Card | 11:00 PM ET |
ACH | 9:00 PM ET |
Canceling a payin will void the full amount of the payin and the fee applied at the time of processing. There is no additional fee for canceling a payin.
In the refund modal, the amount of the payin cannot be updated because a payin can only be canceled in full.
The payin status will be Canceled
and a payin.canceled
webhook will be triggered.
Refund a payin
A payin can be partially or fully refunded after the cutoff time for canceling. Refunding a payin will incur a fee if defined on the merchant's billing profile for each payment method type, card or ACH.
Refundable amount and nonrefundable reasons
In the refund modal, the amount of the refund can be updated to be less than or equal to the refundable amount. The amount will default to the full amount eligible to be refunded and can be less than the full amount of the payin if there are existing refunds, chargebacks, or an ACH return.
Listen to the refund webhooks for the result of the refund.
If the refund cannot be funded, then the refund modal will display an error message with an explanation.
The refundable amount and the non-refundable reason are available via the get payin endpoint in the API. If the refundable amount is $0, then there will be a non-refundable reason to explain why the payin is not eligible for a refund.
Nonrefundable reasons
Reason Code | Description |
---|---|
VOIDED | The payin is already voided and the payin status is Canceled . |
FAILED | The payin failed to process and cannot be voided or refunded. The payin status is Failed . |
FULLY_REFUNDED | The payin is fully refunded. |
HAS_CHARGEBACKS | The payin has a chargeback or multiple chargebacks that sum to the full amount. |
HAS_ACH_RETURN | The payin was returned and has an associated ACH return. |
IN_ACH_RETURN_WINDOW | The payin was processed with an ACH payment method and is within the T+4 ACH return window. See the refunds on ACH payins guide for details. |
IN_SETTLEMENT_WINDOW | The payin is in the process of settling and moving the money and is not eligible for a refund. This time period can vary and usually lasts between 10 to 30 minutes after the daily cutoffs for canceling a payin. |
Refund metadata
If the payin is refunded, then the metadata defined on the payin will be stored on the associated refund. Additional metadata can be included in the void or refund request. The metadata provided in the request will be merged with the metadata stored on the payin by the top-level key. If the same top-level key is passed in this request, it will overwrite the original value from the payin metadata.
For example, if the payin metadata includes:
{
"k1": "A",
"k2": {
"k3": "B"
}
}
And the void or refund request metadata is:
{
"k2": "C",
"k4": "D"
}
Then the resulting merged metadata would be:
{
"k1": "A",
"k2": "C",
"k4": "D"
}
Updated about 2 months ago