Four couriers · one drawer

From order to doorstep, tracked.

Courier labels, pickups and delivery status without leaving the dashboard. No courier panel logins, no spreadsheet, no copy-pasted tracking numbers.

Four couriers, one drawer

One credential per courier, entered once in Settings → Couriers. Nothing to re-key per order.

Enter a credential once in Settings → Couriers

SteadfastPathao CourierRedXPaperflyManual / own rider

One credential per courier, entered once in Settings → Couriers. Nothing to re-key per order.

Order tracking for online store

The order lifecycle: a state machine, not a status label

Every order occupies exactly one state at a time. Every transition writes an order event with an actor and a timestamp — the same log staff, couriers and a customer's public tracking page all read from.

  1. 1Placed
  2. 2Confirmed
  3. 3Packed
  4. 4Picked up
  5. 5In transit
  6. 6Delivered
Exits from In transitReturnedLost
What happens automatically at each lifecycle state
What happens automatically at each lifecycle stateTriggerAutomatic actionsWho can see it
PlacedCustomer completes checkout (or staff creates a manual order)Inventory soft-reserved; order confirmation sent by SMS/email/WhatsApp; fraud/COD risk score attached if enabledStaff, customer
ConfirmedStaff clicks Confirm, or auto-confirm rule passes (e.g. prepaid, or COD under a risk threshold)Order enters the pick queue; hard inventory allocation; "Confirmed" Bangla SMS sentStaff, customer
PackedStaff marks items packed against the pick-listPackage weight/dimensions locked for courier rate calc; label becomes eligible for generationStaff
Picked upCourier scans the label or staff marks manual handoverPickup timestamp and courier consignment ID attached to the order; "On the way" SMS sentStaff, customer, courier
In transitCourier webhook posts an intermediate scanEach scan appended to the public tracking timeline; ETA recalculated if the courier supplies oneStaff, customer
DeliveredCourier webhook posts final delivery scan, or staff manually confirms cash-in-handCOD amount posted to the remittance ledger as "awaited"; inventory deduction finalized; delivery SMS + review-request trigger sentStaff, customer
ReturnedCourier webhook posts RTO/return scan, or staff processes a customer-initiated returnReturn reason captured; stock optionally auto-restocked pending inspection; return counted against that courier's return-rate metricStaff
LostStaff marks lost after courier confirms non-recovery, or after an SLA-breach investigation closes with no resolutionInventory written off; case flagged for courier claim; excluded from delivery-rate KPI as a distinct category from "returned"Staff

Returned and Lost are both exits from In transit, not from Delivered — a parcel does not need to reach the doorstep to leave the pipeline.

Steadfast, Pathao, RedX, Paperfly API

Courier coverage, cut-off and remittance, side by side

No single courier wins every parcel. The right choice depends on four variables you already know at pack time — treat courier selection as a decision tree, not a default.

Destination zone

Inside Dhaka metro: weigh pickup cut-off and same-day options. Outside Dhaka: confirm the courier's stated coverage actually includes the customer's upazila.

Weight band

Under 1 kg, most couriers price similarly — optimize for return rate. 1–5 kg, watch step changes at 2–3 kg. Over 5 kg, confirm the courier accepts bulky items at all.

Fragility or liquid

Prefer couriers with declared fragile-handling and signature-on-delivery where offered; note the choice on the pick-list so packing uses extra void fill.

COD value and remittance tolerance

High COD value with a long remittance cycle: favor a faster-remitting courier or require partial advance above a threshold. Low COD value: optimize for coverage instead.
Courier coverage, cut-off and remittance comparison
Courier coverage, cut-off and remittance comparisonInside-Dhaka coverageOutside-Dhaka coverageTypical pickup cut-offTypical COD remittance cycleReturn window
SteadfastFull metroWide, most districtsSame-day if booked before contracted cut-offWeekly, per your contractPer courier policy
Pathao CourierFull metroMajor districtsSame-day, tight cut-offWeekly or twice-weekly, per your contractPer courier policy
RedXFull metroWide, most districtsSame-day if booked before contracted cut-offWeekly, per your contractPer courier policy
PaperflyFull metroWidest rural reach, per operator claimsNext-day standardWeekly, per your contractPer courier policy
Manual / own riderYour defined zoneN/AYour own SOPSame-day cash-in-handYour own policy

