India-specific metric

RTO rate

The share of shipped orders that come back to you undelivered. It moves with payment method, pincode and, most importantly for marketers, with the campaign that brought the order in.

Source: Shipping partners, ShopifyComputed: Per order, by order dateBetter when: LowerAlso called: Return to origin, RTO %
Formula
RTO rate =
RTO orders
รท Shipped orders

Counted on orders that have resolved. Orders still in transit are left out until they're delivered or returned.

Updated November 2026 ยท 6 min read
01

What is RTO rate?

RTO, or return to origin, is an order that was shipped but never delivered. The customer refused it, wasn't reachable, or gave a wrong address, and the courier brought it back. You pay shipping both ways and earn nothing.

Most of it comes from cash on delivery, where the customer has nothing at stake until the parcel arrives. That's why RTO is a marketing metric too: the campaigns, offers and audiences you scale decide how many uncommitted COD orders you bring in.

CancellationStopped before it ships. Costs little.
RTOShipped, never delivered. Two-way shipping, no revenue.
ReturnDelivered, then sent back. Usually a product or fit issue.
02

How it's calculated

The formula is simple. The hard part is joining courier status back to the order, and then to the campaign that drove it.

InputSourceUsed for
shipment_statusShipping partner, by order IDDelivered, RTO or in transit
payment_methodShopify orderCOD vs prepaid split
pincodeShipping addressCity tier and region split
sourceAttribution dataRTO by channel, campaign and ad
RTO rateRTO orders รท Resolved shipped ordersResolved means delivered or returned to origin.
RTO revenue shareRTO order value รท Shipped order valueUseful when high-value orders behave differently from small ones.
Cost of RTORTO orders ร— (Forward + Return shipping + Damage)What it actually costs you. Feeds into CM1.
Why divide by shipped orders, not placed orders?Cancellations before dispatch are a separate problem with a separate cost. Mixing them in hides whether the issue is your confirmation step or your delivery. Track both, but keep them apart.
03

Tracking it over time

RTO arrives late. An order placed today may take days to weeks to come back. If you calculate this week's RTO rate on this week's orders, most of the RTO hasn't happened yet and the number looks far too good.

  1. 1Cohort by order dateAttach each RTO to the day the order was placed and the campaign that drove it.
  2. 2Only count resolved ordersLeave in-transit orders out of both the top and bottom of the ratio.
  3. 3Watch the resolved shareA day with only half its orders resolved is an early read. Show it as provisional.

BooleanMaths merges shipping partner data with Shopify orders at order ID, so every RTO can be traced back to the channel, campaign and ad that brought it in.

04

Worked examples

Example 1: One month, split by payment and city tier

An illustrative brand ships 10,000 orders in a month, all now resolved. The overall rate hides very different segments.

SegmentShippedRTORTO rate
Prepaid, all cities4,0001203.0%
COD, tier 13,00045015.0%
COD, tier 22,00044022.0%
COD, tier 3 and beyond1,00030030.0%
All orders10,0001,31013.1%
RTO rate by segmentSegmentOverall
PrepaidCOD tier 1COD tier 2COD tier 3+Overall
  • 13.1%The overall number sounds manageable, but it blends a 3% segment with a 30% one.
  • Tier 3 CODNearly one in three orders comes back. A campaign that skews towards these pincodes will look cheap per order and expensive per delivery.

Example 2: The cheaper campaign that wasn't

Two illustrative prospecting campaigns, judged once all their orders have resolved.

Campaign A ยท flat 40% offRTO 24%
COD share80%
CPA, placedโ‚น300
CPA, deliveredโ‚น416
โ‚น3,00,000 spend, 1,000 orders placed, 950 shipped, 228 came back. Only 722 delivered.
Campaign B ยท UGC with prepaid offerRTO 9%
COD share40%
CPA, placedโ‚น339
CPA, deliveredโ‚น385
โ‚น2,10,000 spend, 620 orders placed, 600 shipped, 54 came back. Looks 13% pricier per order, ends up 7% cheaper per delivery.
05

Using RTO rate to decide

Compare each campaign's RTO rate with your own account average rather than an industry figure. The rows below are starting points.

Healthy
You seeCampaign RTO at or below your account average.
Do thisJudge it on delivered ROAS and scale as usual.
Watch
You seeRTO creeping up after a budget increase or a new offer.
Do thisScaling is reaching less committed buyers. Check COD share and the pincode mix of new orders.
Act now
You seeA campaign's RTO well above the account average, with delivered CPA above target.
Do thisChange the offer or creative, add a prepaid incentive or COD confirmation, or exclude the worst pincodes.
06

Common mistakes

  • Reading this week's RTOMost of it hasn't come back yet. Use resolved orders only.
  • Treating it as an ops problem onlyOffers, audiences and creatives drive RTO as much as couriers do.
  • One brand-wide numberBreak it out by payment method, pincode tier and campaign, or you can't act on it.
  • Killing COD outrightMany good customers only buy on COD. Fix the worst segments instead of removing the option for everyone.
07

Frequently asked questions

What is a good RTO rate?

It depends heavily on your category, price point and COD share. Benchmark against your own prepaid orders and your best campaigns, then work to bring the outliers down.

Can ad platforms see RTO?

Not by default. The purchase event fires at checkout, so Meta and Google count an RTO order as a sale and keep optimising towards people like that buyer.

Why does RTO differ so much between campaigns?

Different creatives and offers attract different intent. Heavy discounts and impulse hooks tend to bring in buyers who are more likely to refuse the parcel when it arrives.

See RTO by campaign, not just by courier

BooleanMaths joins your shipping partners' data to every order and the ad that drove it, so you can see which campaigns bring in orders that actually get delivered.

