Skip to content
mAICourier

COURIER AND FREIGHT TMS

Every parcel. Every hand-off. Accounted for.

mAICourier is the transport management platform for couriers, freight carriers and agencies. Shipments, hubs, linehaul, last mile, lockers and cash on delivery run on one core, so you always know where a piece is, who holds it and what money it carries.

  • Multi-piece waybills
  • Lockers and PUDO
  • COD ledger
  • Offline driver app
  • Greek and English
Illustrative network map: hubs in Athens, Thessaloniki and Karditsa linked by linehaul routes, with parcels moving between them and out to local stops. SKG Thessaloniki KRD Karditsa ATH Athens
Hub Stop, locker or PUDO Linehaul Illustrative network

ONE CORE, FOUR ANSWERS

For every piece, four separate truths

Most systems keep one status and guess the rest. mAICourier records each dimension on its own, from real scans and events.

  1. 01

    Lifecycle

    Where it is in the process

    An explicit transition table per service. Late events never move a parcel backwards.

  2. 02

    Location

    Where it was last confirmed

    Last seen position with its source and time, never a live GPS dot that does not exist.

  3. 03

    Custody

    Who is responsible for it

    Every hand-over is a transfer that stays pending until the receiver scans and accepts it.

  4. 04

    Money

    What it owes and carries

    Charges, cash on delivery and payouts as separate amounts, on a balanced ledger.

PARCEL LIFECYCLE

Follow a parcel from booking to payout

Click any step to see what happens there: who holds the parcel, what is scanned and which events are written.

01 / 12

Booking

A shipment is created from the back office, the customer portal, the API or a CSV import. It is validated, priced with the versioned rate card and gets one barcode per piece.

Custody
Still with the sender. Booking a voucher is not a pickup.
Scans
None yet.
Events
BOOKEDPICKUP_SCHEDULED

02 / 12

Pickup

The driver sees the time window and the expected pieces, scans each one and records anything missing, extra or damaged.

Custody
Sender to driver, pending until the hub accepts it.
Scans
Per-piece scan in the driver app, safe offline.
Events
PICKED_UP

03 / 12

Hub and sorting

A continuous scan console with a distinct sound and colour for OK, duplicate, wrong route and unknown. Pieces go into handling units that are sealed, loaded and reconciled.

Custody
Driver to hub, accepted on the inbound scan.
Scans
Inbound scan, sort, add to handling unit, seal.
Events
AT_ORIGIN_FACILITYSORTED

04 / 12

Linehaul and manifests

Scheduled lines create trips. A manifest goes DRAFT, LOADING, CLOSED, DEPARTED, ARRIVED, RECONCILED. Differences become new events and never rewrite the original load.

Custody
Hub to trip (own vehicle or partner).
Scans
Load scan per piece or sealed unit, unload scan at destination.
Events
LOADED_FOR_LINEHAULIN_LINEHAULAT_DESTINATION_FACILITY

05 / 12

Dispatch and last mile

The dispatch board assigns stops to routes. The optimiser shows a preview with every unassigned task and its reason before anything is applied, and route versions are pushed to the driver.

Custody
Destination hub to driver.
Scans
Out-for-delivery scan.
Events
OUT_FOR_DELIVERY

06 / 12

Smart locker

The door opens by command through mAILockers. The deposit counts only after a real door event and the provider confirmation. The recipient PIN is sent after that, never before.

Custody
Driver to locker.
Scans
Piece scan, deposit code, door open, confirm.
Events
READY_IN_LOCKER

07 / 12

PUDO point

The driver drops the parcel at a pickup point with opening hours and a holding limit. The recipient collects it with an OTP.

Custody
Driver to PUDO point.
Scans
Drop scan at the point, collection scan.
Events
READY_AT_PUDO

08 / 12

Door delivery

Right pieces, any payment due, then the proof the service requires: signature, OTP, photo or an authorised third party.

Custody
Driver to recipient.
Scans
Piece scan and proof of delivery.
Events
DELIVERED

09 / 12

Delivered

Final hand-over with the required proof of delivery. A multi-piece shipment can be partially delivered; one delivery never completes every piece.

Custody
Recipient.
Scans
Proof of delivery stored with the event.
Events
DELIVEREDPARTIALLY_DELIVERED

10 / 12

