PageSourceSearch

https://documentation-v2.netlify.app/docs/component---src-template…manage-disputes-mdx-a448feb4fceceb046547.js

js documentation-v2.netlify.app collected 2026-10-03 11:10:13 UTC 22,634 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkpaystack_documentation=self.webpackChunkpaystack_documentation||[]).push([[4622],{86551:function(e,t,a){a.r(t),a.d(t,{default:function(){return _}});var n=a(11151),r=a(67294);function l(e){const t=Object.assign({p:"p",span:"span",h2:"h2",a:"a",strong:"strong",code:"code",h3:"h3",h4:"h4"},(0,n.ah)(),e.components),{OrderedList:a,ApiLink:l,Callout:s,Link:i,Tabs:c}=t;return l||o("ApiLink",!0),s||o("Callout",!0),i||o("Link",!0),a||o("OrderedList",!0),c||o("Tabs",!0),r.createElement(r.Fragment,null,r.createElement("header",null,r.createElement("h1",null,"Manage Disputes"),r.createElement("p",null,"Automate the process of handling and responding to disputes with our API")),"\n",r.createElement(t.p,null,"When using the Disputes API, you need to:"),"\n",r.createElement(a,{items:[r.createElement(t.span,null,"Retrieve all pending disputes. These are disputes that have been lodged against you but have not yet been handled."),r.createElement(t.span,null,"Retrieve applicable receipts and other documents that you can use to defend against the dispute."),r.createElement(t.span,null,"Upload all relevant receipts and documents for the dispute"),r.createElement(t.span,null,"Resolve the dispute with the applicable resolution")]}),"\n",r.createElement(t.p,null,"For a list of all the endpoints and parameters, see the ",r.createElement(l,{title:"Disputes",path:"/dispute"})," endpoints."),"\n",r.createElement(t.h2,{id:"before-you-begin",style:{position:"relative"}},r.createElement(t.a,{href:"#before-you-begin","aria-label":"before you begin permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Before you begin"),"\n",r.createElement(t.p,null,"Before starting your Disputes API integration, make sure that you:"),"\n",r.createElement(a,{items:[r.createElement(t.span,null,"Understand the disputes process."),r.createElement(t.span,null,"Know the scenarios when Paystack automatically handles disputes on your behalf."),r.createElement(t.span,null,"Setup a receipts repository on your server. For more information about acceptable receipts, please see ",r.createElement(t.a,{href:"https://support.paystack.com/hc/en-us/articles/360012946200-How-to-resolve-chargebacks",target:"_blank",rel:"noopener noreferrer"},"here"),"."),r.createElement(t.span,null,"Learn about the type of disputes we have."),r.createElement(t.span,null,"Have a copy of your ",r.createElement(t.strong,null,"Secret API Key"),", as this will be used for API calls to the endpoints.")]}),"\n",r.createElement(t.h2,{id:"understanding-the-disputes-process",style:{position:"relative"}},r.createElement(t.a,{href:"#understanding-the-disputes-process","aria-label":"understanding the disputes process permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Understanding the disputes process"),"\n",r.createElement(t.p,null,"A dispute occurs when a cardholder contacts their card issuing bank and demands to have their money returned. Disputes are a feature of the card networks intended to protect cardholders from fraudulent activity."),"\n",r.createElement(t.p,null,"Disputes may arise for a number of reasons including:"),"\n",r.createElement(a,{items:[r.createElement(t.span,null,"Not as described, where the cardholder claims to have never received the goods (debited but no value), or the goods were materially different from their expectations."),r.createElement(t.span,null,"Not recognized, where the cardholder has no recollection of what the charge in their bank statement relates to."),r.createElement(t.span,null,"Fraud, where the cardholder claims they did not authorize the purchase (e.g. their card information was stolen and used fraudulently)."),r.createElement(t.span,null,"Admin error, such as duplicate billing, incorrect amount billed, or a refund which was promised but never received.")]}),"\n",r.createElement(t.h2,{id:"scenarios-when-paystack-auto-handles-disputes-on-your-behalf",style:{position:"relative"}}
1,r.createElement(t.a,{href:"#scenarios-when-paystack-auto-handles-disputes-on-your-behalf","aria-label":"scenarios when paystack auto handles disputes on your behalf permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Scenarios when Paystack auto handles disputes on your behalf"),"\n",r.createElement(s,{type:"warning",title:"Responding to a chargeback"},r.createElement(t.p,null,"All disputes raised against your integration/business should be handled within 16 hours (please ",r.createElement("a",{href:"https://support.paystack.com/hc/en-us/articles/360014290660-New-Chargeback-Deadlines-for-Nigerian-Businesses",target:"_blank",rel:"noopener noreferrer"},"see this article")," for more information)")),"\n",r.createElement(t.p,null,"In a case where this time elapses, we will automatically accept these on your behalf, and refunds to the affected customers are triggered from your Paystack Balance."),"\n",r.createElement(t.h2,{id:"setting-up-a-receipts-repository-on-your-server",style:{position:"relative"}},r.createElement(t.a,{href:"#setting-up-a-receipts-repository-on-your-server","aria-label":"setting up a receipts repository on your server permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Setting up a receipts repository on your server"),"\n",r.createElement(t.p,null,"On your application backend, you can have a folder that contains internally generated receipts (preferably in ",r.createElement(t.code,null,".pdf")," format). It is our recommendation that these receipts can be generated either on receipt of the ",r.createElement(t.code,null,"charge.success")," webhook notification or on verifying the success of the transaction using ",r.createElement(t.code,null,"GET /transaction/{reference}"),"."),"\n",r.createElement(t.p,null,"These receipts should be saved (ideally) with the transaction reference as the name of the file.\nFor example, if you have a transaction with reference ",r.createElement(t.code,null,"my-demo-transaction-xxx"),", then the name of the file for the generated receipt would be ",r.createElement(t.code,null,"my-demo-transaction-xxx.pdf"),". You will understand how this factors in the automated process later on."),"\n",r.createElement(t.h2,{id:"types-of-disputes",style:{position:"relative"}},r.createElement(t.a,{href:"#types-of-disputes","aria-label":"types of disputes permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Types of disputes"),"\n",r.createElement(t.p,null,"There are two types of disputes:"),"\n",r.createElement(a,{items:[r.createElement(t.span,null,"Chargebacks"),r.createElement(t.span,null,"Fraud Claims")]}),"\n",r.createElement(t.p,null,"Chargebacks usually occur when the customer paid for a product or service and did not get value for that service but had his bank account debited by you, the merchant, for that service."),"\n",r.createElement(t.p,null,"Fraud happens when an authorized transaction is made using a customer's payment information by a bad actor. Fraud is a major reason why a customer can raise a dispute at their bank."),"\n",r.createElement(t.h2,{id:"automating-the-disputes-process",
1style:{position:"relative"}},r.createElement(t.a,{href:"#automating-the-disputes-process","aria-label":"automating the disputes process permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Automating the disputes process"),"\n",r.createElement(t.p,null,"You may decide to create a background task to run this at an interval, or at a certain time every day, or you may just have a button to run this at any time you choose."),"\n",r.createElement(t.h3,{id:"step-1-get-pending-disputes",style:{position:"relative"}},r.createElement(t.a,{href:"#step-1-get-pending-disputes","aria-label":"step 1 get pending disputes permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Step 1: Get pending disputes"),"\n",r.createElement(t.p,null,"You can do this by calling our ",r.createElement(l,{title:"List Disputes",path:"/dispute#list"})," endpoint. There are 3 major parameters for this:"),"\n",r.createElement("table",null,r.createElement("thead",null,r.createElement("tr",null,r.createElement("th",
1null,"Parameter"),r.createElement("th",null,"Description"))),r.createElement("tbody",null,r.createElement("tr",null,r.createElement("td",null,r.createElement(t.code,null,"from")),r.createElement("td",null,"The datetime from which to start searching for disputes. The recommended format is ",r.createElement(t.code,null,"yyyy-MM-ddTHH:mm:ss.SSS[Z]"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(t.code,null,"to")),r.createElement("td",null,"The datetime to which to end searching for disputes. The recommended format is ",r.createElement(t.code,null,"yyyy-MM-ddTHH:mm:ss.SSS[Z]"))),r.createElement("tr",null,r.createElement("td",null,r.createElement(t.code,null,"status")),r.createElement("td",null,"The status of the dispute. For this process, the status should be ",r.createElement(t.code,null,"awaiting-merchant-feedback"))))),"\n",r.createElement(s,{type:"info",title:"Tip"},r.createElement(t.p,null,"For datetime search, let the start date be at midnight of the date in question (eg. ",r.createElement("code",null,"2020-01-13T00:00:00.000Z"),"), and let the end date be a second before midnight of the following day (eg ",r.createElement("code",null,"2020-01-13T23:59:59.999Z"),").")),"\n",r.createElement(t.h3,{id:"step-2-upload-dispute-evidence",style:{position:"relative"}},r.createElement(t.a,{href:"#step-2-upload-dispute-evidence","aria-label":"step 2 upload dispute evidence permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Step 2: Upload Dispute Evidence"),"\n",r.createElement(t.p,null,"Remember when we suggested that you save your receipts with the reference number of the transaction that generated the receipt ",r.createElement(i,{to:"#setting-up-a-receipts-repository-on-your-server"},"over here"),"? Now we get to put that to use."),"\n",r.createElement(t.p,null,"Taking each dispute from the array of disputes obtained from the previous step, we will need the dispute ",r.createElement(t.code,null,"id")," and the transaction reference. The dispute id will be used to upload the receipt, while the transaction reference will be used to get the receipt from the repository."),"\n",r.createElement(t.h4,{id:"where-do-i-upload-this-receipt-to",style:{position:"relative"}},r.createElement(t.a,{href:"#where-do-i-upload-this-receipt-to","aria-label":"where do i upload this receipt to permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Where do I upload this receipt to?"),"\n",r.createElement(t.p,null,"You will need to generate a URL that will be used to upload the receipt. You can do this by calling our ",r.createElement(l,{title:"Get Upload URL",path:"/dispute#upload-url"})," endpoint."),"\n",r.createElement(t.p,null,"This returns a ",r.createElement(t.code,null,"signedUrl")," where the receipt can be uploaded to and the ",r.createElement(t.code,null,"filename")," that should be used to identify the upload when resolving the dispute."),"\n",r.createElement(s,{type:"warning",title:"URL Validity"},r.createElement(t.p,null,"Please note that the ",r.createElement("code",null,"signedUrl")," is only valid for 30 minutes.")),"\n",r.createElement(t.p,null,"Once this URL has been obtained, you can then upload the corresponding receipt as evidence that the customer was given value for the charge for which the dispute was raised."),"\n",r.createElement(s,{type:"info",title:"Acceptable Format"},r.createElement(t.p,null,"Acceptable document formats are ",r.createElement("code",null,".jpg (image/jpg)"),", ",r.createElement("code",null,".jpeg (image/jpeg)")," and ",r.createElement("code",null,".pdf (application/pdf)"),".")),"\n",r.createElement(t.p,null,"To upload the receipt, make a ",r.createElement(t.code,null,"PUT")," request with the ",r.createElement(t.code,null,"signedUrl")," as illustrated with the sample code below."),"\n",r.createElement(c,{links:{js:"Node"},filepath:"/payments/disputes/upload-url.js"}),"\n",r.createElement(t.p,null,"If the upload is successful, there will be an ",r.createElement(t.strong,null,"empty string")," in the response, so it will be a good idea to see the ",r.createElement(t.strong,null,"status code")," returned."),"\n",r.createElement(t.h4,{id:"what-if-the-dispute-is-a-fraud-claim",style:{position:"relative"}}
1,r.createElement(t.a,{href:"#what-if-the-dispute-is-a-fraud-claim","aria-label":"what if the dispute is a fraud claim permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"What if the dispute is a fraud claim?"),"\n",r.createElement(t.p,null,"You will also be required to provide evidence about the product or service rendered to your customer, as this will be used while investigating the claim.\nTo do this, you will call our ",r.createElement(l,{title:"Add Evidence",path:"/dispute#evidence"})," endpoint."),"\n",r.createElement(t.h3,{id:"step-3-resolve-the-dispute",style:{position:"relative"}},r.createElement(t.a,{href:"#step-3-resolve-the-dispute","aria-label":"step 3 resolve the dispute permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Step 3: Resolve the dispute"),"\n",r.createElement(t.p,null,"This is where you respond to disputes, either accepting or declining the dispute. To accept a dispute, you send a resolution value of ",r.createElement(t.code,null,"merchant-accepted")," while to decline, you send a resolution value of ",r.createElement(t.code,null,"declined"),". If accepting a dispute, you can set the amount (either full or partial) you want to refund the customer with. To reject the dispute, the filename of the upload (done in the previous step) will be required in the request."),"\n",r.createElement(t.p,null,"You can resolve disputes by calling our ",r.createElement(l,{title:"Resolve Dispute",path:"/dispute#resolve"})," endpoint. Kindly note the following:"),"\n",r.createElement(a,{items:[r.createElement(t.span,null,"The ",r.createElement(t.code,null,"uploaded_filename")," property is the same value we got when creating the upload URL for the transaction receipt."),r.createElement(t.span,null,"The ",r.createElement(t.code,null,"evidence")," property is the id obtained when we created an evidence in the previous step. If the dispute is not a fraud claim, you can leave this as an empty string. "),r.createElement(t.span,null,"The ",r.createElement(t.code,null,"amount")," should be in the subunit of the ",r.createElement(t.a,{href:"/api#supported-currency"},"supported currency"),".")]}),"\n",r.createElement(t.h3,{id:"handle-webhook",style:{position:"relative"}},r.createElement(t.a,{href:"#handle-webhook","aria-label":"handle webhook permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Handle Webhook"),"\n",r.createElement(t.p,null,"Paystack sends a ",r.createElement(t.code,null,"charge.dispute.create")," event when a dispute is logged on your business. We'll also send a ",r.createElement(t.code,null,"charge.dispute.remind")," event every ",r.createElement("strong",null,"4 hours")," for chargebacks that are not resolved.\nThe ",r.createElement(t.code,null,"charge.dispute.resolve")," event is sent once the dispute is resolved. Learn more about ",r.createElement(i,{to:"/payments/webhooks"},"Webhooks"),"."))}var s=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,n.ah)(),e.components);return t?r.createElement(t,e,r.createElement(l,e)):l(e)};function o(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var i=a(84854),c=a(58487),h=a(75381),d=a(27674),u=a(67115),p=a(54292),m=a(76520),f=a(79707),v=a(2138),g=a(53733),E=a(70493),y=a(71045),b=a(26983),w=a(25298),S=a(33619),k=a(91556),H=a(18554),T=a(19496),C=a(75630),L=a(41408);const M=e=>{let{data:{mdx:t},children:a}=e;const{tableOfContents:l,fields:s,frontmatter:o}=t,M={Link:i.Link,CardContainer:h.Z,ApiLink:d.Z,Card:p.Z,DemoCard:m.Z,ExternalLink:u.Z,TestCard:f.Z,TestAccount:v.Z,TestMoMo:g.Z,CardLinks:E.Z,RepoCard:y.Z,UnorderedList:b.Z,OrderedList:w.Z,Callout:S.Z,CommunityLibrary:k.Z,Tabs:H.Z,TabsMulti:T.Z,RequestResponse:C.Z,pre:e=>r.createElement(L.E,{props:e})};return r.createElement("div",null,r.createElement(c.Z,{title:o.title},l,r.createElement(n.Zo,{components:M},a),s))};function _(e){return r.createElement(M,e,r.createElement(s,e))}}}]);
2//# sourceMappingURL=component---src-templates-doc-template-js-content-file-path-content-doc-payments-manage-disputes-mdx-a448feb4fceceb046547.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.