Skip to content
Based in Kyiv, Ukraine (UTC+2/+3). Live overlap 9 AM – 1 PM ET every working day, plus the full UK and EU working day.
Reference build — tested on development stores with sample data. Claims & Disputes E-commerce

TernFlow: one queue for refunds and disputes across 12 Shopify stores

When refunds and chargebacks are spread across separate store admins, deadlines slip, currencies don't reconcile and nobody can say who approved what. TernFlow pulls every case into one queue with deadlines, owners and an approval trail. Below: what it does, how it's built, and where the same pattern fits outside e-commerce.

Type
Reference build — tested on development stores with sample data.
Sources
Shopify Payments disputes, Shopify refunds
Our role
Process mapping, UX/UI, architecture, full-stack build
Stack
Nuxt 3 · Laravel · PostgreSQL · Redis
Comparable build
Custom Operational CRM, $15,000–$35,000 (6–12 weeks)
The problem

What goes wrong when disputes live in 12 admins

Multi-store retail operations break down when customer service reps have to jump across separate dashboards without shared queues, cross-store context, or strict permission boundaries.

01

Deadlines slip

Every dispute has a response deadline set by the payment provider. Spread across stores and providers, nobody sees which one expires tomorrow — and an unanswered dispute is usually a lost one: the payment plus the dispute fee.

02

Currencies don't reconcile

A refund in EUR on a USD store, a payout after fees and conversion. The numbers in the admin, the payout and the books rarely match without someone fixing them by hand.

03

Approvals are invisible

Each order's timeline shows that a refund happened. It doesn't show why, whether it was within policy, or who signed off — and across 12 stores, nobody sees the whole picture.

04

Work doesn't carry across stores

Even with one login, agents switch between 12 admins. Queues, filters, notes and assignments stay in each store.

The workspace

Three parts, one workspace

A single operational command center designed for fast response, exact financial clarity, and authorization rules calculated by code.

Live queue · 12 stores · Synced via webhooks
Sample data Filters synced with URL
#TF-8920[Chargeback]Demo Living EU
Needs response
€320.00
2 days·Marcus K.
#TF-8917[Chargeback]Demo Apparel US
Needs response
$212.00
18 hours ⚠·Unassigned → Lead
#TF-8921[Refund]Demo Apparel US
Approved
$148.50
·Sarah M.
#TF-8919[Chargeback]Demo Home UK
Under review (bank)
£85.20
·Sarah M.
#TF-8918[Refund]Demo Apparel US
Auto-approved
$64.00
·Rule R-03 · under $75, not shipped
Click any row to inspect details
Money Drawer#TF-8920
Sample data
Customer paid€320.00
Store currency$347.20 (order rate)
Dispute fee$15.00
Payout affectedPayout of Oct 14, held amount $347.20
Evidence pack status
Order receiptVerified ✓
Carrier trackingDelivered ✓
Customer messagesMissing ⚠
Dispute response assembled automatically from order timeline. Evidence pack requires lead review before submission.
Multi-Store Queue Walkthrough

Automate your refund workflow with absolute control

Watch how webhooks from 12 Shopify stores ingest disputes, apply automated deadline rules, and keep an append-only audit trail for every euro recovered.

Multi-Store Queue Walkthrough · 00:19
00:19
Click to watch system walkthrough
Audio and interactive controls available
* Video shows dispute intake & authorization queue across multiple Shopify stores.Recorded on live client deployment
Architecture

How it's built

The queue reads from its own database, not from Shopify. Events arrive through webhooks, which keeps the workspace fast and inside Shopify's API limits.

Data Ingestion Pipeline
SourceShopify Webhooks
IngestionLaravel Receiver
BufferRedis Queue
StoragePostgreSQL DB
Workspace UINuxt 3 Frontend
Scheduled reconciliation via Shopify Admin GraphQL API fills webhook delivery gaps Zero direct client polling against Shopify REST endpoints
01

Verified and de-duplicated

Each webhook's HMAC signature is validated and its unique ID is stored. Repeated deliveries from Shopify are recognized and skipped immediately, preventing duplicate cases or double-refunding.

02

Failures are visible