Values are couriers' published terms shown for comparison — not a Framique guarantee, and not a substitute for your signed contract.

Inside the order drawer

One drawer, not four portals.

Open the order, pick a courier from the same panel that shows the customer's address and items, generate a label, and request a pickup. The courier's API call happens behind the button; nothing you type goes into a second tab.

  • Suggests a courier based on destination, weight, fragility and COD value — pre-selected but always overridable.
  • Shows the courier's live quoted rate for that weight band before you commit, not after the label prints.
  • Generates and previews the label as a PDF thumbnail inside the drawer; bulk printing is available from the order list.
  • Requests pickup with a chosen time window, subject to that courier's cut-off.
  • Writes the Confirmed → Packed → Picked up events automatically as each step completes.
Zero copy-paste between tabs.কোনো ট্যাব-বদল নেই।

Order drawer

SteadFastPathaoRedXPaperfly
Quoted rate for this weight band shown before you commit.

Returns and RTO

Return-to-origin is a data problem that surfaces at the courier.

Address and phone verification before confirmation catch most RTOs before a courier ever touches the parcel. A confirmation message for COD orders above a value threshold filters out impulse or mistaken checkouts. Courier-level return-rate tracking turns RTO into a fact you can renegotiate terms with.

  • Address and phone verification before confirmation.
  • A confirmation call or SMS for COD orders above a value threshold you set.
  • Courier-level return-rate tracking, per courier per month.
Reduce cash on delivery return rate

What a 4-point RTO improvement is worth

600 COD orders/month, average order value 1,200 BDT , gross margin 32%, current RTO rate 14%.

600 × 14% = 84 RTOs × 604 BDT = 50,736 BDT /month

600 × 10% = 60 RTOs × 604 BDT = 36,240 BDT /month

Save 14,496 BDT /mo

Annualized: 173,952 BDT

Recompute this with your own AOV, margin and RTO rate under Analytics → Returns; the formula is (orders × RTO% × (round-trip fee + AOV × margin)).

RTO reduction checklist

  • Address field requires area/thana selection, not free text, for Dhaka and major-district addresses.
  • Phone number format validated (11-digit BD mobile) at checkout, before payment step.
  • COD orders above your set threshold trigger a confirmation SMS with amount and courier name.
  • Orders unconfirmed after 48 hours auto-flag to the exceptions queue, not silently expire.
  • Return reason is a required field on every RTO event — distinct rows in Analytics, not one bucket.
  • Monthly return-rate-per-courier review is a standing item, not ad hoc.

Address quality and phone verification

Two structured fields do most of the work.

A cascading area selector (division → district → upazila/thana) backs the free-text street line, so 'outside coverage' is caught at checkout, not at pickup. Phone numbers are format-validated to 11-digit BD mobile prefixes, with optional OTP verification for COD orders above your risk threshold, sent via the same SMS gateway used for order notifications.

  • Cascading division → district → upazila/thana selector, free text remains only for house/road number.
  • 11-digit BD mobile format validation at the field level.
  • Optional OTP verification for COD orders above your risk threshold — one SMS integration, not two.

আপনার অর্ডার নিশ্চিত করতে এই কোডটি লিখুন: {code}

Packing and pick-list workflow for a small warehouse

1. Batch into a pick-list

Generated from Confirmed-state orders, grouped by SKU location or by order age.

2. Pick against the list

SKU, quantity and bin location across all orders in the batch — one walk fulfills multiple orders.

3. Pack and weigh

Actual weight/dimensions lock the courier rate calculation and flag a mismatch against the product's stored weight.

4. Mark packed

Packing is a gate: the system will not let a label print for an order still in Confirmed state.

