Skip to content

Product

How do you ship COD orders across several Moroccan carriers without learning their rules?

Every carrier has its own label format, its own city reference data, its own way of requesting a pickup and its own status vocabulary. Nawras declares those differences once, in a registry, then exposes a single screen: you pick the orders, Nawras creates the parcel at the right carrier, prints its document exactly as issued, and lets its events move the order forward. Three carriers are connected today — Sendit, AMEEX and ForceLog — and they share, literally, not one city identifier.

What two carriers do not have in common

These are not configuration details: each of the three differences below changes what goes out on the network, what comes back, and what you are entitled to promise a customer. Nawras carries them for you, once and for all.

  • "Request a pickup" does not mean the same thing at all three

    There is no single request shape, but three — and they do not even return the same kind of answer. At one, you name the parcels one by one and get back a code; at another, you give a city, an address and a phone number, and get back a text; at the third, you save a delivery note and get back a reference. In all three cases you hand a specific batch to the driver: what changes is the wire, not your gesture.

    • Sendit

      Parcels named one by one, plus the district and the requested date. Returns a code.

    • AMEEX

      A saved delivery note the parcels are attached to. Returns a reference.

    • ForceLog

      City, address and phone number of the pickup point. Returns a text.

  • A label is not always a PDF, and never a document we redraw

    The shipping document is contractual: it is the one the driver scans and the carrier recognises. Nawras prints it exactly as issued — never cropped, never redrawn, never "improved". For a batch, the sheet layout assembles the pages without ever touching their content.

    • Sendit

      PDF. A4 and 100 × 100 mm formats rendered natively by the carrier.

    • AMEEX

      HTML. Self-contained rendering, with no external dependency at print time.

    • ForceLog

      PDF already sized 100 × 100 mm: no margin to remove, therefore no cropping.

  • The parcel options the API actually carries — not the ones we would like to offer

    "Can the customer open the parcel?" and "can they try it on?" are two cash-collection policies, and they do not travel everywhere. One of the three carriers documents no try-on field at all: the matching switch is therefore not shown, rather than being saved on your side and never sent. A control that drives nothing is a lie, not a half-built feature.

    • Sendit

      Opening and try-on, both carried by the API.

    • AMEEX

      Opening and try-on, both carried by the API.

    • ForceLog

      Opening only. Try-on does not exist — the switch is not shown.

These differences are declared in one place, in a registry every screen reads. That is what makes adding a carrier something other than reopening the pickup dialog, the order sheet and the print queue — and it is also what guarantees a fourth carrier will have to answer the same questions before being connected.

The batch: one morning gesture, not one order at a time

You are not creating parcels, you are shipping a morning's worth of orders. The four steps below happen on the same screen, from the same selection — and that same selection is what you then print.

  1. 1

    You select the orders

    Filtered, sorted, ticked — the ones ready to leave. Up to 200 in a single batch. The carrier is not an extra step: it is carried by the selection.

  2. 2

    Nawras creates the parcels at the carrier

    One call per carrier, not one per order. What went through and what was refused comes back line by line, with the reason: a rejected order stays in your queue, it does not vanish from the count.

  3. 3

    One print dialog for the whole batch

    Labels are assembled into a single document — A4 one-up, four-up, or thermal 100 × 100 and 100 × 150 mm. One print dialog per batch, not one per parcel, and what you preview is exactly what comes out of the printer.

  4. 4

    You close the batch, and the carrier hands you its reference

    The pickup request goes out in the shape that carrier accepts, and whatever it returns — a code, a text or a reference — is kept with the batch. That trace is your evidence the day a parcel is missing.

The limit of 200 is the same across the whole chain: batch creation, label document composition and the print queue all stop at the same number. That is not three settings that happen to match — it is one limit, which is why it can be written without an "about".

Tracking: the carrier is the one writing into your order

You do not copy a status from a third-party site. The carrier sends its events, Nawras verifies them, translates them into a shared vocabulary, and moves the order forward — failed attempts and reschedules included.

  • An unsigned event does not get in

    Every notification arrives at an address specific to your account and carries a signature. It is recomputed on receipt and compared in constant time: without a match, the event is refused and the failure is journalled under your connection. Nobody else can move your orders forward by guessing a URL.

  • One mapping table per carrier, built on what that carrier documents

    Every carrier has its own vocabulary, and no table is copied from one carrier to another: each is built solely on the values that carrier documents. It is slower to write, and it is the only way not to translate a status by a homonym that means something else on the other network.

  • A status the table cannot translate becomes a question, not a silence

    An event we did not understand used to be filed with the events that have no consequence — and since those write nothing, it disappeared. It now has a category of its own: "I do not know what to do with this message". The difference between "nothing to do" and "I do not understand" is not semantics: it is a parcel you hear about, or one you do not.

  • And an hourly safety net, because a notification gets lost

    Every hour, orders we have had no news of for over an hour are queried again at the carrier, and the same translation applies. An outage, a burst of invalid signatures or a network incident therefore does not strand an order: the maximum drift is about one hour.

The arrival vocabulary, the one you read

