Shop & Products·4 min read·

Processing partial and full refunds

How to issue a refund via Stripe from the order detail page, when to use partial versus full refunds, and how the audit trail is preserved in the refunds collection.

VeloCMS refunds are issued through Stripe, not by hand. From Admin > Orders, open the order that needs a refund and click the 'Issue Refund' button. A modal asks for the refund amount and a reason (either a preset — duplicate, fraudulent, requested_by_customer — or a free-form note). Submit the modal and the refund is created via the Stripe API using your tenant's configured Stripe key.

Partial versus full refunds

Enter the full order total to issue a complete refund — the order status changes to 'refunded' and digital entitlements are revoked (customers can no longer access downloads tied to this order). Enter any lesser amount for a partial refund — the order stays in 'completed' status, but a record is created in the refunds collection with the Stripe refund ID, amount, reason, and timestamp. You can issue multiple partial refunds per order; each one is logged separately for your accounting trail.

Refunds reduce the payout in your Stripe balance. If your balance is insufficient, Stripe may delay the refund — the refunds collection will still show it as 'pending' until Stripe confirms. Keep an eye on Stripe Dashboard > Balance if you process a large refund.

Customer notification

The customer automatically receives a refund-confirmation email from Resend the moment the Stripe refund succeeds. The email includes the original order ID, refunded amount, and the reason you provided. No manual messaging needed — but feel free to follow up personally if the situation warrants a warmer touch.