Handling Disputes

A chargeback is a reversal of a payment made to a merchant, back to the customer's bank account. The reversal is done by the customer’s bank, at the request of the customer and it is used as a form of consumer protection to secure the customer's interest in wrongful transactions. This means a customer has a right to file a chargeback for a transaction if there is a valid reason to do so.

Chargebacks are different from refunds. In the case of a refund, the customer reaches out to the business to ask for a refund, which may or may not be honored depending on the business' policy. However, for a chargeback, the customer contacts their bank directly to forcibly reverse the transaction.

How are chargebacks filed?

To file a chargeback, the customer simply has to reach out to their bank and highlight the transaction(s) in question and their bank will begin the process. When the customer’s bank receives the chargeback claim, they escalate this to the merchant or the merchant's bank, who then informs the merchant. The merchant has the opportunity to respond to the chargeback either by accepting it or declining it with sufficient evidence that proves value was given to the customer for that transaction.

How do I respond to chargebacks?

You can handle disputes via the APIs, integrating into your applications as you wish. Usually, the first stage would be to List Disputes based on some set parameters (you can choose to list all disputes and show status if you wish). This shows you a list of (possibly filtered) disputes lodged against your Paystack integration. From your list, you can click on any one of the disputes and use the Dispute Id to Get Dispute.

To respond to this selected dispute, you can use the Resolve Dispute endpoint to either accept or decline a dispute. If accepting a dispute, you can set the amount (full or partial) you want to refund the customer with. To reject the dispute, you will be required to upload a document to prove that value was given to this customer. This can be done by calling the Get Upload URL endpoint to get an upload endpoint where you can send your files to, using a PUT request.