Dispute Lifecycle
Dispute Creation
A dispute (also known as chargeback) is created when a cardholder contacts their card issuer to question a payment. The card issuer opens a chargeback and returns the questioned funds to the cardholder. JustiFi is notified of the chargeback, creates a dispute associated with the payment and pulls the payment funds (and a dispute fee) back from the merchant. As soon as JustiFi has created the dispute:
- Notification: You receive a
payment.dispute.createdwebhook event - Timeline: You have 7-10 business days to respond (varies by card network)
Response Phase
Building Your Response
During the response phase, you can:
- Upload Evidence: Add supporting documents via the create dispute evidence API or via Dispute Management web component
- Update Response Fields: Fill in detailed information about the transaction
Response Fields
Provide comprehensive information across these categories:
Customer Information
customer_name- Full customer namecustomer_email_address- Customer emailcustomer_billing_address- Billing addresscustomer_purchase_ip_address- IP address at purchase time
Transaction Details
product_description- Detailed product/service descriptionservice_date- Date service was providedduplicate_charge_original_payment_id- Reference for duplicate chargesduplicate_charge_explanation- Explanation for duplicate charges
Shipping Information
shipping_address- Delivery addressshipping_carrier- Shipping companyshipping_date- Ship dateshipping_tracking_number- Tracking number
Policy Information
refund_policy_disclosure- Refund policy termscancellation_policy_disclosure- Cancellation policy termsrefund_refusal_explanation- Why refund was refusedcancellation_rebuttal- Response to cancellation claims
Additional Context
additional_statement- Free-form additional information
Evidence Management
Evidence Categories
| Category | Best Used For |
|---|---|
receipt | Purchase confirmations, invoices |
shipping_documentation | Delivery proof, tracking info |
customer_communication | Email exchanges, support tickets |
customer_signature | Signed delivery receipts |
refund_policy | Terms of service, policies |
cancellation_policy | Cancellation terms |
service_documentation | Proof of service delivery |
duplicate_charge_documentation | Duplicate charge evidence |
activity_log | System logs, usage data |
uncategorized_file | Other supporting documents |
File Requirements
- Supported formats: PDF, JPG, JPEG, PNG, ZIP
- Validation: File extension must match MIME type
Submission and Review
Forfeiture Option
If you choose not to contest the dispute either use the submit dispute response API with the following body:
{
"forfeit": true
}
Or instead forfeit the dispute via Dispute Management web component.
This immediately transitions the dispute to lost status.
Resolution Phase
Possible Outcomes
Won (won status)
- Funds Returned: Disputed amount returned to your merchant's account.
- Notification:
payment.dispute.closedwebhook event
Lost (lost status)
- Funds Retained: No funds are moved.
- Notification:
payment.dispute.closedwebhook event
Dispute Reversals
Card networks can reverse lost disputes:
- Reversal Trigger: New evidence or network decision
- Dispute updated: Status of dispute is updated to won
- Fund Return: Previously lost funds are returned
- Notification:
payment.dispute.closedwebhook event
Status Transitions
needs_response → under_review → won/lost
↓
forfeited
Status Descriptions
needs_response- Initial status, response deadline activeunder_review- Response submitted, card network is reviewingwon- Dispute resolved in merchant's favorlost- Dispute resolved against the merchant
Webhook Events
Monitor these events for real-time updates:
payment.dispute.created- Lets you know anytime a customer opens a payment disputepayment.dispute.closed- Lets you know anytime a payment dispute is closedpayment.dispute.funds_returned- Lets you know anytime a payment dispute won and funds are returnedpayment.dispute_evidence.created- Lets you know anytime a dispute evidence is createdpayment.dispute_evidence.uploaded- Lets you know anytime a dispute evidence is uploadedpayment.dispute.forfeited- Lets you know anytime a dispute response is forfeitedpayment.dispute.submitted- Lets you know anytime a dispute response is submitted