Disputes
Overview
A dispute occurs when a customer challenges a payment made through your site — for example, when they contact their bank to contest a charge. Disputes originate only on the payment processor’s side, and Pelcro listens to the payment processor webhooks to reflect their final status.
Pelcro itself does not initiate or manage disputes. Instead, it flags the charge as disputed when notified by the payment processor and temporarily restricts any actions on that charge until the dispute is resolved.
Note: Disputes are currently supported for Stripe payments only. For questions or assistance, please contact [email protected].
What Is a Dispute
A dispute represents a formal claim by a customer against a payment they made — often referred to as a chargeback. When a dispute is created in Stripe, the payment is temporarily placed under review by the card issuer.
“I paid for something, but now I’m challenging that payment.”
Where Disputes Are Managed
Disputes are handled on the payment processor’s side, where the investigation, evidence submission, and resolution take place. Pelcro automatically listens for dispute events from supported processors and updates your platform to keep records accurate.
Within Pelcro, disputed charges are clearly flagged as disputed and locked to prevent conflicting actions (such as refunds or adjustments) while the processor reviews the case. This ensures your accounting data and customer records remain consistent throughout the dispute process.
The Payments export also reflects these cases by marking the charge under the
disputedcolumn astrue.
How Pelcro Handles Disputes
Pelcro listens to Stripe’s dispute webhook events and updates records accordingly. We do not mirror the ongoing dispute lifecycle, but take action when key Stripe events occur.
| Stripe Event | Action in Pelcro | Description |
|---|---|---|
charge.dispute.created | Mark charge as disputed | The charge is locked — no refunds or manual actions can be taken while the dispute is open. |
charge.dispute.closed | Sync final outcome | Once the dispute is closed, Pelcro checks the status field and updates records if the dispute was lost (refund created) or won (no change). |
Lifecycle of a Dispute
Here’s how Stripe disputes flow through Pelcro:
- Customer initiates a dispute via their bank or card issuer.
- Stripe sends
charge.dispute.createdto Pelcro.- Pelcro flags the charge as disputed = true.
- The charge becomes read-only — no refunds or actions can be performed in Pelcro.
- The charge remains in Paid status.
- Stripe investigates and sends
charge.dispute.closedonce the dispute is resolved. - Based on the outcome:
- Dispute won (merchant): No changes. The payment remains Paid, since funds were retained.
- Dispute lost (customer): Pelcro creates a refund object to record the reversal and keep accounting in sync.
Example Timeline
| Stage | Stripe Event | Pelcro Action | Status |
|---|---|---|---|
| Dispute created | charge.dispute.created | Mark charge as disputed; freeze actions | ⚠️ Disputed |
| Investigation | – | Charge locked in Pelcro — charge remains Paid | ⚙️ In Review |
| Dispute won | charge.dispute.closed (status = won) | No change — charge remains Paid | ✅ Won |
| Dispute lost | charge.dispute.closed (status = lost) | Create Refund record | ❌ Lost |
| Phase | Duration | Description |
|---|---|---|
| Dispute filed | Day 0 | Funds withdrawn, Stripe notifies you |
| Submit evidence | 7–21 days | Provide supporting documentation |
| Bank review | 30–75 days | Issuer reviews and decides |
| Final decision | ~Day 60–90 | Funds returned or permanently lost |
Impact on Accounting & Reports
| Scenario | Accounting Behavior | Exports & Visibility |
|---|---|---|
| Dispute Opened | No ledger movement. Charge remains visible as paid. | The Payments export marks the charge under the disputed column as true. |
| Dispute Won (merchant) | No changes; funds remain recorded as received. | No refund record created. |
| Dispute Lost (customer) | Pelcro creates a refund object to match Stripe’s refund and maintain ledger accuracy. | Accounting exports reflect the refund created. |
Pelcro’s ledger system (Online Cash, AR, and Customer Balance) treats lost disputes as normal refund transactions to ensure accurate accounting.
Subscription & Customer Impact
- Pelcro does not automatically pause or cancel subscriptions when a dispute occurs.
- Customer records remain active, but the disputed payment is tagged as “Disputed” in the UI.
Note: Stripe may charge dispute-related fees.
If you win a dispute, Stripe will refund the customer dispute fee. However, any other Stripe processing or review fees will still apply and won’t be refunded. Pelcro does not sync these Stripe fees, so they will not appear in your ledgers or exports.
Next Steps
- Need help or have questions about a dispute? Contact our support team at [email protected] — we’re here to assist.
Updated 13 days ago
