Issue a partial refund via POST /v1/refunds with charge or payment_intent, the amount to refund in the smallest currency unit, and an optional reason (duplicate, fraudulent, or requested_by_customer)
Multiple partial refunds can be issued against the same charge up to the full original amount; retrieve all refunds for a charge via GET /v1/charges/{id} and inspect the refunds list object
Set reason=fraudulent only when the original charge was unauthorized fraud — this triggers Stripe Radar signals and affects dispute metrics; use requested_by_customer for standard returns
Retrieve the Refund object to verify status; async refund methods (e.g., ACH-funded charges) may show status=pending before transitioning to succeeded or failed
Handle refund.failed events via webhook — Stripe may fail to reverse funds if the original payment method is no longer valid (e.g., closed card account); implement a fallback (check, bank transfer) for failed refunds
Include metadata on the refund object for order management correlation — use metadata.order_id or similar to enable efficient reconciliation against your internal order system
Known gotchas
Stripe does not support refunds to a different card than the original payment method via the standard Refund API — if the original card is closed or expired, the refund will fail and you must handle the alternative payment delivery (e.g., check) outside of Stripe
Refund reason affects Stripe's fraud signals — incorrectly marking merchant-error refunds as fraudulent can inflate your fraud rate and trigger Radar rules or Stripe account reviews; use reason accurately
For PaymentIntents with multiple payment methods or off-session payments, always use the payment_intent parameter on refunds rather than the charge id to ensure the refund is correctly associated with the payment intent and its latest charge
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp