RapidXpk

Sign in

with your RapidXpk account

Trouble signing in? WhatsApp us →

Live inventory, orders, COD and settlements — one place, updated as it happens.

  • Track every order end to end
  • Watch stock move in real time
  • Download settlement statements
RapidXpk · Karachi fulfillment & delivery Encrypted connection
RapidXpk
RapidXpk
Main menu
Operations
Setup
Tools

Accounts

AccountLogin IDLoginPortalLast sign-in

View as shows exactly what that account sees when it signs in. You stay signed in as admin (no password, no session swap) and every view-as is written to the audit log. Audit shows their last 100 logged actions.

Choose a company

Fulfillment brands whose stock we hold and ship
Courier brands we collect from, and the courier accounts with their brands

Tap a brand to open its dashboard. Tap a courier to drill into its brands, orders, COD and billing. Numbers are the last 30 days; the arrow compares with the 30 before that.

Recent activity

Needs attention

OrderProductCustomerAreaCODStatusAction

Brand health

ALL CLIENTS · 60 DAYS
BrandOrders, 30 daysChangeActivity, 30 daysLast orderHealth

Red = churn risk: shrinking volume or gone quiet. Call them before they call a competitor.

⌁ Master Inventory & POS →

Stock on hand

SKUProductOn handReservedAvailableLevelAction

Reserved = units assigned to orders that haven't shipped yet. Available = on hand − reserved. Cover = available ÷ the average units ordered per day over the last 30 days.

Inbound - receiving

DateSKUProductExpectedReceivedStatus

Brands announce a shipment; we count it on arrival. Confirmed units go straight into live stock, and any mismatch is flagged, never hidden.

Adjustments & damage log

AUDITED
DateSKUChangeReasonNote

Every stock change is logged permanently, and the client can see this log. Damage is never silently absorbed.

All orders

OrderProductCustomerAreaCODStatusAction

Returns

ReturnOrderProductCustomerReasonStatusAction

Commission owed to you

MonthOrdersOrder valueCommissionPaid

Charge sheet

OrderDateOrder value FulfillmentDeliveryTotal fee

Fulfillment fee = the greater of your minimum or the percentage of order value. Only delivered, non-voided orders are billed.

Rent & other charges

DateDescriptionTypeAmount

Balance

Performance and internal numbers

SLA performance

Measured from order received to delivered. The target comes from this client's rate card (SLA hours).

Unit economics

INTERNAL — NOT CLIENT-VISIBLE DATA

📦 Send a parcel پارسل بھیجیں
1 · Customer name گاہک کا نام
2 · Customer phone فون
3 · Deliver to پتہ
3b · Nearest landmark قریبی نشانی (optional, if the building itself is not on the map)
4 · What is inside اندر کیا ہے
5 · Amount (Rs) رقم
6 · Payment ادائیگی
7 · Pick up from کہاں سے لینا ہے
8 · Which brand کون سا برانڈ
📍 Parcel map پارسل کا نقشہ

Each box is an open parcel at the customer's exact pin. Grey = received, orange = packed, blue = out for delivery, red = failed attempt. Lime border = pinned on the nearest landmark. Parcels with no exact pin are not guessed onto the map: they are under "No pin". 🏍️ = a rider on duty, live. 🏢 = RapidXpk HQ. Tap anything for details.

🛵 My parcels میرے پارسل

💬 WhatsApp RapidXpk · ہم سے بات کریں

Courier partners

CourierBrandsOrders 30dDelivered %RTO %COD outstandingCommission owedStatus
No couriers yet. Add your first partner.

Click a courier to drill into its brands, orders, COD, billing and performance.

Brands under your courier

BrandCodeOrders 30dDelivered %RTO %COD outstanding

Onboard a new brand

INVITE

Generate a code, send it to the brand. When RapidXpk creates their account with that code they are linked to your courier automatically.

Your terms

RATE

COD & payouts

OrderCustomerRiderCODWhere the cash isWaiting

In transit: out for delivery. With rider: collected at the door, still in the rider's hand. At office: handed over and counted, ready to pay. Paid: sent to you, COD minus our charges.

Payout history

DatePaidCOD coveredOur charges keptOrdersMethod · reference

Riders

Attempts to review

Loading…

A failed attempt is charged only when the rider's phone was within the radius of the pin (sql/52). The ones here could not be verified: the phone was too far, had no fix, the order had no pin, or the failure was recorded at DISPATCH. Charge it or not; the order's attempt count follows.

