RTO Prevention & NDR

Standardized NDR Reason Codes API

Convert ambiguous courier non-delivery reports into structured reason codes. Trigger instant customer outreach and reduce return to origin (RTO) rates.

The Challenge with Courier NDRs

When a doorstep delivery fails, logistics partners log varied text remarks across different portals and formats. Without a unified classification, e-commerce brands cannot reliably automate customer follow-ups before couriers initiate return-to-origin procedures.

Normalized Reason Code Enums

ClearTrack maps courier event descriptions to strict, predictable reason code enums:

Reason Code Category Description Automated Action
customer_unavailable Customer Unavailable Recipient was not available at the delivery address or did not answer the phone. Send automated WhatsApp/SMS message to confirm availability for the next attempt.
address_issue Address Issue Incomplete address, missing landmark, or incorrect pin code. Request address confirmation link from the customer before RTO is initiated.
refused Customer Refused Recipient refused the parcel or rejected Cash on Delivery payment. Alert support team to confirm order cancellation before the shipment returns.
premises_closed Premises Closed Office, storefront, or residential premises were closed or locked. Verify operating hours or request an alternate delivery contact number.
cod_not_ready COD Payment Not Ready Cash on Delivery payment was not ready or doorstep collection failed. Send digital payment link or inform customer of exact cash required.
other Operational Exception Courier operational constraint, weather hold, or local restriction. Monitor for next business day delivery re-attempt.

cURL Integration Example

cURL GET /v1/track/delhivery/:awb
curl -s -H "X-API-Key: ct_live_your_api_key" \
  "https://api.cleartrackpromise.in/v1/track/delhivery/1000000000001"

Illustrative Response with Delivery Attempts

JSON (Illustrative Example) 200 OK
{
  "tracking_number": "IN100000003IN",
  "carrier": "indiapost",
  "status": "exception",
  "delivery_attempts": {
    "count": 1,
    "attempts": [
      {
        "at": "2026-10-08T16:20:00.000Z",
        "outcome": "failed",
        "reason_code": "customer_unavailable",
        "reason_text": "Door Closed / Customer Not Available"
      }
    ]
  },
  "insights": {
    "transit_days_elapsed": 2.3,
    "hours_since_last_scan": 1.7,
    "is_stuck": false,
    "is_late_vs_carrier_edd": null,
    "delay_days_vs_carrier_edd": null,
    "hub_count": 2,
    "current_stage": "delivery_attempted",
    "requires_attention": true,
    "attention_reason": "failed_attempt",
    "benchmark": {
      "median_transit_days_for_route": null,
      "sample_size": null,
      "expected_delivery_by": null
    }
  }
}

For technical field definitions and code samples, see the NDR Codes Documentation, view prepaid lookup plans, and read the Tracking Field Reference.

Frequently Asked Questions

What is an NDR reason code in ClearTrack?

An NDR (Non-Delivery Report) reason code is a standardized enum that categorizes why a delivery attempt was unsuccessful, converting raw courier remarks into actionable machine-readable codes.

How do standardized NDR codes help reduce RTO?

Instead of waiting for manual updates, automated systems can read the specific reason code (such as address_issue or customer_unavailable) and instantly trigger customer communication to resolve the issue before return to origin.

Which courier partners provide NDR data?

ClearTrack standardizes delivery attempt outcomes across all supported logistics partners into the same structured delivery_attempts array.

Are delivery attempt timestamps included?

Yes. Every attempt entry in the delivery_attempts array includes an ISO 8601 timestamp, the outcome flag, and the classified reason code.

Automate NDR Workflows Today

Sign up for a free 14-day trial with 100 test lookups. Reduce RTO with structured non-delivery intelligence.

Start Free Trial View Prepaid Plans Enterprise Sign Up