A skincare brand shipping 900 orders a month switched on convenience-store pickup, saw volume grow 40%, and three months later found the hole: an 8% uncollected rate at roughly NT$110 per parcel in round-trip freight and reverse-logistics handling, eating close to NT$40,000 a month. Finance could not trace the money — what ECPay remits never equals the order total.
What This Work Actually Involves
Shipping integration is not “one more dropdown at checkout.” At least seven modules:
- Store locator map: pick a store, return to your site, persist the store ID
- Shipment creation: tracking number and first-stage label
- Status callbacks: webhooks (shipped / arrived / collected / returned) drive the state machine
- COD and reconciliation: remittance = collected − freight − fees, matched line by line
- Reverse logistics: uncollected returns, customer returns, exchange reshipments
- Batch fulfilment: picking, labels, handover manifests, carton scanning
- Notification layer: arrival, uncollected, return notices
The first three take two weeks. The hours all sit in the fourth and fifth.
The Real Rates on Three Routes
Figures below come from the ECPay logistics fee overview and the ECPay fee schedule. Pre-tax; add 5% VAT at settlement.
| Route | Freight per parcel | COD handling fee | Size limit | Best fit |
|---|---|---|---|---|
| C2C store-to-store | 7-ELEVEN / FamilyMart NT$65; Hi-Life NT$55 | 0.75% (list 1%), minimum NT$3 | Longest side 45cm, sum 105cm, 10kg | Under 300 orders/month |
| B2C bulk warehouse | Ambient NT$55; 7-ELEVEN frozen NT$160 | Same | Same; frozen extra rules | 300+ orders/month, fixed dispatch window |
| T-Cat home delivery | Main island ambient from NT$130, NT$250 at the 150cm tier; chilled from NT$160 | NT$30 / 60 / 90 / 130 tiers | Sum of sides 150cm | Bulky, chilled, next-day |
| Chunghwa Post | Main island NT$80 up to 5kg, NT$145 up to 20kg | No COD | Sum of sides 150cm | Light small items, no COD |
Easily missed: C2C costs NT$10 more per parcel than B2C, which at 500 orders a month is NT$60,000 a year; and when a T-Cat COD parcel goes uncollected the seller absorbs return freight plus NT$30 per parcel.
Worth Building × When It Is Not
Worth it: 200+ orders a month, return rate above 3%, shipping cost allocated per order for margin, multi-channel fulfilment.
Not applicable:
- Under 50 orders a month → the ECPay console by hand is enough
- Unit price above NT$20,000 → COD and compensation ceilings will not hold
- Furniture, machinery, oversized goods → dedicated trucking, integration is pointless
- Cold chain and packaging unsolved → fix refrigeration before code
- Single marketplace only → the platform ships for you; your own build adds a ledger
Build Process: Five Phases, Six to Ten Weeks
| Phase | Time | Deliverables | Tools |
|---|---|---|---|
| 0 Fulfilment audit | 3–5 days | SOP, return scenarios, size distribution | Notion, Google Sheets |
| 1 Rate model | 3–5 days | Freight tiers, free-shipping threshold, margin model | Google Sheets |
| 2 Sandbox integration | 8–12 days | Store map, shipment creation, webhooks, state machine | ECPay logistics API docs, Laravel, Ngrok |
| 3 Reconciliation and reverse logistics | 10–15 days | Settlement report, uncollected flow, return documents | Laravel Queue, MySQL, Sentry |
| 4 Label test and pilot | 5–10 days | Certification, 20 real shipments, training | Laser printer, Loom |
Phase 4 is the one people forget: B2C requires printing a first-stage label and delivering it to the distribution centre within five days for certification; labels that fail are rejected on all future shipments.
Full Cost Breakdown
- Single carrier (C2C + B2C): NT$90,000–160,000, roughly 90–150 hours
- Adding T-Cat and Chunghwa Post (multi-carrier layer): NT$50,000–90,000
- Settlement reporting and reverse logistics: NT$60,000–120,000 (most cut, most added back)
- Flutter fulfilment app (scanning, batch printing, carton checks): from NT$120,000
- Hidden cost: your own LINE push at NT$1,500–4,000 a month (SMS is bundled into freight)
- Hidden cost: 2.75% on domestic credit cards, minimum NT$5, plus NT$1 order processing
- Hidden cost: contracted-seller setup NT$5,000 plus NT$5,000 a year for logistics service
- Monthly maintenance: from NT$8,000 (status monitoring, rate and policy updates)
ScriptWalker shipping integration starts at NT$90,000 (single carrier, with status webhooks and batch fulfilment); multi-carrier plus reconciliation from NT$180,000.
Implementation Reality vs Client Expectation
- Expectation: the API takes two weeks. Reality: shipment creation does; uncollected parcels and reconciliation take 70% of the hours.
- Expectation: what ECPay remits is what you earned. Reality: remittance is net — standard sellers Tuesdays, contracted sellers next-day — and without line-by-line matching there is always a gap.
- Expectation: uncollected parcels are the customer's problem. Reality: return freight and fees land on the seller.
- Expectation: size rules can live in a document. Reality: if checkout does not block them, packers find out on shipping day.
Seven Common Traps and Fixes
- Sizes not enforced in the cart → store dimensions and weight, auto-hide pickup when oversized
- No cost design around uncollected parcels → force prepayment after two, remind on day 3 and 5
- Webhooks not idempotent → key on return code plus order number
- Reconciling on totals only → settlement detail per parcel; alert on gaps above NT$100
- Sandbox store IDs in production → separate env vars, add a production allowlist
- Return documents not linked → make the original order the parent, record who bears return freight
- Nobody tracking policy changes → assign an owner to review the carrier handbook quarterly
90-Day Post-Launch Roadmap
| Timeline | Numbers to watch | What to do |
|---|---|---|
| Day 30 | Creation failure rate, missed webhooks, manual interventions | Failure rate below 1%, complete anomaly alerting |
| Day 60 | Uncollected rate, days to store, pickup vs delivery mix | Under 4%; tune free-shipping threshold and reminders |
| Day 90 | True shipping cost per order, reconciliation variance | Variance to zero; renegotiate rates or resize packaging |
Pre-Launch Checklist
- Products carry dimensions and weight; the cart computes size live
- Oversized orders cannot select store pickup
- Store selection returns the correct store ID and name
- Webhooks idempotent; a resend never ships twice
- State machine covers returned-uncollected and return-completed
- Per-parcel settlement report reconstructs freight and fees
- Uncollected parcels trigger reminders and a blocklist
- The B2C first-stage label has passed certification
- Sandbox and production merchant and store IDs separated
- Batch fulfilment tested on 50 orders by warehouse staff
- Free-shipping threshold modelled on the real size distribution
- Someone reviews carrier policy updates quarterly
Ten checked: launch. Seven to nine: pilot one route. Six or fewer: do not launch.
Want to Talk Through Your Shipping Integration?
- Email: [email protected]
- Phone: 0916-224-047
- LINE: @ufv9089p
Free 60-minute review: bring three months of fulfilment records and we will calculate your true per-order shipping cost and the C2C/B2C break-even point.
FAQ
Integrate carriers directly, or go through ECPay?
Nine out of ten SMEs use an aggregator. Direct means separate contracts, certifications and reconciliations — three times the hours; revisit past 5,000 orders a month.
When should C2C become B2C bulk warehouse?
B2C saves NT$10 per parcel but you must truck parcels to the distribution centre and pass certification — worth it above 300 orders a month with a fixed dispatch window.
What uncollected rate is normal?
Convenience-store COD typically runs 3%–8%. Levers, in order: prepayment discount, reminder cadence, limits on repeat offenders.
Does reconciliation really need to be per parcel?
Yes. Remittance is net and one deposit mixes dates. Reconcile on totals and the gap gets booked as miscellaneous.
Our Take
Most quotes reduce shipping integration to one line — “integrate ECPay logistics API” — at NT$60,000, buying only the first three modules: store selection, shipment creation, status callbacks. What decides profitability is reconciliation and reverse logistics: they demo badly, look identical at acceptance, get cut first, and return in month four as “the books never balance.” If the budget covers half, cut carriers, not reconciliation. Shipping is the one variable cost that scales linearly with revenue.