ResReturn
LAUNCH EDITION 01 — SPRING 2026

A return is a signal, not a cost.

The same brain that measures the return recommends the next size. Exchange-first resolutions, EU-ready withdrawal, and a live fit-graph — across whatever powers your checkout.

legal_basis: withdrawal · FIT_TOO_SMALL_SHOULDER · outcome=EXCHANGE_FIRST

app.resreturn.com

Returns overview

Last 12 weeks · all stores

SearchExport
FRR20%
0.0%
Revenue kept3.2×
0.0k
Exchange rate11%
0%
Fit-related return rate▼ trending down
Resolution mix
61%exchanged
Top return reasons
Too small34%
Too large21%
Changed mind16%
Quality9%
KEY FINDINGS · MEASURED, NOT MODELED
0
TS tests green on the Shopify build (+15 Python)
0
backend + portal tests green after Ticimax
~2,000
historical Shopify orders + refunds backfilled
0
live Ticimax order statuses pulled in first smoke
>95%
target size-exchange success rate
−10–20%
target drop in fit-related return rate (1–2 seasons)

The product — not stock photos

app.resreturn.com

Returns overview

Last 12 weeks · all stores

SearchExport
FRR20%
0.0%
Revenue kept3.2×
0.0k
Exchange rate11%
0%
Fit-related return rate▼ trending down
Resolution mix
61%exchanged
Top return reasons
Too small34%
Too large21%
Changed mind16%
Quality9%
DASHBOARD
Withdraw from contractEU 2023/2673
  1. Find your order

    order #2048 · maria@mail.com
  2. 2

    Confirm withdrawal

    No reason required — by law.

Two steps · login-free · legally compliant

WITHDRAWAL
Start a return
live

Merino Crew Knit

Stone · Size M · €89

Why are you returning?

Size & fit
Wrong item
Quality issue
Changed my mind
Continue
PORTAL
Signal strengthWeight
T2+
Size exchange, kept
1.00
T2
Labeled fit error
0.95
T1
Confirmed fit
0.70
T0
Size override, tracked
0.55
T3
Anonymous fit error
0.40
T4
Silent keep
0.15
EX
Non-fit return
0.04
FIT-LADDER
Instant credit · live5 min, no warehouse wait

Label scanned

Carrier first-scan

09:41

€58 credit issued

Instant, risk-checked

09:41

Re-shopped

Spent €72 in store

09:46

INSTANT-CREDIT

Data sourced from live Shopify + Ticimax installs

ShopifyTicimaxikasWooCommerceT-SoftMagentoideasoftCustom APIShopifyTicimaxikasWooCommerceT-SoftMagentoideasoftCustom API
The argument

A refund is a sale you already lost.

Most returns tools optimize for fast refunds. That is the wrong goal — every refund hands cash back, ends the relationship, and drops the reason into a free-text box nobody reads.

ResReturn treats a return as the highest-quality signal a store gets — resolved as an exchange or credit, with the reason captured as a structured machine code. The architecture is the argument.

Explore the platform
Live demo

See it the way your customer does.

No video, no sales call — return a real garment yourself and watch the exchange-first ladder, the fit body-map, and the captured signal work end to end.

  • Pick a reason, then pinpoint the fit issue on the body-map
  • Resolve with exchange, bonus store credit, or a discount code
  • Every choice becomes a structured fit-signal — not free text
01Resolve

Every resolution that keeps the sale ranks above the one that loses it — refund is the last rung, by design.

REFUND ranked last · EXCHANGE_SAME · EXCHANGE_ADVANCED · KEEP_ITEM

Start a return
live

Merino Crew Knit

Stone · Size M · €89

Why are you returning?

Size & fit
Wrong item
Quality issue
Changed my mind
Continue

Exchange-first outcome ladder

Resolutions surface in revenue-protecting order: right size, swap variant, swap product, store credit with bonus, refund last. Each rung is configurable per policy, product, and legal basis.

Exchange-same & exchange-advanced

EXCHANGE_SAME swaps to another variant of the same style; EXCHANGE_ADVANCED swaps for a different product. Both feed the bracketing signal rather than counting as a plain return.

Store credit + bonus & combined

Credit can carry a bonus to nudge keep-the-value outcomes, and pair with a customer-locked code so the two together equal the purchase value.

Discount code (customer-locked)

A code bound to the specific customer, delivered by mail with one-tap apply. Live on Shopify; Ticimax maps it to HediyeCekiOlustur.

