← all articles

How to keep your Shopee Days-to-Ship rate healthy

Every Shopee order comes with a Ship by date, and that date is driven by the Days-to-Ship (DTS) you set on the listing. Hand the parcel to the courier after it and the order counts as late. Enough late orders push your Late Shipment Rate over target, and that is one of the things that adds penalty points to your shop. A seller asked about this on r/ShopeePH, so here is the direct answer: get every parcel to the courier before the Ship by date on the order, and build your day so that doesn’t depend on you remembering.

This is for small and mid-size sellers who pack their own orders or run one or two packers, mostly in the Philippines and Singapore. The menu names below come from the Philippines Seller Centre and can differ elsewhere. I’m not affiliated with Shopee. As of September 2026 the target percentages differ by market and can change, so I don’t quote them here. Read the number on your own Account Health page.

By the end you’ll have DTS set honestly on your listings, a fixed daily handover routine, a short script that flags orders about to go late, and a weekly review that finds the cause when one does. It won’t fix a courier that sits on parcels. It will show you which late orders were yours.

What you need

  • A Shopee seller account with Seller Centre access. If you haven’t set one up yet, start with how to become a Shopee seller in the Philippines.
  • A courier channel enabled in your shop, such as SPX Express or J&T Express in the Philippines.
  • An A6 thermal label printer for waybills. Xprinter and Munbyn are common budget brands, prices vary, so check current listings.
  • A table used only for packing, plus mailers and boxes bought before you need them.
  • Python 3 (free) or a spreadsheet, for the ship-by check.
  • Optional: a Shopee Open Platform developer account, if you want to pull orders by API instead of exporting them.
  • Cost: nothing beyond packing gear and the printer. Setup takes an afternoon.

Step by step

1. Read your real number

Open Seller Centre and go to Account Health (use the search box if the menu has moved). Write down your Late Shipment Rate, the target beside it, and any penalty points you already hold. Screenshot it with the date. Then read the metric definition, because it decides when the clock stops. As I read it, the clock stops at the courier’s first scan, not when you tap Arrange Shipment. Confirm that wording for your market. For the wider penalty picture see how Shopee penalty points work.

Expected output: a dated screenshot with your rate, the target and your current points.

If it breaks: if there is no late shipment figure yet, the shop may be too new for the metric to show. Set the routine up anyway.

2. Set DTS honestly on every listing

In My Products, check the DTS on each listing. Standard listings should carry the standard DTS. Don’t flip a listing to pre-order to buy yourself extra days. Pre-order is for stock you don’t have yet or items made after the order, and Shopee also tracks pre-order listings in Account Health, so look for that figure and its target too. A long DTS shows on the listing and buyers read it, which costs you conversion. I covered that side in how to improve conversion rate as a new Shopee seller. Use Mass Update to change many listings at once.

Expected output: a DTS on every listing that matches what you can actually do.

If it breaks: some categories limit which DTS you can choose. The Shopee Seller Education Hub lists the rules for your category and market.

3. Fix stock before it becomes late orders

An order for something you don’t have can’t ship, so it turns into a late shipment or a cancellation. Count the shelf against Seller Centre stock once a week, keep a buffer of one or two units on fast movers, and if you sell on more than one platform use an inventory sync tool. BigSeller and Ginee are two that sellers in Southeast Asia use. Check their current pricing and platform support yourself.

Expected output: on a spot check of ten SKUs, the shelf count equals the listing stock.

If it breaks: the usual suspects are returns that never got restocked and bundles that don’t deduct their components.

4. Set one daily cut-off and one courier handover

Pick a time each day when you stop adding orders to the pack queue, and a courier pickup after it. Print every waybill in one go with the bulk print option in To Ship, pack, and hand over. Once you pass a handful of parcels a day I prefer scheduled pickup over walking to a drop-off point. Some sellers will argue drop-off is more reliable, and if your pickup keeps failing they’re right. Check the pickup window in your shipping settings, not from memory, because couriers change them.

Expected output: everything paid before cut-off leaves the same day.

If it breaks: if a pickup is missed, drop the parcels off yourself that day at an SPX or J&T point rather than waiting for tomorrow’s pickup.

5. Run a ship-by check twice a day

Export your To Ship orders from Seller Centre into a CSV with three columns: order_id, status, ship_by. The real export uses different column names, so rename them to match. Then run this:

# ship_by_check.py   usage: python ship_by_check.py orders.csv
import csv, sys
from datetime import datetime, timedelta

WARN_HOURS = 12  # flag anything due inside this window
now = datetime.now()
rows = []

with open(sys.argv[1], newline="", encoding="utf-8") as f:
    for r in csv.DictReader(f):
        if r["status"].strip().lower() != "to ship":
            continue
        due = datetime.strptime(r["ship_by"], "%Y-%m-%d %H:%M")
        rows.append((due, r["order_id"]))

for due, oid in sorted(rows):
    left = due - now
    if left < timedelta(0):
        flag = "LATE"
    elif left < timedelta(hours=WARN_HOURS):
        flag = "DUE SOON"
    else:
        continue
    print(f"{flag:9} {oid}  ship by {due:%d %b %H:%M}")

