refunds-and-disputes

Implements refunds, dispute handling, and access revocation with the Dodo Payments API.

6|1|Updated Apr 21, 2026
One-click install
npx skills add https://github.com/dodopayments/dodo-agent-plugin --skill refunds-and-disputes-dodopayments
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: refunds-and-disputes
Source: https://github.com/dodopayments/dodo-agent-plugin/tree/main/plugins/dodopayments/skills/refunds-and-disputes
Command: npx skills add https://github.com/dodopayments/dodo-agent-plugin --skill refunds-and-disputes-dodopayments

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires dodopayments, express.

What problem does it solve? Handling refunds and chargebacks correctly is error-prone: developers must track refund statuses, respond to a seven-event dispute lifecycle, and reconcile customer access after payment reversals, all while Dodo Payments acts as Merchant of Record. ## Core Features & Use Cases - Refund Management: Create full or item-level partial refunds, list and retrieve refunds, and interpret the four refund statuses (pending, succeeded, review, failed). - Dispute Lifecycle Handling: Process all seven dispute webhook events (opened, challenged, accepted, cancelled, expired, won, lost) with correct access-control actions for each. - Entitlement Reconciliation: Revoke or restore customer access based on refund success and dispute outcomes, including per-item tracking for partial refunds. - Use Case: A customer opens a chargeback on a subscription payment. Your webhook handler receives dispute.opened, resolves the customer via an extra disputes.retrieve() call, revokes their access, and you submit evidence through the Dodo dashboard within the dispute window. ## Quick Start Ask your agent to implement a Dodo Payments webhook handler that processes refund and dispute events and revokes customer access when a dispute opens.

Frequently Asked Questions about refunds-and-disputes

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I issue a partial refund with the Dodo Payments API?

Call client.refunds.create with the payment_id and an items array specifying each item_id and amount in the smallest currency unit. Omit the amount field on an item to refund that item in full.

How do I handle dispute webhooks in Dodo Payments?

Verify the webhook signature with client.webhooks.unwrap, then branch on the event type such as dispute.opened or dispute.won. Dispute webhook payloads lack a customer field, so call disputes.retrieve with the dispute_id to resolve the customer before changing access.

Can I submit chargeback evidence through the Dodo Payments API?

No, Dodo Payments has no evidence-submission API. You gather evidence such as order confirmations and delivery proof, then upload it through the Dodo dashboard within the dispute window, typically four days.

When should I restore customer access after a dispute?

Restore access only on dispute.won, when funds are retained. All other outcomes including accepted, cancelled, expired, and lost mean funds go to the cardholder or remain unresolved, so access stays revoked until you reconcile separately.

What do the Dodo Payments refund statuses mean?

Refunds have four statuses: pending means processing, succeeded means money returned to the customer, review means under manual review, and failed means the money remains in your account. Only treat succeeded as final for entitlement changes.