Failed attempt

A reason code (absent, refused, unknown address, no access, unpaid, damaged, wrong parcel, safety) and a next action: retry, hold, redirect to a locker or PUDO, or return.

Custody
Stays with the driver, then back to the hub.
Scans
Attempt recorded with its reason and time.
Events
DELIVERY_ATTEMPTED

11 / 12

Cash on delivery settlement

The collection is recorded against the driver, branch or provider. Cash handover is a signed transfer. A balanced ledger moves it to settlement, and one collection can never be paid out twice.

Custody
Money: driver, branch, then payout to the merchant.
Scans
Collection, cash handover, settlement run.
Events
COLLECTEDRECONCILEDPAYABLESETTLED

12 / 12

Return to sender

A return shipment with its own pieces, tracking and legs, linked to the original. Reasons include refusal, expired pickup, failed delivery, damage and customer return.

Custody
Back through the network to the sender.
Scans
The same scans as any shipment, in reverse.
Events
RETURN_IN_PROGRESSRETURNED_TO_SENDER

REPORTING

KPIs with honest denominators

Every KPI states what it counts and what it divides by, so a number means the same thing in every report.

Illustrative demo data, not customer results.

On-time delivery

Weekly, against a 95% SLA target

96.4% ▲ 5.2
88 90 92 94 96 98 Target 95% W2 W4 W6 W8 W10 W12

Denominator: parcels with an SLA due that week

First-attempt success

By delivery mode

Denominator: parcels out for delivery or deposit

COD settlement timeline

One collection, step by step

Days from collection; payout terms come from the contract

  1. Collected 0
  2. Handed over 0.4
  3. Reconciled 1
  4. Payable 2
  5. Settled 5

MODULES

Everything a network needs, on one core

One shipment model from booking to payout. No second parcel system, no second balance.

  • 01

    Shipments and waybills

    Multi-piece consignments, cargo lines and pallets, labels in PDF and ZPL, bulk CSV import.

  • 02

    Pricing engine

    Zones, weight bands, volumetric factor per service, surcharges and contract rates, with a breakdown and versioned rate cards.

  • 03

    Pickups

    Pickup requests and windows, per-piece scans, discrepancies and pending custody.

  • 04

    Hubs and scan console

    Continuous scanning, handling units, inbound reconciliation and last-seen search.

  • 05

    Linehaul and manifests

    Lines, trips and legs, manifest versions, load and unload scans with reconciliation.

  • 06

    Dispatch and routes

    Dispatch board, manual assignment, optimiser preview with unassigned reasons, route versions.

  • 07

    Driver app

    Installable web app with an offline queue, barcode scanning, proof of delivery and cash on delivery.

  • 08

    Smart lockers

    mAILockers integration: reservation, deposit, recipient pickup, expiry and collection.

  • 09

    PUDO points

    Pickup points with hours and holding limits; drop, collection and removal tasks.

  • 10

    Returns

    Return shipments with their own pieces and tracking, linked to the original, with reason codes.

  • 11

    COD and settlements

    Collections, cash sessions and handovers, a balanced ledger, settlement runs and payouts.

  • 12

    Tracking and notifications

    Secure recipient tracking links and email or SMS notifications without duplicates.

  • 13

    Customer portal

    Shipments, labels, pickup requests, tracking, POD, charges, COD statement and returns.

  • 14

    Multi-tenant and audit

    Tenants, roles and scoped permissions, step-up for sensitive actions, append-only audit trail.

  • Coming

    ERP and myDATA

    Adapters for ERP systems and Greek e-invoicing are planned and not available yet.

DRIVER APP

Built for the street, not for the office

An installable web app with large touch targets and short messages. It keeps working without signal and replays safely when the connection returns.

Route R-12

14 stops

● Online

Next stop

Sample recipient

12 Example St

COD

Window 10:30 to 11:30

3 pieces · €42.50 Deliver
2
3
4

Scan piece

✓ Piece 2 of 3 scanned

  • DC-26-000318-1✓
  • DC-26-000318-2✓
  • DC-26-000318-3○

Proof of delivery

Signature OTP Photo
Confirm delivery

Cash on delivery

Amount due

€42.50

DC-26-000318

Cash

EXPECTED✓

COLLECTED…

Record collection