5. Batch pickup request

One pickup request covers a courier's whole packed-and-labeled batch instead of one request per parcel.
  • Pick-list grouped by bin location, not by order number.
  • Each line shows product image thumbnail, not just SKU code.
  • Fragile-flagged items surface a packing-material reminder at the pack step.
  • Weight variance beyond a set tolerance blocks label generation until confirmed by a second staff member.
  • Batch pickup grouped by courier and by pickup time window.

Inventory reservation and oversell prevention

Soft reservations that never reach Confirmed release back to available stock automatically after a configurable timeout — commonly 30–60 minutes for payment orders, longer for COD orders pending a confirmation call.

Stock states and availability
Stock states and availabilityWhen it appliesAvailable to sell?
On handPhysically in the warehouse, uncommittedYes
Soft-reservedOrder Placed, payment not yet settled or COD not yet confirmedNo — decremented from available immediately
Hard-allocatedOrder ConfirmedNo — locked to that order specifically
DeductedOrder DeliveredNo — permanently removed from on-hand
RestockedOrder Returned and inspection passedYes, once inspection completes

Delivery-status webhooks and Bangla customer notifications

Each row is independently toggleable per merchant — high-touch WhatsApp support can disable SMS for 'In transit' and keep only 'Confirmed' and 'Delivered'.

Notification rules and Bangla copy
Notification rules and Bangla copyChannelEnglish copyবাংলা copy
ConfirmedSMSYour order #{id} is confirmed and being packed.আপনার অর্ডার #{id} নিশ্চিত হয়েছে, প্যাক করা হচ্ছে।
Picked upSMSYour order #{id} is on its way with {courier}.আপনার অর্ডার #{id} {courier}-এর মাধ্যমে যাত্রা শুরু করেছে।
In transit (out for delivery)SMSYour parcel is out for delivery today.আপনার পার্সেল আজ ডেলিভারির জন্য বের হয়েছে।
DeliveredSMS + review requestDelivered. Thank you for your order — rate your experience: {link}ডেলিভারি সম্পন্ন। ধন্যবাদ — আপনার অভিজ্ঞতা জানান: {link}
ReturnedSMSYour order #{id} could not be delivered and is being returned. We'll contact you.আপনার অর্ডার #{id} ডেলিভারি সম্ভব হয়নি, ফেরত পাঠানো হচ্ছে। আমরা যোগাযোগ করব।

Exceptions queue and SLA breach handling

Each exception surfaces with the order, the courier, the last known event, and time elapsed since that event — sorted oldest-first.

No confirmation after 48 hours

COD order sits in Placed with no confirmation call logged (threshold configurable).

No pickup scan after cut-off

Label generated, but the courier never scanned it, past the courier's stated cut-off plus a grace window.

No transit scan for N days

Parcel picked up but gone quiet — threshold configurable per courier, since transit times differ inside vs outside Dhaka.

Delivery attempted but not completed

No rescheduled attempt logged within 24 hours.

Remittance reconciliation with the courier

45 Delivered orders in a remittance cycle, COD total 54,200 BDT . Courier pays 52,900 BDT . The 1,300 BDT gap is flagged Short, with the underlying order-level amounts listed so the specific orders responsible can be raised with the courier directly.

Remittance ledger states
Remittance ledger statesMeaning
AwaitedOrder Delivered, COD amount logged, courier has not yet paid out.
RemittedCourier payout received and matched to one or more orders.
ShortRemitted amount doesn't match the sum of matched orders — flagged for manual reconciliation.
DisputedOrder marked Delivered by courier webhook, but no matching remittance after the courier's stated cycle has passed.

Peak-season capacity checklist: Eid and Pohela Boishakh

