Skip to main content
Slash Payment Processing is in beta and not enabled for all accounts. Contact support@joinslash.com to get access.
A refund returns some or all of a captured payment to the buyer. Refunds are created against a payment intent and are processed asynchronously: a refund starts as pending, moves to processing, and ends in a terminal succeeded or failed state.

Creating refunds

POST /refund requires the paymentIntentId to refund and the amount in cents. You can refund all or part of a payment by setting amount to the desired value. You can create multiple partial refunds against the same payment; the total across all refunds can never exceed the captured amount. You can optionally include an X-Idempotency-Key header. Retrying a request with the same key returns the original refund instead of creating a duplicate, so requests with an idempotency key are safe to retry on timeouts. Reusing a key with a different request body returns a 409.

Tracking refund state

Poll GET /refund/{refundId}, or list refunds with GET /refund filtered by filter:paymentIntentId or filter:status. Webhooks are the push-based alternative: subscribe to payments.refund.created and payments.refund.updated events to be notified when a refund is created and on every status change.