Compliance · Article 11.9
Disputes & chargebacks: the Stripe lifecycle and how to win evidence
A chargeback is a card issuer reversing a Stripe charge at the cardholder's request. You have ~7 days to submit evidence; Stripe and the card networks decide the outcome. This article is the freelancer's playbook.
A chargeback (Stripe calls it a "dispute") is the credit-card industry's consumer-protection mechanism. The cardholder tells their bank "I didn't authorise this charge" or "I didn't get what I paid for", the bank reverses the funds from your Stripe balance, and you have a window to submit evidence proving the charge was legitimate. If the network rules in your favour, the funds return; if not, you eat the chargeback plus a network fee. This article walks through the Stripe lifecycle, the typical reason codes, and the evidence playbook that Clozo's audit trail uniquely positions you to win.
Step by step
Receive dispute notification.
Stripe webhook + email. The amount + fee are already debited from your Stripe balance.
Open Stripe dashboard
→ Disputes → click into the new dispute. Read the reason code.
Open
/proposals/{id}in Clozo.Identify the disputed payment (match PaymentIntent ID with the Stripe
pi_*****from the dispute).Compile evidence
: download the signed Service Agreement PDF, download the signature audit trail (Documents dropdown → "Download signature audit trail"), screenshot the Timeline page, gather any delivery proof from outside Clozo (Git commits, file transfers, etc.).
Write the evidence summary
using the template above. Be specific with dates, IPs, hashes, payment IDs.
Upload to Stripe
via the dashboard's evidence form. Submit before the deadline (typically 7 days, but check the exact dashboard deadline).
Wait for outcome.
Stripe email when status changes. Network deliberation 30–75 days.
If lost
: the chargeback + fee stays. Update your records. Consider whether the cardholder has a legitimate complaint and whether to issue a goodwill credit or pursue debt collection through other channels.
Why this works this way
The Stripe dispute lifecycle.
1. Cardholder initiates dispute with their issuing bank. The bank assigns a reason code (see below) and contacts the card network (Visa, Mastercard, Amex).
2. Stripe is notified and immediately debits the disputed amount + the network fee (typically €15–25, depending on currency and card type) from your Stripe balance. You receive a webhook (charge.dispute.created) and an email notification.
3. Status `needs_response`: Stripe shows the dispute in your dashboard with a deadline (usually 7 calendar days from creation, sometimes shorter than the network's official 21–45 days because Stripe builds in their own buffer to compile your evidence).
4. You submit evidence through Stripe's dashboard or API. Clozo's audit trail (signed Service Agreement, IP/UA log, payment receipt, timeline events) is your evidence corpus.
5. Status `under_review`: Stripe forwards evidence to the card network. Network deliberation can take 30–75 days.
6. Outcome: won (funds + fee return to your balance), lost (chargeback stays + fee retained), or warning_closed (informational, no financial impact).
The most common reason codes (vary by network — these are the practical ones for freelance services):
- Fraudulent (Visa 10.4 / Mastercard 4837): cardholder denies authorising the transaction. Often the cardholder's card was compromised. Evidence to win: signed agreement showing the cardholder's name, IP/UA matching the signing event, delivery confirmation.
- Product not received (Visa 13.1 / Mastercard 4855): cardholder claims they paid but didn't receive the service. Common when delivery was milestone-based and the cardholder forgot a milestone landed. Evidence: delivery proof (final invoice, completion confirmation, the actual deliverables transferred — file links, repository commits, etc.), client confirmation in chat or email.
- Product unacceptable (Visa 13.3 / Mastercard 4853): cardholder claims the service didn't match the description. Subjective; often used as a chargeback flavour of a refund dispute. Evidence: signed agreement showing the agreed scope, communication log showing acceptance of milestones, any positive feedback.
- Subscription cancelled (Visa 13.2 / Mastercard 4859): cardholder claims they cancelled but were still charged. For freelancer single-engagement work this is rare; mostly hits SaaS subscriptions.
- Credit not processed (Visa 13.6 / Mastercard 4860): cardholder claims you promised a refund and didn't issue it. Evidence: refund records (Stripe refund.id), email confirmation, your refund policy.
- Duplicate charge (Visa 12.6.1 / Mastercard 4834): cardholder claims they were charged twice. Evidence: payment intent IDs proving each charge corresponds to a different invoice.
Clozo's evidence corpus.
For every signed proposal, Clozo provides:
1. Signed Service Agreement (AGR-) with the cardholder's typed name, the IP address at signing, the User-Agent, the timestamp, and the consent record. This is a Simple Electronic Signature (SES) under eIDAS Art. 3(10), backed by the SignatureAudit row, on the very transaction the dispute is challenging — exactly the kind of evidence Stripe and the card networks weight heavily for "not authorised" and "product not received" reason codes.
2. Signature audit row with full details — exportable from /proposals/{id} → Documents → "Download signature audit trail".
3. Timeline events documenting every step: Sent, Viewed, Signed, Deposit paid, Final invoice issued, Paid, Completed. Each with timestamp + actor + IP.
4. Communication log — if you used Clozo's chat (Crisp), the chat history is an additional evidence stream.
5. Receipt PDFs (REC-) confirming what was paid and when.
6. Delivery proof — anything outside Clozo (Git commits, Figma file links, deliverable downloads). You'll need to attach these manually to the Stripe dispute submission.
The evidence submission template (paste this structure into Stripe's evidence form):
> 1. Customer identification: cardholder name + email matches signed agreement (AGR-2026-NNNN). > 2. Authorisation evidence: PIN-gated access to the proposal; PIN was sent to the cardholder's email; PIN entered correctly (signature audit trail attached). > 3. Agreement evidence: Service Agreement signed on YYYY-MM-DD by [cardholder name] from IP [IP], User-Agent [UA]. eIDAS Simple Electronic Signature under Reg. 910/2014 Art. 3(10), with PIN-gated email-possession check, full request headers and consent record retained for 10 years. SignatureAudit ID: [audit row UUID]. > 4. Service description: line items as in the signed agreement (attach PDF). > 5. Delivery proof: final invoice issued YYYY-MM-DD; deliverables transferred [via Git / Figma / file transfer / etc.]; client confirmation [chat log or email]. > 6. Refund policy: per signed agreement, no refund is due where the service was performed as agreed. > 7. Communication log: client did not raise concerns prior to chargeback; first contact was via the bank.
Practical notes:
- Time discipline: submit before Stripe's deadline. Late submission = automatic loss. - Be specific: copy exact dates, IPs, and SignatureAudit row IDs from Clozo. Vague evidence loses. - Don't argue, evidence: card networks are pattern-matching machines. They want to see signed-agreement-plus-delivery-proof, not your narrative of how rude the cardholder was. - PSD2 SCA helps: payments that passed 3D Secure 2 strong customer authentication shift liability to the issuing bank for "not authorised" disputes. Clozo + Stripe enable 3DS automatically per PSD2 SCA RTS — see article 5.6. - Win rates: with a complete Clozo audit + delivery proof, signed-agreement-based disputes win at very high rates. Cleaner cases (SES with full audit row + delivery proof + 3DS-passed) approach 90%+. "He didn't deliver" disputes without delivery proof are harder.
B2B disputes are governed by the merchant agreement and the relevant national contract law, not the consumer-protection rails. Most B2B clients raise concerns via email or chat first; chargebacks are unusual outside fraud cases. If a B2B client does file a chargeback, the same evidence corpus applies — and in B2B context the SES + audit trail tends to carry significant evidentiary weight under national civil law, since the consumer-protection presumptions that can tilt B2C disputes do not apply between businesses.
EU dispute alternatives. For disputes that don't go through the card networks: - Online Dispute Resolution (ODR) platform (Regulation 524/2013): EU consumer-trader disputes can be filed at https://ec.europa.eu/consumers/odr — alternative dispute resolution. You're required to display a link to ODR on your website if you sell to EU consumers online (yes, this includes freelance services). - Small Claims Procedure (Regulation 861/2007): cross-border claims up to €5,000 between EU residents have a streamlined court procedure. Useful for B2B fee non-payment. - Late Payment Directive (2011/7/EU): for B2B, automatic interest at ECB reference rate + 8 percentage points + €40 recovery fee accrue on overdue invoices — even without a court action, just by operation of law. See article 3.7 for Clozo's auto-reminder cadence aligned with this.
Troubleshooting
Keep reading
Proposals & Invoices
Online payment via Stripe Connect — Direct Charges, fees, 3DS, refunds
When you connect Stripe, your clients can pay invoices by card on a Clozo-hosted page. Charges go directly to your Stripe account (Direct Charge architecture); Clozo takes no platform fee on payments. Stripe's standard processing fees apply.
Refunds & Notifications
Stripe automatic refund (Direct Charges via Connect)
When the original deposit was paid via Stripe, the refund is automatic. Clozo issues a Refund on the freelancer's connected account, watches for the `refund.updated` webhook, and flips the credit note to `succeeded` once Stripe confirms — typically within 3–5 business days for the cash to reach the client.
Refunds & Notifications
Failed refunds & recovery — common Stripe failure reasons
A `failed` credit note has a `refund_failure_reason` string from Stripe. Most reasons fall into a small set; here's what each means and the recommended recovery.
Quick Start
Get paid: what happens after your client signs
The moment your client clicks `Sign`, Clozo issues the deposit invoice, sends a payment-request email, and starts watching for the money to arrive. Here's the play-by-play.