The refund flow is the customer flow. We make it boring.
A refund app that lives between your storefront, your payments, and your finance system. Policy applied automatically, approvals routed by amount, customer told the truth in real time. We integrate Stripe, GoCardless, Shopify, WooCommerce, Xero.
2–6 wks Build, fixed price9.1 d → 36 h average resolution−50% CS hours on refunds90 days Stabilisation included
What's in the build
Six pieces, one workflow.
Customer raises a refund; the right rule applies, the right approver signs, the money moves the same day.
01 · Customer portal
Self-serve refund inside the order page.
Customer raises the refund from the order page. Reason captured, photos uploaded, eligibility checked against policy in real time. The first reply they get isn't 'we'll get back to you'.
Reason + photo capture
Real-time eligibility
Status tracker
Outcome notification
02 · Policy engine
Your refund policy, in code.
Window, condition, fraud flags, repeat-customer rules — all encoded. Refund auto-approves if it fits the policy. Edge cases route to a human with the policy clause shown.
Encoded policy rules
Window + condition checks
Repeat-customer flags
Auto-approve under threshold
03 · Approver queue
One queue, one decision per row.
Approver sees the refund, the customer history, the order, the photos, the policy clause. Approve, reject, or escalate, with reason captured. SLA on every row.
Customer history in row
Policy clause shown
One-click decisions
SLA timer per row
04 · Money movement
Stripe / GoCardless on approve.
On approve, the refund fires through the original payment method. No re-keying. The customer gets the email. The finance system gets the entry. Same day.
Original-method refund
Stripe / GoCardless wired
Customer notification
Xero entry created
05 · Stock & fulfilment
If the goods come back, the system knows.
Refund linked to a return RMA where applicable. Stock status updates on receive — restock, scrap, refurb. The warehouse and finance see the same status.
Linked RMA
Stock status on receive
Restock / scrap / refurb
Single status dashboard
06 · Reporting
Refund rate, by reason, by SKU, by month.
Live: refund rate by SKU, top reasons, average resolution time, repeat-refunder flags. The reasons that recur become a product or marketing conversation.
Refund rate by SKU
Top-reason analytics
Resolution time SLA
Repeat-refunder flags
Sample engagement
The marketplace that cut refund SLA from 9 days to 36 hours.
120 refunds a week. Three CS agents. A shared inbox.
A homewares marketplace handled refunds via a shared support inbox and manual Stripe entries. Average resolution: 9.1 days. We shipped a refund app: customer-self-serve, policy engine, approver queue, Stripe wired. Three months in: average resolution 36 hours, CS hours on refunds halved, refund rate visibility surfaced two SKUs accounting for 30% of refunds.
How we measure: Resolution time measured from refund-raised timestamp to refund-paid timestamp (n = 1,540 across 12 weeks pre/post), CS hours tracked via time logs, SKU analysis from refund-reason field.
9.1 d → 36 haverage resolution
−50%CS hours on refunds
2 SKUsexplained 30% of refunds
Industries this is built for
Where this build earns its rent.
Most-relevant verticals — but the same shape works for adjacent ones.