Keep-it / returnless (KEEP_ITEM)

For low-value or high-cost-to-ship orders the shopper keeps the item. The fit signal is captured at submit, not at received — so nothing is lost when the parcel never comes back.

Shop-nowPlanned

SHOP_NOW lets the shopper spend recovered credit before the parcel is even back in the warehouse.

02The Loop

The system that measures the return and the system that recommends the size are the same brain — every outcome (kept, returned, changed) is its label.

T2_LABELED_ERROR weight 0.95 > T1_CONFIRMED weight 0.70 · 5 returns → meaningful deviation

app.resreturn.com

Returns overview

Last 12 weeks · all stores

SearchExport
FRR20%
0.0%
Revenue kept3.2×
0.0k
Exchange rate11%
0%
Fit-related return rate▼ trending down
Resolution mix
61%exchanged
Top return reasons
Too small34%
Too large21%
Changed mind16%
Quality9%

Tiered fit-signal capture (T0–T4)

Every signal is scored on body-side certainty × outcome-label clarity into T2+, T2 (labeled error — highest learning), T1, T0, T3, T4 or EXCLUDE, each with its own model weight from 1.00 down to 0.

Live fit-graph (core IP)

Each garment holds a body-area 'true measurement + ease' distribution, so output is a per-area fit-probability profile — 'shoulder 85% ideal, waist may run 60% tight' — not a single size.

Hierarchical pooling cold-start

A global → brand → category → fit-block → style → size hierarchy lets a new product borrow a prior from its tech pack, then update as signals arrive — meaningful deviation from as few as 5 returns.

Beta-Binomial posterior engine (v0)

A conjugate Beta-Binomial posterior per node × size × body_area × direction, in pure TypeScript behind a port; v1 extracts it to a Python hierarchical-Bayes service with no interface change.

Audience-focused fit layerPlanned

A TR audience fits a garment differently than an EU one, so each node keeps a separate posterior per audience segment, falling back up the pool when a segment is sparse.

T3 → T2 promotion loopPlanned

An anonymous returner is offered '30 seconds to enter your measurements' in the portal; accepting upgrades the record to T2 and creates a new user — a growth channel folded into the return flow.

01

The shopper starts a return

A branded, login-light portal. They tap an item and a reason — and ResReturn captures it as a structured signal, not a free-text blob.

Start a return
live

Merino Crew Knit

Stone · Size M · €89

Why are you returning?

Size & fit
Wrong item
Quality issue
Changed my mind
Continue
02

ResReturn resolves it

The outcome ladder steers toward an exchange or store credit. Instant credit can fire the moment the parcel is scanned.

Instant credit · live5 min, no warehouse wait

Label scanned

Carrier first-scan

09:41

€58 credit issued

Instant, risk-checked

09:41

Re-shopped

Spent €72 in store

09:46

03

Revenue stays in

An exchange keeps the sale. Bonus credit and Shop-Now turn a refund request into another order — automatically.

Revenue kept · this quarter
0.0k
+3.2× vs. refund-default
61%exchanged
Exchanged61%
Store credit22%
Refunded17%
04

Your store learns

Every outcome flows into analytics, surfacing the products and reasons that quietly drain margin — so the next order is better.

Refund rate · 10 wk−24%
Reason hotspots
Too small34%
Too large21%
Changed mind16%
03Compliance

The EU withdrawal button is mandatory from 19 June 2026 — we ship it as a standalone free SKU, no reason asked, exactly as the law requires.

Dir. 2023/2673 · effective 2026-06-19 · legal_basis: withdrawal | goodwill | warranty | recall

Withdraw from contractEU 2023/2673
  1. Find your order

    order #2048 · maria@mail.com
  2. 2

    Confirm withdrawal

    No reason required — by law.

Two steps · login-free · legally compliant

EU withdrawal button (Dir. 2023/2673)Planned

A login-free, two-step withdrawal function, mandatory for every online seller into the EU from 19 June 2026, shipped as a free SKU plus a drop-in site snippet. No reason asked.

legal_basis routingPlanned

Every return carries a legal_basis of withdrawal, goodwill, warranty, or recall, and the policy engine applies a different rule set per basis — final-sale rules can't override the legal right.

Grading & disposition (ESPR)Planned

Under the ESPR destruction ban (19 July 2026), grading and disposition become a compliance surface; the disclosure report ships in the Compliance & Reporting module.

