Nembl
Examples
Customer Refund

Example: Customer Refund

A B2B SaaS-flavored process: a customer reports a billing issue → CSM reviews → finance signs off above a threshold → Stripe processes the refund → customer gets a confirmation email.

You'll build: Service Customer Success → Offering Refund Request → Form (6 fields) → Workflow with conditional finance approval + Stripe automation. Time: ~25 min.

The shape

Submit → CSM Review → [refund < $500?] ─── Yes ──→ Process Refund (Stripe) → Confirmation Email → ✅ Refunded

                          └─── No ──→ Finance Approval ──→ Process Refund → ...

                                          └─── Reject ──→ ❌ Denied (with reason → email customer)

What you'll need

  • Company account
  • Stripe account (test mode is fine) with API key
  • A Connector configured for Stripe — see Connectors
  • An email-sending integration (your own SMTP, SendGrid, etc.) or you can use a webhook to a notification service

Step 1 — Service & Offering

Service

Admin → Services → New Service.

  • Name: Customer Success
  • Description: Customer-facing requests handled by the CS team

Offering

  • Name: Refund Request
  • Description: Process a refund for a customer billing issue

Step 2 — Form

FieldTypeRequiredNotes
Customer EmailEmailUsed for Stripe lookup + confirmation
Stripe Customer IDTextIf known; else CSM will look it up
Charge ID to RefundTextStripe ch_xxx or pi_xxx
Refund Amount (USD)Number
ReasonSelectDuplicate charge, Service issue, Customer request, Goodwill, Other
NotesTextareaContext for the reviewer

Step 3 — Workflow

Drag phases

  1. Start
  2. ApprovalCSM Review
  3. DecisionThreshold Check
  4. ApprovalFinance Approval (only if refund ≥ $500)
  5. ProcessProcess Refund (auto via Stripe connector)
  6. ProcessSend Confirmation Email (auto)
  7. EndRefunded
  8. EndDenied

Connect

  • Start → CSM Review
  • CSM Review (Approve) → Threshold Check
  • CSM Review (Reject) → Send Denial Email → Denied
  • Threshold Check: {{refundAmount}} >= 500 → Finance Approval; else → Process Refund
  • Finance Approval (Approve) → Process Refund
  • Finance Approval (Reject) → Send Denial Email → Denied
  • Process Refund → Send Confirmation Email → Refunded

Configure Threshold Check (Decision)

  • Condition: {{refundAmount}} >= 500

Configure Process Refund (API_CALL via Stripe Connector)

  • Use Connector: Stripe — Create Refund
  • Body: charge = {{chargeIdToRefund}}, amount = {{refundAmount * 100}} (Stripe wants cents)
  • Output Variable: stripeRefundResult
  • On error → route to Denied with the Stripe error message captured

Configure Send Confirmation Email (Automated, Webhook)

  • URL: your email-sending webhook
  • Body Template:
{
  "to": "{{customerEmail}}",
  "subject": "Your refund has been processed",
  "body": "Hi! We've processed your refund of ${{refundAmount}} (Stripe ID: {{stripeRefundResult.id}}). It'll appear on your card in 5-10 business days."
}

Configure Send Denial Email (Automated, Webhook)

Similar shape but informs the customer the refund wasn't approved + the reason.

Publish

Step 4 — Responsibilities

PhaseResponsible
CSM ReviewCSM Team
Finance ApprovalFinance Team
Process Refund(auto)
Send Confirmation Email(auto)
Send Denial Email(auto)

Step 5 — Test

Test small refund ($50)

Submit. CSM approves. Auto-skips Finance. Stripe (test mode) processes. Confirmation email fires.

Test large refund ($1500)

Submit. CSM approves → Finance Approval activates. Finance approves → Stripe processes.

Test denial

CSM rejects with reason "Refund window expired". Denial email fires citing the reason.

Test Stripe failure

Submit a refund for an already-refunded charge. Stripe API returns an error. Workflow routes to Denied with the error logged.

What you can adapt

  • Auto-route by reason: refunds for "Service issue" go through CSM Manager (not just CSM); refunds for "Goodwill" require Finance regardless of amount. Add Decision branches.
  • Customer satisfaction follow-up: 7 days after refund, fire a Timer phase that sends a CSAT survey. Track responses in a separate Service.
  • Auto-credit instead of refund: for amounts under $50, offer the customer a credit toward next invoice instead of cash. Add a Decision branch + Stripe credit-note action.
  • Audit reporting: the Audit Trail captures every refund action with the actor + amount. Filter by service:refund-request for compliance reports.

Related