Weight (kg) (optional — used for DC; assumes 1kg if blank)
⚠️ That's a lot of kg for one parcel — did you mean grams? e.g. 500g = 0.5
Courier *
Mark Return (Courier's Claim)
Point camera at parcel QR / barcode
Return Reason *
Enter PIN to Delete
This cannot be undone
📥 Bulk CSV Import
Required (any of these header names work): Tracking / CN, Customer Name / Customer, Phone / Phone Number, Destination / City, Courier, Amount / COD, Product Optional: Status / Courier Status, Date, Weight, Claimed Weight, COD Received (for historical data)
Status values: booked, in-transit, delivered, returned, claimed-return, missing Booked = CN issued by courier, not yet handed over/scanned — use this for the courier's CN-confirmation file right after bulk booking. Raw courier portal text also auto-maps (e.g. Pending/Arrived at Station/Assign to Courier/Picked/2nd Attempt/Shipper Advice → in-transit, Delivered → delivered, Ready for Return/RTO/Refused → claimed-return). Never auto-mapped to missing — that stays computed only by the aging rules below. Return buckets: use claimed-return for courier claim; returned for physically verified Date format: YYYY-MM-DD (e.g. 2026-05-15) Physical returns: add column physically_received=yes Weight: add column Weight (booking weight, kg) and/or Claimed Weight (courier's claimed weight, kg — used for DC calculation if different from booked) COD Received: add column COD Received=yes only if this courier has actually paid these rows. Never inferred from Status anymore — omit the column and it stays unpaid (or keeps its current value, on existing parcels) until a CPR confirms it. Note: Returns kept max 7 days; unverified → auto-moved to Missing
Default Date (if no Date column in CSV)
Default Status (if no Status column in CSV)
🗑️ Delete a previously imported batch
🗑️ Delete Imported Batch
Finds parcels by dispatch date — narrow by courier and/or status to avoid catching parcels you've already worked on. This cannot be undone.
Dispatch Date *
Courier
Status
Add SKU Product
Product Name *
SKU Code
Category
Cost Price (Rs.) *
Sell Price (Rs.) *
Current Stock *
Reorder Level *
Supplier
Stock Movement
Quantity *
Note / Reference
Create Deal Pack
Deal Name *
Deal Sell Price (Rs.) *
Items in this Deal
Add Expense
Category *
Amount (Rs.) *
Paid To
Note
Add Supplier
Supplier Name *
Contact Person
Phone *
Address
Opening Balance (Rs.)
Positive = you owe them · Negative = they owe you
Payable / Receivable
Party *
Amount (Rs.) *
Due Date
Note / Invoice
👛 Log Wallet Transaction
Courier:
Transaction Type
Amount (PKR) *
Note
Add Transaction
Amount (Rs.) *
Method
Bank Name
Account Number / IBAN
Note
Add Courier Statement
Courier *
Statement Date *
Total Parcels
Total COD (Rs.)
COD Received (Rs.) *
Note
⚠️
Duplicate Order Detected
⚠️
Possible Duplicate — Same Week
A parcel for this customer / phone number was already dispatched within the last 7 days.
🚫
Already Physically Returned
This parcel was already scanned back in hand — re-scanning is blocked to avoid double-counting.
Delete Selected
This cannot be undone
📎 Upload Courier CPR / Payment File
Upload your courier's original CPR CSV — system auto-detects the format and marks paid CNs
📋 Supported CPR Formats
PostEx: TRACKING_NUMBER · STATUS · NET_AMOUNT · COD_AMOUNT
Standard format (Leopard, TCS, Trax, M&P, BlueEx, Daewoo): Tracking no · Status · COD Price · Payment Tag (Cod/Dc) · Amount · Weight (optional — if your export has a Weight/Chargeable Weight column it's read automatically and overrides the booked weight)
DigiDokaan (pooled Leopard+Trax): Tracking no · Payment Tag (Cod/Dc/Sales tax/Income tax) · Amount — no COD Price column
Other/Swyft: Any CSV with a CN/Tracking column & Amount column
📌 Status mapping: Delivered=Paid · Return/In-Processing=Unpaid/Deduction
Courier *
CPR / Payment File (CSV) *
Note (optional)
🤖 AI Scan Result
🔔 Smart Alerts
Loading...
🚫
Blacklisted Customer
📦 Return Disposition
What happened to the returned product?
📊 Today's Report
📦
Confirm Physical Return
CN
Current Status
Customer
Courier
COD
Mark this parcel as physically received? It will be removed from disputes.
⚠️
Non-Service Area Alert
is listed as a non-service area for
Dispatching here may result in failed delivery and return. Proceed only if you are sure.
🎯 Courier COD Payment Schedule
Track when each courier is due to pay your COD
⚠️ Aging Exceptions (6+ Months, Unresolved)
Dispatched 6+ months ago but still In-Transit, Missing, or an unverified Claimed-Return. Excluded from archiving until resolved.
🔍 COD Audit — Unverified "Paid" Parcels
Delivered + COD Received=Yes, but no CPR upload exists for that courier in that dispatch month.
⚖️ Weight Data Audit
Parcels with weight or claimed weight over 5kg — almost certainly grams entered into a kg field. Fix individually with ÷1000, or fix all at once below. Anything that's genuinely heavier than 5kg, edit it manually instead via the Courier tab's ⚖️ weight icon.
📋 Parcels Over 1kg
1–5kg range — not auto-flagged as corrupted data, just worth a manual look since most parcels here should book around 0.5kg. Tap Edit to correct or clear a weight.