⚡ Now sending refunds straight through Shopify

Refunds move through a queue.
Not a spreadsheet.

The internal approval layer for multi-store teams. Every refund and expense logged, reviewed, and paid out on the record — duplicate-proof, finance-approved, and native to Shopify.

Works with any store. One click through Shopify.

● refund queue — live
Marta K.#RR-4821$34.90Pending
Tomáš V.#RR-4820 · sent via Shopify$18.00Processed
Lena B.#RR-4817 · dup of #RR-4790$12.50Blocked · duplicate
🚫 Duplicate-proof ✅ Finance-approved 🛍️ Shopify-native 🧾 Immutable audit trail
LIVE — not roadmap
Shopify-native

Approve here. The money leaves Shopify.

Connect a store once. When finance approves a refund, RefundRelay sends it straight to Shopify — original payment, store credit, or a split of both — and records the reference that comes back.

  • One idempotency key per request — a timeout can never double-refund
  • Reads the real gateway result, so a refund that fails is never marked paid
  • Store credit, original payment, or split — decided at approval
  • The refund reason lands in the Shopify order timeline, not a ticket number
order #1002 · AU125.00 AUD
already refunded87.50
this refund37.50
gateway✓ refunded
// note on the Shopify order: "Change of mind — via RefundRelay (#8)"
Isn't this just Shopify?

Shopify sends the money. It doesn't run the decision.

Shopify's refund button is a payout tool — anyone with access can press it. RefundRelay is the control layer around it: who's allowed to approve, what got checked, and what stays on the record.

Shopify's refund button, alone

  • Anyone with refund access can issue one
  • No approval step before the money leaves
  • Nothing flags a duplicate of a refund already paid
  • No lasting record of who decided, or why

With RefundRelay on top

  • A finance approver signs off before anything pays out
  • Duplicate requests are caught and blocked
  • One idempotency key per request — a retry can't double-refund
  • Every decision on an audit trail that can't be quietly edited
Who it's for

Built for teams where refunds pass through more than one hand.

If money leaves your store on someone's say-so, it should leave a record. RefundRelay fits three kinds of team especially well.

🏬

Multi-store operators

Running several Shopify storefronts at once. One queue, one price, every store's refunds and expenses in the same place.

📊

Ops & finance teams

The people who sign off on money going out. Approvals, live budgets, and an audit trail that closes the gap between support and the bank.

🤝

Agencies & managers

Handling refunds for the brands you run. Keep each client's payouts isolated, reviewed, and defensible.

Why this exists

One mislabeled currency is all it takes.

The kind of quiet mistake a shared spreadsheet can't catch.

◼ The scenario every ops lead knows

Picture a refund keyed in the wrong currency — and no one checks

Amount that lands in the sheet65,781.00
Amount that should have gone out79.46

No approval step, no duplicate check, no second set of eyes — just a shared sheet where a single typo compounds silently. This is illustrative, not a real event — but if you've run refunds from a spreadsheet, you know how close to home it lands. RefundRelay is the layer that stops it at the first entry.

What it catches

Five failure modes, closed off

🚫

Duplicate blocking

Flags a refund already issued against an order before it goes out a second time — and shows what's left to refund.

Finance approval queue

Every refund and expense waits for finance sign-off. No unilateral payouts from an agent's login.

🌍

Multi-store dashboard

All your brands' refunds in one view — one set of totals, one place to audit.

💱

Currency guardrails

Catches amount and currency mismatches — the exact trap above — before anything is paid.

🧾

Full audit trail

Approved, rejected, re-opened, voided — every action is time-stamped and kept. Nothing is silently deleted.

↩️

Void, don't delete

A mistaken request is voided with a reason and drops out of every total — but stays on the record.

How it works

Three steps, fully on the record

1

Log

An agent files the refund — customer, order, amount, reason, type. Order details pull straight from Shopify.

2

Review

Finance sees it in the queue and approves or rejects, with the reason attached.

3

Pay out

Approved refunds go through Shopify in a click — or get recorded if you paid another way. Every action time-stamped.

Not just refunds

Team expenses run through the same discipline

The money going out isn't only refunds. Expenses get the same queue, the same finance sign-off, and budgets that actually hold.

Submit, approve, reimburse

An agent submits an expense with a receipt. Finance approves or rejects. Reimbursable ones get marked paid — all on the same record as your refunds.

  • Snap a receipt — iPhone HEIC and PDFs handled, previewed inline
  • Per-category monthly budgets, with spend tracked live against them
  • Submitted spend counts too, so finance never sees room that isn't there
  • Same five roles, same audit trail as refunds
● expenses — this month
Meta AdsAdvertising · approved$420
DHL ExpressShipping · pendingPending
Adobe CCSoftware · reimbursedPaid
Advertising budget$420 / $500
Shipping budget$610 / $500
Savings calculator

See what your team gets back

Every input is yours to change. The math is labor-time only — no invented fraud savings.

