1. Webhook
MyCourier Order API
  • Introduction
  • Shipments
    • Check coverage
      POST
    • Place orders
      POST
    • Get shipment details
      GET
    • Get last status
      GET
    • Cancel shipment
      POST
    • Get shipments count
      GET
    • List shipments
      POST
    • Get label
      GET
  • Locations
    • Get countries
      GET
    • Get cities
      GET
  • Webhook
    • Shipment status update
      POST
  • Schemas
    • Error
    • ServiceType
    • TrackingStatus
    • Price
    • CheckCoverageRequest
    • CoverageOption
    • CheckCoverageResponse
    • CoverageError
    • OrderAddress
    • OrderItem
    • Order
    • PlaceBulkRequest
    • AcceptedOrder
    • DeniedOrder
    • PlaceBulkResponse
    • Address
    • Recipient
    • PickupLocation
    • Driver
    • ShipmentSummary
    • ShipmentDetails
    • AllShipmentsRequest
    • ShipmentsCount
    • WebhookEvent
  1. Webhook

Shipment status update

POST
/mycourier/webhook/shipment-status
MyCourier calls your server each time the status of one of your orders changes, whether the order came from the API, the portal or a file import. You build this endpoint and give its address to MyCourier.
Reply. Any 2xx answer within 10 seconds counts as delivered.
Retries. No answer, a timeout, 5xx, 408 and 429 are tried again later, for up to 24 hours. Any other 4xx is not tried again. A repeat carries the same eventId, so keep the ids you have handled and ignore duplicates.
Address. It must be a public HTTPS address.
Requests carry Content-Type: application/json, User-Agent: MyCourier-Webhook/1.0 and X-MyCourier-Event-Id (the same value as eventId). The calls are not signed, so use an address that is hard to guess and check the tracking number against your own orders.

Request

Authorization
JWT Bearer
Add the parameter
Authorization
to Headers
Example:
Authorization: ********************
or
Body Params application/jsonRequired

Example
{
    "eventId": "evt_3f9a1c7e5b2d48a09c6e1f73b2d4a8c5",
    "trackingNumber": "FQ3UFIZ6RQWU",
    "orderNumber": 2902924,
    "shipperRef": "SHOP-10458",
    "status": "delivered",
    "statusUpdatedAt": "2026-10-28T20:41:09.000Z",
    "serviceType": "NEXT_DAY",
    "orderDate": "2026-10-27T13:40:20.000Z",
    "expectedDeliveryDate": "2026-10-28"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://flype-ops-panel-dev.web.app/mycourier/webhook/shipment-status' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "eventId": "evt_3f9a1c7e5b2d48a09c6e1f73b2d4a8c5",
    "trackingNumber": "FQ3UFIZ6RQWU",
    "orderNumber": 2902924,
    "shipperRef": "SHOP-10458",
    "status": "delivered",
    "statusUpdatedAt": "2026-10-28T20:41:09.000Z",
    "serviceType": "NEXT_DAY",
    "orderDate": "2026-10-27T13:40:20.000Z",
    "expectedDeliveryDate": "2026-10-28"
}'

Responses

🟢200
Received. Any 2xx status is accepted; the body is ignored.
This response does not have a body.
Modified at 2026-10-28 04:52:40
Previous
Get cities
Next
Error
Built with