Knowledge > Runbooks > Customer Ops > Process a Refund
Process a Refund
Issue a full or partial refund to a church customer via Stripe.
Prerequisites
- Stripe CLI logged in (live mode needs
--api-key $STRIPE_LIVE_SECRET_KEY) - The church's Stripe payment intent ID (
pi_...) or charge ID (ch_...) - Refund policy confirmed (see
C:\dev\knowledge\data\policies.yaml)
Steps
-
Verify the refund request is legitimate
- Confirm the church's identity (email, subscription ID)
- Confirm the refund is within the refund policy window
- Check
knowledge/data/policies.yamlfor current refund policy terms
-
Find the payment intent or charge ID
By customer email:
stripe customers list --email "[church-email]"Note the
cus_ID, then list charges:stripe charges list --customer cus_xxxxxxxxxxxx --limit 5Copy the
ch_charge ID or the associatedpi_payment intent ID.Alternatively, list payment intents:
stripe payment-intents list --customer cus_xxxxxxxxxxxx --limit 5 -
Calculate refund amount (if partial) Amount is in cents. For example, $19.95 = 1995 cents. Omit
--amountfor a full refund. -
Issue the refund
Full refund:
stripe refunds create --payment-intent pi_xxxxxxxxxxxxPartial refund (specify amount in cents):
stripe refunds create --payment-intent pi_xxxxxxxxxxxx --amount 1995For live mode, append
--api-key $STRIPE_LIVE_SECRET_KEYto the command. -
Confirm the refund was created successfully
stripe refunds list --limit 3The new refund should appear with
status: succeeded. -
Cancel the subscription if not already done A refund does NOT automatically cancel the subscription. If the church is leaving, also run:
stripe subscriptions cancel sub_xxxxxxxxxxxxSee cancel-subscription.md for full details.
-
Notify the church by email that the refund has been processed
- Include the refund amount and expected return timeline (5–10 business days to card)
- If the subscription was also cancelled, confirm that too
Refund Timeline
- Stripe typically processes refunds within 5–10 business days
- The refund appears on the original payment method (credit card)
- Stripe does not refund their processing fee to us (expected)
Partial Refund Use Cases
- Pro-rated refund when cancelling mid-cycle
- Refund for a feature outage or service disruption
- Goodwill refund for a portion of the charge
Test Mode Note
In test mode, refunds work against test charges only. To test the refund flow without affecting live data, use test mode with a test payment (pi_test_...).
Verification
After issuing the refund:
stripe refunds retrieve re_xxxxxxxxxxxxshowsstatus: succeeded- The church receives a Stripe-generated refund confirmation email (automatic)
- Your Stripe dashboard shows the refund on the payment
See Also
- cancel-subscription.md — cancel subscription alongside refund
C:\dev\knowledge\data\policies.yaml— refund policy termsC:\dev\PRICING.md— price amounts for calculating partial refunds