Riders now

Loading…

Live rider map

—

━ where the rider has been today (click a rider)   road still ahead through the parcels they carry, in stop order. Every rider has their own colour: it is the bar on the left of their card. “km left” on each rider

Boxes = open parcels at the customer's location (grey received, orange packed, blue out for delivery, red failed; dashed = approximate, lime border = landmark pin). 🏢 = HQ. 🏍️ bike = rider: green = on duty & reporting. Amber = on duty but gone quiet (no ping >90s). Grey = off duty. Tap a rider to draw today’s route — lime = GPS measured, amber dashed = road-routed across a signal gap. Updates every 10s.

Cash handover history

WhenRiderExpectedReceivedShortfallOrdersShortfall status

Rider scorecard

Loading…

Failed at door = the rider went and could not deliver (counts as an attempt). No answer = the customer did not answer the call before the rider left (not an attempt). Month figures are from the 1st to the chosen day; failed attempts are recorded one by one from 16 Oct 2026.

Delivery performance

First try = delivered on the first attempt. Delivered = delivered in the end, out of everything attempted. Orders created in the period; test orders left out. Rider failed attempts are counted from 7 Oct 2026.

Deliveries by date

Uses the real delivery time from the rider app (or the office), not the order date. Voided, test-key and QA orders are left out.

Pick a rider
RouteNo signalStopDeliveredFailed

Petrol report

RiderDayShiftsMeasured kmEst. kmTotal kmLitresAmount

Litres = total km ÷ mileage (the petrol the bike actually burned for work). Amount = litres × petrol price. Est. km = road distance filled across a signal/battery gap (real streets, never a straight line). Riders are on salary, so this is petrol for work distance only — personal trips off-duty are never counted.

Zones & subzones — Karachi

Every zone is a coloured territory. Tap a zone on the map (or a row in the legend) to assign riders to it — or set a rider’s zone straight from their card below. Orders from that area go to that rider’s queue.

Add rider

Rider load

Out now = parcels this rider is carrying. To collect = COD on those parcels. In pocket = cash collected at doorsteps but not yet handed to the office — clear it with “Receive cash”. Only received cash becomes eligible for client remittance.

Analytics

Loading…

Volume

Delivered Failed Returned Orders in

Money

SAME RATES AS BILLING

Companies

CompanyOrdersDeliveredReturnedCOD collectedOur charges

Why deliveries fail

Busy hours

Areas

Day book