Defaults are conservative on purpose. Manual flow = collect details → spreadsheet handoff → process in Shopify. RefundRelay collapses that into one approval that pays out on the spot. Drag the sliders to your reality.

⏱️ Hours saved / month20 hrs
💵 Labor value saved$240
➖ RefundRelay cost$79
$161
net saved every month
Return on the $79: 3.0× — and 2.5 workdays of team time back.
Live demo — no signup

This is the whole product

A refund hits the queue. You approve or reject. Finance pays it out. Click through it yourself.

app.refundrelay.com · finance view

Refund queue

3 awaiting approval
CustomerAmountTypeStatusAction
🔒 Demo data — fictional customers. The real app is multi-tenant with owner / admin / finance / agent / viewer roles.
See it at a glance

Your whole refund picture, labelled

One dashboard pulls every store's refunds into a single view. Here's what each part is telling you.

app.refundrelay.com · insights
All stores · This month
Agent: All ▾
Refunded
$4,182
Requests
128
Blocked · dup
6
By country
AU$1.7k
US$1.2k
DE$710
PL$420
By reason
Change of mind42%
Faulty item28%
Wrong item18%
Other12%
Every store's total, one honest number
Where refunds cluster, by market
Duplicates caught before payout
Every refund tagged with a reason
Everything in the box

One price. All of it included.

No add-ons, no per-seat fees, no locked tiers — the whole toolset comes with every workspace.

🚫

Duplicate blocking

Flags a refund already issued against an order before it goes out twice.

Finance approval

Nothing pays out until an approver signs off — no unilateral refunds.

🧾

Immutable audit trail

Every action time-stamped and kept. Nothing is silently deleted.

↩️

Void, don't delete

A mistake drops out of your totals but stays on the record, with a reason.

🌍

Multi-store view

Every brand's refunds in one set of totals — filter by store or agent.

🛍️

Shopify payouts

Original payment, store credit, or a split — decided at approval.

🔁

Idempotency-safe

One key per request, so a timeout or retry can never double-refund.

⚠️

Risk flags

Amount and currency mismatches scored and flagged automatically.

💳

Expenses & budgets

Team spend runs the same approval, with per-category live budgets.

📎

Receipt uploads

Snap a receipt — iPhone HEIC and PDFs handled and previewed inline.

👥

Roles & invites

Owner, admin, finance, agent, viewer — invite your whole team.

📤

CSV export

Pull the full ledger out whenever you need it, filtered or complete.

Pricing

One price. Every store you run.

Per workspace — connect all your brands under it. Founding price, locked for life.

🔒 Founding price — locked forever
$79/mo
per workspace · billed monthly
  • Unlimited stores & brands
  • Refund & expense approval workflow
  • Native Shopify payouts — refund from the queue
  • Owner / admin / finance / agent / viewer roles
  • Duplicate blocking, currency guardrails, budgets
  • Full audit trail on every action
Start 14-day trial — no card

No card required. Cancel in one click.

FAQ

The honest answers

Does it integrate with Shopify?

Yes — this is live today. Connect a store, and approved refunds send straight through Shopify to the original payment method, store credit, or a split. It reads the real gateway result, so a refund that fails is never marked as paid, and one idempotency key per request means a retry can't double-refund. It also works alongside any non-Shopify store — you record those payouts by hand.

Does RefundRelay pay out refunds automatically?

Not without a human. A refund is filed, then a finance approver signs off — only then does it go out, whether through Shopify or recorded manually. RefundRelay makes sure the right refund, and only the right refund, reaches the customer.

It handles expenses too?

Yes. Team expenses run through the same queue and finance approval as refunds — submit with a receipt, get approved, mark reimbursed — plus per-category monthly budgets that track spend live, including what's still awaiting approval.

How many stores can I connect?

Unlimited, all under one workspace and one price. Multi-store operators are exactly who this is built for.

Is my data isolated?

Yes. Each workspace is its own tenant, enforced at the database. The public demo runs on fictional data only.

Can I delete a refund or a workspace?

Records that involve money aren't destroyed — a mistaken request is voided with a reason and drops out of your totals while staying on the audit trail. A workspace can be closed by its owner, but not while paid history exists, so you export first.

Still have a question? Email support@refundrelay.com — we read every one.

Why I built it

It started with a spreadsheet that kept getting refunds wrong.

Before this, I worked at a dropshipping company where every refund lived in a shared spreadsheet. It broke all the time — a figure typed into the wrong cell, totals that didn't match what actually went out, numbers no one could fully trust. The data was wrong often enough that we stopped trusting it — and a spreadsheet is no place to decide who gets money back. RefundRelay is the tool I wish we'd had: a real queue, a finance sign-off, and one honest record that can't quietly be changed.

Founder, RefundRelay
Get started

Start your 14-day trial

No card required. Create your workspace in under a minute.

Start free trial
No card required Cancel anytime Your data stays isolated & exportable Nothing pays out without a human