Sync queue

  • PICKUP_SCAN synced
  • DELIVERED queued
  • POD_PHOTO queued
  • COD_COLLECTED queued

clientEventId · occurredAt · task version

SMART LOCKERS

Lockers that confirm, not assume

mAICourier works with the mAILockers network through its partner API. The courier core owns the shipment, custody and money; the locker system owns the doors.

  • No door event in time means a reconciliation hold, never a blind second open.
  • Doesn’t fit? The driver asks for a larger door on the spot.
  • A full or offline locker comes with the next action: another locker, PUDO or retry.

About mAILockers

M S S M M S L L M S L mAILockers ● ● ● ● ● ● CODE PIN → M

INTEGRATION

How integration works

A REST API with an OpenAPI description, idempotent writes and an event history for every shipment. Connect an e-shop, an ERP export or your own system.

  1. 1

    Get an API key

    Each merchant key carries its own permissions and sees only its own shipments.

  2. 2

    Create shipments

    POST with an Idempotency-Key, so a retry never books twice. Or import a CSV with a preview first.

  3. 3

    Print labels

    One barcode per piece, as PDF or ZPL for thermal printers.

  4. 4

    Follow the parcel

    Events, proof of delivery and COD status through the API, and a secure tracking link for the recipient.

curl -X POST "$API_BASE/api/v1/shipments" \
  -H "x-api-key: $MAICOURIER_API_KEY" \
  -H "Idempotency-Key: order-10482" \
  -H "Content-Type: application/json" \
  -d '{
  "serviceCode": "STD",
  "customerReference": "ORDER-10482",
  "sender": {
    "name": "Example Store",
    "phone": "+302100000000",
    "address": {
      "line1": "10 Example Ave",
      "city": "Athens",
      "postalCode": "10431",
      "country": "GR"
    }
  },
  "recipient": {
    "name": "Maria P.",
    "phone": "+306900000000",
    "locale": "en",
    "address": {
      "line1": "5 Sample St",
      "city": "Karditsa",
      "postalCode": "43100",
      "country": "GR"
    }
  },
  "deliveryMode": "DOOR",
  "pieces": [
    {
      "declaredWeightGrams": 1800,
      "lengthMm": 300,
      "widthMm": 200,
      "heightMm": 150
    },
    {
      "declaredWeightGrams": 950
    }
  ],
  "codAmountMinor": 4250,
  "instructions": "Call before delivery"
}'

Simplified example. Amounts are in minor units (cents), weights in grams, dimensions in millimetres.

ROADMAP

Coming next

Stated plainly, so nobody has to guess.

  • Coming

    ERP adapters

    Sync of customers, charges and documents with ERP systems such as SoftOne.

  • Coming

    myDATA and e-invoicing

    Greek tax documents, once verified against the official AADE specifications.

  • Coming

    Online COD payments

    Card and online payment of cash on delivery through a payment provider.

FAQ

Questions we hear

Who is mAICourier for?

Courier companies, freight carriers, agencies and businesses that move parcels. The same core runs a courier profile (parcels, many stops, cash on delivery, lockers) and a freight profile (multi-piece loads, pallets, lines and partners).

Does the driver app work without signal?

Yes. Scans, deliveries and failed attempts are queued on the device with their own IDs and replayed safely when the connection returns. Conflicts are never settled by last-write-wins; they open a reconciliation case. Opening locker doors and taking payments always need a live connection.

Which lockers are supported?

The mAILockers network, through its partner API. Lockers sit behind an adapter, so other networks can be added the same way.

Can we run several companies or brands?

Yes. mAICourier is multi-tenant, with roles, scoped permissions and an audit trail for every sensitive action.

Does it issue invoices or send to myDATA?

Not yet. Charges, cash on delivery and settlements are recorded on a balanced ledger today. ERP adapters and myDATA are on the roadmap and will be released only after verification against the official specifications.

Which languages does it support?

Greek and English across the back office, the driver app, the tracking page and notifications. Recipients get messages in their own language.

How do we connect our e-shop?

Through the REST API with a merchant API key, or by importing CSV files with a preview before booking. Labels come as PDF or ZPL.

How much does it cost?

It depends on the size of your network and the modules you use. Request a demo and we will go through it together.

See it with your own network

Tell us how you work today and we will walk you through mAICourier with your own flows.