Disputes
A dispute is a buyer asking their bank to reverse a payment. Kashu records each dispute against its payment, so you can see it, follow it and act on it in your own systems.
Find disputes
GET /v1/disputes lists disputes, newest first. Add payment to find the dispute on one payment. GET /v1/disputes/{id} reads one:
curl https://api.kashupay.com/v1/disputes/dp_... \
-H "Authorization: Bearer $KASHU_SECRET_KEY"
{
"id": "dp_...",
"object": "dispute",
"payment": "py_...",
"amount": 4999,
"currency": "USD",
"status": "needs_response",
"reason": "product_not_received",
"evidence_due_by": 1762473600,
"livemode": false,
"created": 1762473600
}
A payment has at most one dispute. A later dispute of the same payment moves the same record.
Read a dispute
statusis where the dispute stands.needs_responseandunder_revieware open,wonandlostare closed. The threewarning_statuses are the same stages for a warning that has not become a dispute.reasonis the buyer's reason, such asfraudulentorproduct_not_received.generalcovers the reasons that fit no other word.evidence_due_byis when evidence must reach the card network, in Unix seconds, or null.amountis null when the card network has not stated one yet.
A dispute never changes the payment's amounts. The payment shows disputed true.
Follow disputes by webhook
dispute.created arrives when a dispute is recorded, and dispute.updated each time it moves. Webhooks explains how to receive them.
What is not available yet
- Answering a dispute.
POST /v1/disputes/{id}/evidenceandPOST /v1/disputes/{id}/acceptexist so your code can call them, but both answer 403feature_unavailabletoday. - Making a dispute in test mode. Test mode has no way to dispute a payment yet.
For help with a dispute on a live payment, write to help@kashupay.com.