Order volume during Eid-ul-Fitr, Eid-ul-Adha and Pohela Boishakh windows routinely multiplies baseline daily volume. Plan against capacity, not just demand.

  • Confirm each courier's own stated peak-season cut-off changes in advance.
  • Pre-negotiate a temporary rate or priority-pickup arrangement if peak volume will meaningfully exceed your contracted volume.
  • Increase the soft-reservation timeout for payment orders if gateway load is expected to slow checkout completion.
  • Stage packing materials and box sizes for your peak-week forecast, not your average week.
  • Schedule extra confirmation-call staffing for the COD confirmation step.
  • Set a temporary, explicit delivery-delay notice on the storefront and in the Confirmed SMS.
  • Review the exceptions queue daily, not weekly, during the peak window.
  • Reconcile remittance more frequently during and immediately after the peak window.

Framique vs spreadsheet + courier panels

The spreadsheet doesn't disappear because it was bad at its job — it disappears because a state machine and a webhook do the same job without the re-typing.

Framique compared to a spreadsheet and courier panels
Framique compared to a spreadsheet and courier panelsSpreadsheet + courier panelsFramique
Choosing a courier per orderManual judgment call, no dataSuggested by the decision framework, always overridable
Generating a labelLog into courier panel, re-type addressGenerated from the order, address already there
Requesting pickupSeparate action per courier panelBatch request from the order list
Tracking statusCheck each courier's tracking page manuallyWebhook-driven timeline on the order and a public customer page
Customer “where is my order” messagesManual reply, per messageBangla notifications sent automatically at each state
Return rate per courierNot tracked, or tracked manually in a separate sheetAutomatic per-courier, per-month metric
COD remittance matchingManual line-by-line against a courier statementAuto-matched, exceptions surfaced as Short/Disputed
Oversell preventionManual stock check, error-prone at volumeSoft-reservation at order placement, real-time
Exceptions (stalled orders)Discovered when a customer complainsSurfaced automatically by elapsed-time thresholds
Peak-season readinessAd hoc, remembered from last year if at allChecklist and capacity settings built into the same dashboard

16

Payment rails wired end to end

Fulfilment questions, answered

Do I need all four couriers, or can I use just one?
Use as many or as few as you want. The courier wall and the decision framework are most useful with two or more, since they let you compare, but a single-courier setup works identically — the drawer just won't show alternatives.
What happens if a courier's webhook goes down temporarily?
The order stays in its last known state; staff can manually advance it if they have confirmation from the courier through another channel (call, app), and the manual update writes the same order-event log entry a webhook would.
Can I use my own delivery riders instead of a third-party courier?
Yes — Manual / own rider is a first-class courier option in the drawer, with the same state machine, minus the label-generation and webhook steps, which are replaced by manual status updates from your staff.
How is the return rate per courier calculated?
Returned-state orders in a given month, divided by total orders shipped with that courier in the same month, shown in Analytics → Returns, filterable by return reason.
Does the risk score for COD orders auto-cancel anything?
No. It routes to manual review or blocks auto-confirmation; a human always makes the final confirm/cancel decision unless you explicitly configure an auto-cancel rule for a specific risk threshold.
What if the courier's remittance amount is short and they dispute the shortfall?
The Short ledger state keeps the specific order IDs and delivery timestamps attached, which is the evidence trail for that conversation with the courier — Framique doesn't adjudicate the dispute, it documents it.
Can customers track their order without creating an account?
Yes — the public tracking page is a link tied to the order ID and phone number, sent in the Confirmed SMS, with no login required.
Does inventory get restocked automatically after a return?
Only after inspection is marked passed; a returned item sits in a pending-inspection state so a damaged return doesn't silently go back into sellable stock.
How far in advance should I set up peak-season settings?
At least two to three weeks before Eid or Pohela Boishakh, so the reservation-timeout and staffing adjustments are live before the volume spike, not adjusted reactively mid-spike.
What data do I need to switch from a spreadsheet workflow?
Your current product list with weights (for rate calculation), courier credentials for each courier you already use, and your historical order data if you want return-rate history to populate from day one rather than starting fresh.

Stop reconciling parcels by hand.পার্সেল হাতে হিসাব করা বন্ধ করুন।

Every state change, every label, every remitted taka — one ledger, not four browser tabs.