E-commerce

Returns that do not need an email thread:
a self-service portal with a clear status at every step

A return process run entirely through email means every request needs a person to read it, decide if it qualifies, and manually trigger a refund. That is slow for the shopper, and it does not scale past a small order volume.

from$3,000
Timeline4 to 8 weeks
What is includedSelf-service return request with policy rules enforced automaticallyStatus tracking the shopper can check without emailing supportAutomatic refund or store-credit issuance once a return is receivedExchange flow for size or variant swapsReturn reason tracking for product-quality insight
fewer support emailstypical reduction in return-related support load once requests are self-service, benchmark
<48htypical refund processing time once a returned item is scanned in, benchmark
12,039 recordsscale of structured operational data we have migrated into a self-hosted system, real example

What self-service actually replaces

A returns and RMA portal lets a shopper start a return themselves, see their policy eligibility immediately, and track the status without a support email thread. The system enforces the actual return policy, time windows, condition requirements, excluded categories, automatically. No support agent has to remember every rule correctly every time.

The underlying pattern is the same structured-state-management problem we have solved in operational systems before. A self-hosted factory ERP we rebuilt holds over twelve thousand records, with clear state at every stage. A returns portal needs exactly that discipline: a request, a received item, a refund, each state unambiguous and auditable.

When email stops scaling

You need this once returns are a meaningful share of order volume and currently run through email or a generic contact form. Every single request then needs a person’s attention, no matter how routine it is. It becomes clearly worth it once return-reason data would actually be useful. Understanding why products come back is a real signal for product or sizing decisions, one an email inbox loses entirely.

You do not need a dedicated portal if return volume is low enough that a manual process genuinely works, and the team handling it is not overwhelmed. Building automation for a problem that is not yet painful just adds a system to maintain for marginal benefit.

The state machine behind every return

The core is a state machine. A return request moves through defined states: requested, approved, item received, refund or exchange issued, closed. Policy rules get checked automatically at the request step. An ineligible return is flagged before the shopper even submits it, not after a person reviews it days later.

Refunds trigger automatically once the returned item is confirmed received, through your payment provider’s refund API. Store credit is an alternative path, when that fits your policy better.

Exchanges follow a similar flow, but route to a new order rather than a refund. That keeps the connection between the original and replacement order clear for reporting.

Where a case genuinely needs human judgment, a borderline condition dispute, a policy exception, it routes to an admin queue with full context attached. Not every return has to go through a person. Only the ones that actually need one do.

Where returns portals go wrong

Return fraud, items returned in worse condition than described, or policy abuse through repeated borderline requests, is a real pattern. We guard against it with photo evidence requirements and reason tracking, not just by trusting every self-service request.

The other consideration is automating refunds too aggressively, before an item is actually confirmed received. That creates a different kind of loss. The state machine has to enforce the right order of operations, even under pressure to move fast.

Communication timing matters as much as the automation itself. A shopper who submits a return and hears nothing for days will email support anyway, defeating the point of self-service. We build status updates to trigger at each state change, received, approved, refunded, so the shopper always knows where things stand without needing to ask.

Price and timeline

Option Price What it covers Timeline
Self-service requests from $3,000 Request flow, status tracking, policy enforcement 4 to 5 weeks
Portal with automatic refunds from $6,000 Automatic refund and store credit issuance 5 to 7 weeks
Portal with exchanges and shipping from $9,000 Full build with exchange flow and return labels 7 to 8 weeks

Running cost is usually $15 to $35 a month in hosting, separate from your payment provider’s refund processing fees.

This pairs with order management system, since returns are a direct extension of order lifecycle tracking. It also pairs with inventory and warehouse management for returned stock that needs to go back into inventory correctly. See the development service page for package details. For real structured operational systems we have built, see the factory ERP recovery case study.

Still processing returns through an email inbox? Get in touch and we will look at your current return volume first.

FAQ

How much does a returns portal cost?

From $3,000 for self-service requests and automatic refund logic on an existing store. $6,000 to $10,000 is typical when exchanges, store credit, and shipping label integration are added.

How long does it take?

4 to 8 weeks depending on how many return policies, exchange rules, and provider integrations are involved.

What is the stack?

FastAPI and PostgreSQL for the return request state machine, and a Next.js self-service portal embedded in or linked from your storefront. We also integrate with your payment provider for refunds, and your delivery provider for return labels.

Who owns the returns data?

You. Return requests, reasons and outcomes live in your own database. That also means you can actually analyze return reasons for product-quality insight, instead of losing that data in an email inbox.

Who maintains it after launch?

The state machine and automatic refund logic run unattended. Policy rules need updates as your return policy evolves, done through the admin panel without a developer.

Start here

Tell us the problem.
We bring the system.

A 30-minute call, then a written plan with numbers within 48 hours. No obligation. If we are not the right fit, we will say so and point you to someone who is.

LIKE WHAT YOU SEE?

This site is our work.
Want one like it?

Ten languages, no page builder, launched in 2026 by a team working since 2015. We can build the same quality into your site.

  • 10 languages
  • Since 2015
Get a site like this →