DPP-ready garment provenancePlanned

The Digital Product Passport (~2028) is targeted as a legitimacy source for fit-graph cold-start priors from garment data.

PII consent & retention for fit data

Body measurements are special-category PII: explicit consent, a retention period, and a deletion path under KVKK/GDPR. The fit-graph stores only aggregates — never a personal measurement on a node.

04Intelligence

Analytics points at the product that drives returns; fraud-flagged returns are auto-excluded from the fit-graph so they can't poison it.

fraud_flagged → EXCLUDE from fit-graph · FRR ↓10–20% · size-exchange >95% · other <10%

app.resreturn.com/analytics
Fit-related return rate

Returns analytics read-model

FRR, size-exchange success, body-area hotspots, and recommendation accuracy as a clean read-model — return-rate and recovered-revenue dashboards, reason hotspots by product, cohort breakdowns, not a CSV.

Fraud v0 + signal protectionPlanned

A rule-based score over velocity, amount, and pattern with auto / instant-credit-off / flagged thresholds. Critically, flagged returns are auto-EXCLUDED from the fit-graph to prevent poisoning.

Instant credit on first scanPlanned

The moment a carrier scans the label, store credit can release so the shopper re-spends immediately — threshold-gated with automatic clawback if the parcel never arrives. Cites 76% consumer preference.

Recommendation-accuracy tracking

The return-free rate of shoppers who took the recommended size, tracked as a direct measure of model quality.

Pre-purchase bracketing nudgePlanned

When a cart holds the same SKU in 2+ sizes, a 'you're 92% an M' intervention fires, measured by a bracketing_prevented ROI metric.

Signal strengthWeight
T2+
Size exchange, kept
1.00
T2
Labeled fit error
0.95
T1
Confirmed fit
0.70
T0
Size override, tracked
0.55
T3
Anonymous fit error
0.40
T4
Silent keep
0.15
EX
Non-fit return
0.04
05Platform

A new platform is a new adapter — the CommercePort core never changes.

CommercePort · OutcomePort · CarrierPort · tenant→adapter registry

The loopFit
graph
Return
Resolve
Retain
Learn

CommercePort adapter core

A platform-blind CommercePort (lookupOrder, availableSizes, variantIdForSize, restock, listProducts) means a new platform is a new adapter and the core never changes.

Shopify integration

A public unlisted Shopify app with OAuth install, a customer-account UI extension, ~2,000 historical orders backfilled, and live returns/* webhooks feeding T3 fit signals.

Ticimax adapter (SOAP)

A from-scratch SOAP 1.1 adapter implementing CommercePort + OutcomePort; a live smoke pulled 23 order statuses and injected a storefront button on the real account.

OutcomePort abstraction

One OutcomePort contract lets return-closing, store-credit, discount, and exchange write-backs work across Shopify and Ticimax.

CarrierPort for labels & trackingPlanned

A platform-independent CarrierPort (createLabel, tracking) so carrier integrations are written once and used by every commerce adapter; Shipink primary.

ikas / WooCommerce / T-Soft / customPlanned

Additional platforms sit behind the same internal port; ikas and WooCommerce are next, with T-Soft and a generic webhook + script-tag adapter for headless commerce.

Modular monolit

One deployable, schema-per-module Postgres — eight schema-isolated modules talking only through ports + an in-process event bus, fed externally from a transactional outbox.

Idempotent HMAC webhooks

An outbox dispatcher with HMAC signing, retry + DLQ, and idempotency keys keeps returns, inventory, and credit in lockstep with no manual reconciliation.

Clean REST API + typed SDK

A REST API with idempotency keys, an OpenAPI spec, and a typed SDK — POST /v1/portal/returns returns revenue_kept. Build a fully custom flow on the headless core.

Shopify
Ticimax
ikas
WooCommerce
T-Soft
Magento
ideasoft
Custom API
Returns shouldn't be where commerce leaks. The whole industry optimized for the wrong thing — fast refunds — when the return is the most honest signal a store ever gets.
The ResReturn thesis · Edition 01
Start in minutes

Make your returns work for you.

Connect your store, drop in the portal, turn refunds into retained revenue. The EU withdrawal button is free for everyone, forever. No card, no lock-in.

Launch Edition 01 · Set in Fraunces & Hanken Grotesk · EU 2023/2673 ready

Click me