What Is a Dispute?
A dispute (also called a chargeback) occurs when a customer contacts their bank or card network to reverse a payment they made to you. The network then notifies us, and we create a dispute record against the original charge. Disputes are initiated entirely by the customer and their bank. You cannot prevent one from being opened. What you can control is whether you respond with evidence, and the quality of that evidence determines whether the dispute is resolved in your favour or against you.Financial Impact
Understanding what happens to your money at each stage is critical.When a dispute is created
The disputed amount is put under review, and nothing happens to it while the dispute stays under review. A flat dispute fee, however, is deducted from your balance at this point, as soon as the dispute record is created, regardless of how it is later resolved.When you win (won)
The dispute was resolved in your favour. The disputed funds remain in your account and the reversal does not proceed. The dispute fee already charged when the dispute was created is not refunded.
When you lose (lost)
The dispute was resolved against you. The disputed amount is returned to the customer and deducted from your balance at this point. The dispute fee is not charged again here, since it was already deducted when the dispute was created.
When a dispute is closed (closed)
The dispute was closed without a decisive won/lost outcome, typically because the customer withdrew the claim, or the network closed it for procedural reasons. The disputed funds are generally returned to you, but you should monitor your balance to confirm.
Dispute fees
A flat dispute fee may apply per the terms of your account agreement, deducted as soon as the dispute is created, whether it is later won or lost. It is not charged again at resolution and is not refunded on a win. Refer to your merchant agreement for the specific fee structure that applies to your account.Warning Disputes
Some payment networks issue a pre-dispute warning before a formal chargeback is filed. These appear in Bachs with the sameneeds_response status as a regular dispute.
A warning dispute gives you a window to resolve the issue with the customer directly (often by issuing a refund) before the chargeback becomes formal. If you resolve it in time, the network may close the dispute without proceeding to a formal chargeback.
You should treat warning disputes with the same urgency as regular disputes. The response_deadline_at field tells you how long you have.
Dispute Reason Codes
Thereason field on a dispute reflects the reason code the customer gave when filing. Common reasons include:
The reason code determines what evidence is most relevant to your response. See What Makes a Strong Response below.
Response Deadlines
Every dispute has aresponse_deadline_at timestamp. This is the hard deadline by which you must call Submit Dispute. Submitting after the deadline returns a 410 Gone error and your evidence will not be accepted.
Deadlines are set by the payment network and are typically 7–21 days from when the dispute is opened, though this varies. Build alerting around the response_deadline_at field. Do not rely on checking disputes manually.
The deadline can also move earlier after a dispute is created. If this happens, we will update the response_deadline_at field on the dispute record.
What Makes a Strong Response
The evidence you submit should directly address the reason for the dispute. A submission with no evidence, or evidence that does not speak to the stated reason, is unlikely to succeed. Forfraudulent disputes:
- Proof of delivery or service fulfilment
- IP address and device data from checkout (include in
notes) - Signed agreements or terms acceptance records
- Prior non-disputed charges from the same customer
product_not_received disputes:
- Delivery confirmation, tracking numbers, or access logs
- The date the product or service was provided (
service_date) - Communication with the customer confirming receipt
subscription_cancelled disputes:
- Your cancellation policy as it was presented to the customer at purchase (
cancellation_policy_disclosure) - Proof that the cancellation was not received or processed before the billing date
credit_not_processed disputes:
- Your refund policy (
refund_policy_disclosure) - Explanation of why a refund was not issued (
refund_refusal_explanation) - Any communication with the customer about the refund request
- The customer’s name and email (
customer_name,customer_email_address) - Their billing address (
billing_address) - A clear product or service description (
product_description)
When we have them on file,
customer_email_address, customer_name, and billing_address arrive already filled in from the customer record attached to the disputed charge. See Update Dispute Evidence. They’re ordinary editable evidence: review them and overwrite or clear any of them like any other field before you submit.customer_communication_attachment_id, cancellation_policy_attachment_id, refund_policy_attachment_id, or uncategorized_attachment_id.
How It Works
1
Dispute is created
We receive the dispute and create a record with status
needs_response.2
Owner notified
We email the account owner’s contact address, and emit a
dispute.created
webhook event.3
Retrieve dispute details
Call Get Dispute to review reason, amount,
and deadline.
4
Optionally upload supporting documents
Use Upload Dispute Document and
collect
document_id references.5
Save evidence draft
Send text and document references with Update Dispute
Evidence. You can update multiple
times before submit.
6
Submit final evidence
Call Submit Dispute to lock and submit
your evidence.
7
Track final outcome
Dispute moves to
under_review, then resolves to won, lost, or
closed. Check the outcome with Get Dispute.Dispute Statuses
Prerequisites
- A valid API key. See Authentication Overview.
- An endpoint subscribed to dispute.created and dispute.updated if you want to learn about a dispute as it happens rather than by polling List Disputes.
Learning about a dispute programmatically
Besides polling with Get Dispute, a dispute drivesdispute.created when it opens and dispute.updated on each status change, so you can react without polling.
Important constraints
- Evidence can only be saved or updated while
is_response_editableistrue. Once you call Submit Dispute,is_response_editablebecomesfalseand the evidence is locked. - Submitting after
response_deadline_atreturns a410 Goneerror. Monitor this field and set alerts. - The deadline can move earlier after a dispute is opened. Re-check
response_deadline_aton the dispute record rather than caching it. - Document uploads accept PDF, JPEG, PNG, and GIF files up to 10 MB each.