Every day: parcel value, what we earn per delivery (each brand's rate card), petrol and rider cash.

DayDeliveredReturnedParcel valueWe earnPer parcelPetrolNetCash inShort

Staff & devices

Signs out every admin and DISPATCH login on every laptop and phone within seconds, including you (sign in again afterwards). If someone leaves, press Remove access on their row, then Set password on any login they knew.

PersonRoleDevices
Loading…

Access & accounts

Login passwords are hashed by Supabase Auth and can never be displayed, by anyone. Use Set password to give an account a new password (the old one stops working at once; you send the new one to the owner). Anything you manage by hand (rider app PINs, courier portals, SIM accounts) belongs in the Vault below.

AccountLogin IDRoleSince

Riders directory

RiderPhoneZoneStatusPay typeRs / parcelPetrol / run

Credential vault

LabelLoginSecretNote

Audit log

WhenWhoActionEntityDetails

Customer WhatsApp updates

When on, each customer gets one WhatsApp from the bridge number when their parcel goes out for delivery (with the live tracking link and the cash to keep ready), and one if an attempt fails. Held 21:00–09:00, capped per day, skipped for courier orders, test brands, brands that switched it off and customers who replied STOP.

Loading…

Store connection

Paste this URL into the client’s Shopify admin once. After that, every new order lands here automatically. No exports, no copying.

-

Store settings

RapidXpk Shopify app

Send the brand this link. They install the app once, then book deliveries from inside Shopify (More actions → Book with RapidXpk). Nothing else from their store reaches us.

Incoming orders

Shopify #CustomerCity / AreaPinItemsTotalPaymentStatusAction
No orders received yet.

Orders marked paid in Shopify import as Prepaid and stay out of COD reconciliation. Everything else imports as COD for the order total. Non-Karachi orders are hidden by default. Switch to All cities to see them.

Manual import (backup)

For stores not connected yet: Shopify admin → Orders → Export → CSV, then paste or drop it here.

Send us your orders automatically

Right now someone probably types each order in by hand. Pick whichever option below matches the system you already use, then follow the steps. Most brands are done in under ten minutes, and you never have to touch it again. If anything is confusing, tap Ask us to set it up at the bottom and we’ll do it for you.

Send us a file

Nothing to install, nothing to configure. Good way to start today and switch to an automatic connection later.

1
In whatever system you use, export your orders as CSV or Excel. Most systems have this under Orders → Export.
2
Make sure each row has: customer name, phone, full address, what they ordered, and the amount to collect (put 0 if already paid).
3
WhatsApp the file to us, or open the Shopify tab and paste it into the Manual import box. It reads the file and creates the orders for you.
Tip: if your export has a column with the customer’s map location or coordinates, keep it in. That lets the rider navigate to the exact door instead of the general area, which in Karachi is the difference between arriving and phoning for directions.

Connect your Shopify store

You paste one address into Shopify. After that every order you receive appears in this portal within seconds, and we start packing it.

1
Copy your personal connection link: tap the button at the bottom of this section.
2
In Shopify, go to Settings → Notifications → scroll down to Webhooks.
3
Click Create webhook. Set Event to Order creation and Format to JSON.
4
Paste your link into the URL box and click Save. That’s the whole job.
5
Place a test order in your store. It should show up in the Shopify tab here within a few seconds.
Orders marked paid in Shopify come through as prepaid and stay out of cash reconciliation. Everything else comes through as cash on delivery for the order total.

Connect your Odoo

This is done entirely inside Odoo’s own settings. No custom module, no development work, and nothing to pay anyone for. If an Odoo partner has quoted you for a module to do this, read the note at the bottom before you agree to it.

1
In Odoo, turn on developer mode: Settings → scroll to the very bottom → Developer Tools → Activate the developer mode.
2
Go to Settings → Technical → Automation → Automation Rules (called Automated Actions in older versions).
3
Click New. Set the Model to Sales Order, and set the trigger so it runs when the order is confirmed.
4
For the action, choose Send Webhook Notification, and put this in the URL box:
https://api.rapidxpk.com/v1/orders/odoo
5
Save it, then confirm any test order in Odoo. Tell us and we’ll confirm we received it.
What we need from you to finish the connection
  • Your Odoo version, and whether it is Odoo Online, Odoo.sh, or on your own server
  • Which Odoo plan you are on (the external connection is not available on the free tier)
  • An Odoo API user and key, plus your database name
  • Your product codes, so our stock list matches yours
If someone has quoted you for a custom module: Odoo’s webhook only sends us the order number, not the full order, so we read the rest back through Odoo’s standard connection, which every paid Odoo plan already includes. That is why no module needs to be built and no development fee should apply. Send us the quote and we will talk to your Odoo partner directly.

Anything else: WooCommerce, custom site, your own ERP

If someone technical looks after your system, this section is for them. You do not need to understand it. Just forward it on.

1
Tell us you want an API key. We issue a test key and a live key for your brand only.
2
Your developer sends each new order to us as soon as it is confirmed, including the customer’s name, phone, address, items, and the amount to collect.
3
We send delivery updates back automatically (packed, on the way, delivered, cash collected), so your system stays in sync without anyone checking manually.
If your checkout captures the customer’s map location, send those coordinates with the order. Karachi addresses alone put a rider on the right block; coordinates put them at the right door.

Your API access

DEVELOPER

Give these to whoever connects your system. The key itself is secret. We show only its first characters here, so keep the copy we sent you somewhere safe.

KeyEnvLabelStatus
Checking…

Status updates back to your system

WEBHOOK

Every time an order changes (packed, out for delivery, delivered, failed attempt, return) we POST it to your URL, signed. Or pull changes in batches with GET /v1/orders?updated_since=.

Odoo connection (no code)

ODOO

Save an Odoo API user here, then point Odoo's Send Webhook Notification action at https://api.rapidxpk.com/v1/orders/odoo/<your API key>. We read each confirmed order back from Odoo ourselves.

Not sure which one is right for you? Tap Ask us to set it up on any option. We will do the setup with you on a call, and you can start sending orders as a file the same day while we build the automatic connection in the background.

Website enquiries

Brands who came to us through the website. Brands we approach ourselves are in the Command Center.