Run it mid-morning and mid-afternoon, re-exporting each time. The export is manual, so this is a checklist, not automation. For a hands-off version, the Shopee Open Platform v2 order detail call (v2.order.get_order_detail) returns ship_by_date and days_to_ship per order, as far as I’ve read the docs. I haven’t re-checked those field names this month (September 2026), so confirm them before you build on it.

Expected output: one line per problem order, like the two below (the order numbers are placeholders).

LATE      240926ABC123  ship by 26 Sep 09:00
DUE SOON  240926DEF456  ship by 26 Sep 18:00

If it breaks: a ValueError from strptime means your export’s date format differs from %Y-%m-%d %H:%M. Copy the format straight from the CSV.

6. Decide exceptions before the deadline

Anything that can’t ship by its date (out of stock, an address you can’t read, a supplier running late) gets decided in the morning, not on the evening it is due. Message the buyer through Shopee chat and keep the conversation there. If you can’t ship, cancel with the honest reason. A cancellation counts on a different metric, non-fulfilment, so it isn’t free, but a late shipment followed by a cancellation is worse. Fast replies help here too, see how to improve chat response rate across stores.

Expected output: the due soon list is empty by mid-afternoon.

If it breaks: if a buyer hasn’t replied by your cut-off, make the call yourself. Don’t wait on them.

7. Plan for campaign days and days off

Volumes jump on 9.9, 10.10, 11.11, 12.12 and payday sales. Buy packaging two weeks before, pre-pack your fastest movers, and line up a temporary packer. For days off, look at Shopee’s vacation mode if your market has it, instead of leaving orders to age. Check in the Education Hub whether it affects orders already placed before you rely on it.

Expected output: no pile of unpacked orders at campaign midnight.

If it breaks: if you’re already behind, ship the oldest Ship by dates first, not the newest orders.

8. Review late orders every week

Once a week, list every order shipped late or nearly late and tag the cause: stock, packing, missed pickup, exception. A plain tally in a sheet is enough. Fix the biggest cause first. If a courier missed a pickup and you have the evidence, raise it with them, and check the Education Hub for how appeals work, since some penalties can be appealed and some can’t.

Expected output: a tally where one cause clearly leads.

If it breaks: if every cause has only one or two orders, your problem is volume, and the 100x section below is for you.

Common pitfalls

  • Treating Arrange Shipment as done. A waybill printed and a parcel sitting on your desk overnight is not a shipped order. The parcel has to be with the courier.
  • Padding DTS with pre-order. It makes your listing look slower, and it is tracked separately, so you trade one problem for two.
  • Counting days in your head. I don’t know how your market treats weekends and public holidays in the calculation, so read the Ship by date on the order instead of working it out.
  • Shipping in one weekly batch. An order placed early in the week can be due before your batch day arrives.
  • Opening a second shop to spread orders and dilute a bad rate. Shopee’s seller rules restrict running multiple shops to get around penalties, so treat it as off the table. Lazada and TikTok Shop have their own rules, read them before you try anything similar there. Fixing the process is cheaper than an account problem.

Scaling this

Take 10x, 100x and 1000x to mean roughly 10, 100 and 1000 parcels a day. Those are round numbers I picked, not Shopee tiers.

At 10x the sheet and script above are enough, with one person packing. The main risk is that person being off sick, so write the routine down.

At 100x, packing from memory starts causing misships. Add barcode scanning at the pack table, an order management tool (BigSeller or Ginee again), and pull orders by API instead of exporting. If staff need Seller Centre access, give them sub-accounts with limited permissions and don’t share your login. I wrote the Lazada version in how to give staff access in Lazada Seller Center. Shopee’s sub-accounts follow the same idea, but I haven’t tested Shopee’s permission screens for this article. Ask your courier about a second daily pickup.

At 1000x you’re running a warehouse. The bottleneck moves to inbound stock and courier capacity. Look at Fulfilled by Shopee where your market offers it, or a third-party fulfilment provider, and agree pickup times and volumes with the courier in writing. If you also sell on TikTok Shop, how TikTok Shop order fulfilment works for a new seller shows how a different platform runs the same deadline.

Where to go next

Written by Xavier Fok

disclosure: this article may contain affiliate links. if you buy through them we may earn a commission at no extra cost to you. verdicts are independent of payouts. last reviewed by Xavier Fok on 2026-09-26.

free download
Multi-store setup checklist for Shopee, Lazada and TikTok Shop

What each platform allows for running more than one shop, and what to set up per store, as of September 2026. Leave your email and we will also tell you when we publish a new guide, a few times a month at most.

from the team behind this site
A dedicated real phone for each store you run

cloudf.one hosts real Android phones in Singapore, each on its own persistent Singapore mobile IP, and you open them from the browser. Useful if you run Singapore stores and want one phone per store or brand instead of a drawer of handsets.

see how cloudf.one works →
read on
More from the desk

Store operations, platform rules, fees and pricing for Shopee, Lazada and TikTok Shop sellers, with dates on anything that can change.

browse all articles →