Whatever words the carrier uses, your dashboard always shows the same states — that is what makes two carriers comparable on one screen.

In transit
The parcel has left and is moving across the carrier's network.
Out for delivery
The parcel is with the courier, on the round.
Attempt failed
The courier showed up and could not hand over the parcel.
Rescheduled
A new attempt is planned after a first failure.
Returning
The parcel is on its way back to you, after abandonment or refusal.

What shipping costs you, and since when you know it

A shipping amount is not a fixed number: it is born estimated, becomes confirmed, then becomes invoiced. Nawras keeps the three moments distinct instead of overwriting the last known value with the last received one.

  1. 1

    Estimated

    What the carrier's rate grid announces for this destination, from the moment the parcel is created. Two of the three connected carriers return no price through their API: their cost is born here, and it is meant for working, not for closing.

  2. 2

    Confirmed

    The amount the carrier itself returns for this parcel, when its API exposes one. It replaces the estimate, and not the other way round.

  3. 3

    Invoiced

    The amount reconciled against the carrier's invoice, entered by someone entitled to do so. It is the final word: nothing overwrites it.

  • Those three states never step back down

    An invoiced amount cannot become confirmed again, nor a confirmed one become an estimate. Without that rule, a late API response replaces an invoiced amount with an estimate — and the margin of a delivered order changes on its own, days later.

  • A missing amount writes nothing, and certainly not zero

    When the cost is unknown, it stays empty. A zero in its place does not show: it simply makes the margin look better, which is the worst way to be wrong — the error does not look like an error.

  • Every amount says where it came from

    Carrier API response, rate grid, or manual entry: the origin is stored with the amount. An amount without an origin is not auditable — the day it is wrong, nobody knows where to pick it up.

Where Nawras stops, and why

A page that only lists capabilities cannot be checked. Here are the three limits a merchant actually runs into, with their cause.

  • Once the pickup is requested, the address can no longer be changed

    At all three carriers, requesting a pickup closes the parcel's correction window — at one of them it lasted twenty-four minutes, one day in August 2026. Nawras shows the warning from what the registry declares for that carrier, never from an exception written into a screen: a fourth carrier will have to answer the question before being connected.

  • Address-based pickup requests are not wired at AMEEX

    That carrier already collects, in production, through the delivery note — and that is the shape that is wired. The address-based request is not: three unknowns block it, including the identifier space used for cities in pickups, and none of them can be guessed. We would rather write it down than fill in the table.

  • No carrier invoice imports itself

    Moving a cost to the invoiced state is a human gesture: someone reconciles the carrier's invoice and enters the amount, which is stored with its origin and the person who set it. We do not claim to read the invoices of all three carriers — none of them exposes them the same way, and two do not expose them at all. Until reconciliation is done, the order's margin stays provisional, and it is displayed as such.

0%

That is the overlap measured on 2 August 2026 between Sendit's city identifiers and AMEEX's, across 466 shared identifiers. Two Moroccan carriers, the same cities, not one shared identifier. That is why a city is never copied from one carrier to another: it is resolved at each of them, separately.

Frequently asked questions about shipping

Can I use several carriers at the same time?

Yes, and that is the intended use. Every order carries its own carrier, tracking number and cost; the dashboard mixes them without confusing them, and the status vocabulary shown is the same for all. So you can send Casablanca with one and the Souss with another on the same morning, in two successive selections on the same screen.

My carrier is not on the list. What exactly do I lose?

Three carriers are connected: Sendit, AMEEX and ForceLog. For any other one, you lose parcel creation, the label and automatic tracking — so you keep using its own site for those three gestures, and you move the order forward by hand in Nawras. Everything else still holds: the order, the confirmation, stock, cash collection and margin. We promise no date for a fourth: connecting a carrier means measuring its city reference data and its status vocabulary, not adding a line.

I got the address wrong and the parcel has already been collected. What can I do?

Nothing from Nawras any more, and the screen tells you so before you click. At all three carriers, requesting a pickup closes the parcel's correction window: from the acknowledgement onwards, the address belongs to the carrier's network, and the correction goes through its customer service. That is precisely why the warning appears when you close the batch, rather than being discovered afterwards.

Is the price shown when the parcel is created the one I will pay?

Not necessarily, and Nawras does not pretend otherwise. The amount goes through three moments: estimated from the carrier's rate grid, confirmed by the carrier itself when its API returns a price, then invoiced when someone reconciles its invoice and enters the amount. Each replaces the previous one, never the other way round. Until an amount is invoiced, the order's margin is provisional — and it is displayed as such.

Do I still have to open my carrier's website?

For the three connected carriers: not to create a parcel, not to produce a label, not to request a pickup, not to read a status. Two situations still send you there, and they do not depend on us: a claim opened with the carrier, and importing its invoices when it does not expose them. If your carrier is not connected, its website remains your shipping tool.

Ready to take back control?

Create your workspace in 2 minutes and see the impact in the first week.

Create my free account

Zero dirhams. Zero commitment. Cancel in one click.

Merchant stepping onto an indigo path toward an organized COD cockpit.