Failed background jobs retry automatically with exponential backoff. Persistent errors divert to an operator review queue. A scheduled hourly job compares database records with Shopify to catch any undelivered webhooks.

03

Writes respect API limits

Refunds, notes, and dispute evidence packages are dispatched back to Shopify through a rate-limited queue per storefront, staying well within Shopify GraphQL API leak-bucket thresholds.

04

Sized for the real load

Disputes and refunds represent a tiny fraction of total order volume. The architecture avoids bloated distributed dependencies, running reliably on standard cloud VPS infrastructure.

Mistake-proofing

Built so the expensive mistakes are hard to make

Code-enforced software guards that prevent costly human errors before anything reaches Shopify.

Guard 01

Refund limits by role

Agents can refund up to $100. Above that, a lead approves before anything goes to Shopify.

Guard 02

No refunding twice

Before a refund, the system checks what has already been refunded on that order, including goodwill credits.

Guard 03

A reason on every refund

A reason code is required, so reports show refunds by reason, store and approver.

Guard 04

Deadlines escalate

Disputes with less than 48 hours to respond move to the top of the queue and notify the lead.

Guard 05

Evidence is checked before it's sent

The system assembles order details, tracking and customer messages and flags anything missing. A person reviews and submits the response.

Process

How a project like this runs

Transparent milestones with fixed scopes, parallel validation, and clear handover standards.

01

Operations Audit

5–7 working days · from $1,000

Workflow bottleneck mapping across stores, payment providers, and approval paths. You get a clickable core-flow prototype (5–6 screens) and a written fixed-price build specification.

02

Build

Fixed scope · fixed price · 6–12 weeks

Live working demos every 1–2 weeks with fast async feedback loops to keep your launch date on track. Connected to test stores on a staging environment with real API endpoints, database migrations, and responsive UI components.

03

Pilot verification

2 weeks on test stores

The workspace runs on one or two stores for two weeks. We verify and reconcile cases against the store admins before complete rollout.

04

Handover

Client cloud deployment & runbook

Deployed to your cloud account, with documentation, a runbook for common failures, an automated CI/CD pipeline, and complete intellectual property ownership.

Build or buy

When an off-the-shelf tool is enough

If you run one or two stores, Shopify's built-in admin and an existing chargeback app are usually enough — and some of those apps charge only a share of what they recover.

A custom workspace starts to pay off when refunds, disputes and approval rules span many stores, currencies or payment providers, and when you need your own business rules calculated by code rather than another vendor's recurring per-seat fees. The audit tells you which side of that line you're on.

Beyond e-commerce

Many sources, deadlines, money, one accountable person

The same structure — one queue, deadlines, approvals and a full record — fits wherever claims and returns cost real money.

Logistics & Distribution

Freight claims

Damage reports, BOLs and PODs from carriers and customers in one queue, with filing deadlines and evidence attached to each claim.

See AI document extraction
B2B Manufacturing

Warranty returns

Return requests matched to orders and serial numbers, routed for technical inspection, with supplier credits tracked to closure.

Explore Custom CRM architecture
Construction & Field Services

Callbacks & complaints

Customer complaints linked to the original job, technician and materials, with a rule calculated by code on who pays for the return visit.

Explore Construction & Field Service workflows
See how AI can sort and match claim documents (BOLs, PODs, receipts):
Ownership

What a client would own

We build software for you to own, not to rent back from us.

Code in your repository

Under your organization's Git account with full commit history.

Deployment on your cloud

AWS, DigitalOcean, Hetzner, or your own dedicated private servers.

Direct infrastructure billing

Hosting and API costs billed straight to your accounts at provider prices, with no markup and no per-seat fees from us.

Maintainable documentation

Architectural blueprints and runbooks so any competent in-house or outside team can maintain and extend it.

We sign a mutual Non-Disclosure Agreement (NDA) before you share any internal operations or customer data.
Next step

Claims, disputes or returns spread across too many places?

Book a 30-minute call. Show us where cases come from and who approves them — we'll tell you whether a shared queue, a few rules in your current tools, or nothing at all is the right fix.

Prefer email? Reach us at info@solvilab.com

Fixed price agreed before build
100% code ownership
Live overlap 9 AM – 1 PM ET