Guide Merchants

Cancel a shipment at the shipping company and get your money back

When the Cancel shipment button appears for a parcel sent to Sham Express, what happens at the company and in your balance, and the limits and messages you may see.

Last updated 22 October 2026 · Last verified 22 October 2026

Purpose#

Some parcels are sent to an external shipping company when you save them. If you change your mind before the company's branch has received the shipment, you can cancel it from the parcel's details page: the platform asks the shipping company to cancel, and once that succeeds everything deducted when you created the parcel is returned to your account.

Who can use it#

  • Only the merchant who owns the parcel. If you try to open another merchant's parcel, you see a not-found page (404). Like the rest of the merchant panel, an independent platform merchant needs an active merchant plan (otherwise the panel redirects to the plans page).
  • Only one shipping company at the moment: Sham Express. The cancel button appears only for this company's parcels. The platform does not currently support cancellation for LFL Express or for companies the super admin sets up with the generic template.

What you need#

  • A parcel that was sent to Sham Express and has a carrier tracking number, shown in the Shipping card of the details page under Carrier tracking number.
  • Status at company must be empty or Awaiting pickup from the branch. Once the branch has received the shipment the button disappears.
  • The parcel must not already be cancelled and refunded, nor in a final status (Delivered, Partial Delivered or Return received by merchant).
  • If the parcel was shipped through your own account with the company, that account must still be linked under My shipping company accounts, because the cancel request is sent with your own key.

Steps to cancel#

  1. Open the parcel details

    From My parcels open the parcel, and check in the Shipping card that Status at company shows Awaiting pickup from the branch.

  2. Press Cancel shipment

    The button is at the top of the page next to Shipping label, Tracking page and Copy to new parcel. A confirmation appears: "Cancel the shipment with the shipping company? The full deducted amount will be refunded to you." Accept it to complete the cancellation.

  3. Check the result

    The page reloads with a success message: "Shipment cancelled at (company name) and the amount was refunded to you."

Parcel details and history (demo data)
Wallet balance and withdrawal request (demo data)

Expected result#

  • Status at company becomes Cancelled in red, a red line below it reads "The shipment was cancelled and the amount was refunded to you.", and the Cancel shipment button disappears.
  • A line is added to the Parcel history: "Shipment cancelled at (company name) at your request — the full deducted amount was refunded to you."
  • The parcel status next to its number (for example Received Warehouse) does not change: the system gives no "cancelled" parcel status; it marks the financial state refunded and the status at the company cancelled. The parcel is not deleted.
  • The parcel.cancelled event is sent to your active webhook links that are subscribed to it (or to all events), within what your plan allows.

What happens to your balance#

The platform reverses the entries posted when the parcel was created, and any weight-adjustment charges:

  • Through the platform account with the company: what was deducted returns to your Shipping balance: the company's price and the platform fee.
  • Through your own account with the company: the amount held as a guarantee (it leaves Reserved amounts) returns to your Shipping balance, together with the platform fee if there was one.

It appears in Transaction history on My wallet as Cancel parcel and refund, described as "Cancel parcel" plus the tracking number. The refund is complete; the percentages that apply to a failed delivery do not apply.

Common mistakes#

Message Meaning and what to do
"This parcel is not with a shipping company that supports cancellation from the system." The parcel is not with a company that has cancellation in the system, or it has no carrier tracking number.
"The parcel is already cancelled or completed." The parcel is already cancelled and refunded, or in a final status.
"Sham received the shipment at the branch and it can no longer be cancelled from the system — contact the Sham branch." The company refused the request (a 403 response) because the branch has received the shipment. Nothing changes in your account; contact the branch.
"You have not linked your account with (company name) after" The English message ends with the word "after"; it means you have not linked the account (yet). The parcel was sent through your own account, but that account is no longer linked (the link was removed or the account was deactivated). Link it again under My shipping company accounts, then try again.
"Your account has no API key with Sham Express — link it from «My shipping company accounts»." The account is linked but has no API key saved. Link it again with the key under My shipping company accounts, then try again.
An error from the company, such as "Sham Express key is invalid or suspended" or "Shipment not found at Sham Express" The error text is shown as received; nothing is refunded unless the company's cancellation succeeds.

The button may still show after the branch has received the shipment, because Status at company is the last status that reached the platform (updated by the company's notifications or a check every 30 minutes); the company's refusal then appears as in the table.

Limits and permissions#

  • Up to 20 cancel requests per minute are accepted.
  • A parcel sent to an external shipping company cannot be deleted from the panel (Delete is hidden); cancelling is the only way, and only for Sham Express.
  • The merchant API's cancel-parcel endpoint does not cancel parcels sent to an external shipping company; it answers with the code not_cancellable and status 409.
  • If the company cancels the shipment itself before receiving it, the same refund is applied automatically when its "cancelled" status arrives.

API

  • POST /api/v1/parcels/{tracking}/cancel