India-specific metric

RTO rate

The share of shipped orders that come back to you undelivered. It moves with payment method, pincode and, most importantly for marketers, with the campaign that brought the order in.

Source: Shipping partners, ShopifyComputed: Per order, by order dateBetter when: LowerAlso called: Return to origin, RTO %
Formula
RTO rate =
RTO orders
รท Shipped orders

Counted on orders that have resolved. Orders still in transit are left out until they're delivered or returned.

Updated November 2026 ยท 6 min read
01

What is RTO rate?

RTO, or return to origin, is an order that was shipped but never delivered. The customer refused it, wasn't reachable, or gave a wrong address, and the courier brought it back. You pay shipping both ways and earn nothing.

Most of it comes from cash on delivery, where the customer has nothing at stake until the parcel arrives. That's why RTO is a marketing metric too: the campaigns, offers and audiences you scale decide how many uncommitted COD orders you bring in.

CancellationStopped before it ships. Costs little.
RTOShipped, never delivered. Two-way shipping, no revenue.
ReturnDelivered, then sent back. Usually a product or fit issue.
02

How it's calculated

The formula is simple. The hard part is joining courier status back to the order, and then to the campaign that drove it.

InputSourceUsed for
shipment_statusShipping partner, by order IDDelivered, RTO or in transit
payment_methodShopify orderCOD vs prepaid split
pincodeShipping addressCity tier and region split
sourceAttribution dataRTO by channel, campaign and ad
RTO rateRTO orders รท Resolved shipped ordersResolved means delivered or returned to origin.
RTO revenue shareRTO order value รท Shipped order valueUseful when high-value orders behave differently from small ones.
Cost of RTORTO orders ร— (Forward + Return shipping + Damage)What it actually costs you. Feeds into CM1.
Why divide by shipped orders, not placed orders?Cancellations before dispatch are a separate problem with a separate cost. Mixing them in hides whether the issue is your confirmation step or your delivery. Track both, but keep them apart.
03

Tracking it over time

RTO arrives late. An order placed today may take days to weeks to come back. If you calculate this week's RTO rate on this week's orders, most of the RTO hasn't happened yet and the number looks far too good.

  1. 1Cohort by order dateAttach each RTO to the day the order was placed and the campaign that drove it.
  2. 2Only count resolved ordersLeave in-transit orders out of both the top and bottom of the ratio.
  3. 3Watch the resolved shareA day with only half its orders resolved is an early read. Show it as provisional.

BooleanMaths merges shipping partner data with Shopify orders at order ID, so every RTO can be traced back to the channel, campaign and ad that brought it in.

04

Worked examples

Example 1: One month, split by payment and city tier

An illustrative brand ships 10,000 orders in a month, all now resolved. The overall rate hides very different segments.

SegmentShippedRTORTO rate
Prepaid, all cities4,0001203.0%
COD, tier 13,00045015.0%
COD, tier 22,00044022.0%
COD, tier 3 and beyond1,00030030.0%
All orders10,0001,31013.1%
RTO rate by segmentSegmentOverall
PrepaidCOD tier 1COD tier 2COD tier 3+Overall
  • 13.1%The overall number sounds manageable, but it blends a 3% segment with a 30% one.
  • Tier 3 CODNearly one in three orders comes back. A campaign that skews towards these pincodes will look cheap per order and expensive per delivery.

Example 2: The cheaper campaign that wasn't

Two illustrative prospecting campaigns, judged once all their orders have resolved.

Campaign A ยท flat 40% offRTO 24%
COD share80%
CPA, placedโ‚น300
CPA, deliveredโ‚น416
โ‚น3,00,000 spend, 1,000 orders placed, 950 shipped, 228 came back. Only 722 delivered.
Campaign B ยท UGC with prepaid offerRTO 9%
COD share40%
CPA, placedโ‚น339
CPA, deliveredโ‚น385
โ‚น2,10,000 spend, 620 orders placed, 600 shipped, 54 came back. Looks 13% pricier per order, ends up 7% cheaper per delivery.
05

Using RTO rate to decide

Compare each campaign's RTO rate with your own account average rather than an industry figure. The rows below are starting points.

Healthy
You seeCampaign RTO at or below your account average.
Do thisJudge it on delivered ROAS and scale as usual.
Watch
You seeRTO creeping up after a budget increase or a new offer.
Do thisScaling is reaching less committed buyers. Check COD share and the pincode mix of new orders.
Act now
You seeA campaign's RTO well above the account average, with delivered CPA above target.
Do thisChange the offer or creative, add a prepaid incentive or COD confirmation, or exclude the worst pincodes.
06

Common mistakes

  • Reading this week's RTOMost of it hasn't come back yet. Use resolved orders only.
  • Treating it as an ops problem onlyOffers, audiences and creatives drive RTO as much as couriers do.
  • One brand-wide numberBreak it out by payment method, pincode tier and campaign, or you can't act on it.
  • Killing COD outrightMany good customers only buy on COD. Fix the worst segments instead of removing the option for everyone.
07

Frequently asked questions

What is a good RTO rate?

It depends heavily on your category, price point and COD share. Benchmark against your own prepaid orders and your best campaigns, then work to bring the outliers down.

Can ad platforms see RTO?

Not by default. The purchase event fires at checkout, so Meta and Google count an RTO order as a sale and keep optimising towards people like that buyer.

Why does RTO differ so much between campaigns?

Different creatives and offers attract different intent. Heavy discounts and impulse hooks tend to bring in buyers who are more likely to refuse the parcel when it arrives.

See RTO by campaign, not just by courier

BooleanMaths joins your shipping partners' data to every order and the ad that drove it, so you can see which campaigns bring in orders that actually get delivered.