EasyParcel
The fulfillment provider, and what is still needed to switch it on.
apps/backend/src/modules/easyparcel/ — registered as a provider of the
fulfillment module. Provider identifier: easyparcel.
Built but not active. EASYPARCEL_API_KEY is unset, so the shop falls back
to a flat shipping option. Nothing below is running in production yet.
The API it targets
The Individual API — form-encoded POSTs to a single endpoint with the
action in the query string and the key in the body:
| Action | Purpose |
|---|---|
EPRateCheckingBulk | Quote couriers for a parcel |
EPSubmitOrderBulk | Book a shipment |
EPPayOrderBulk | Pay for it from account credit |
Requests are application/x-www-form-urlencoded, and the API key goes in the
body as api — not as a header.
There is a newer portal at developer.easyparcel.com which is an OAuth
API, not this one. Which is available depends on the account type, and this
module targets the Individual API. Confirm which the AUTOXSPARE account has
before wiring credentials.
Credit, not invoicing
EasyParcel works from pre-funded credit. EPPayOrderBulk fails when the
balance is short, and it fails at booking time — after the customer has already
paid. Worth monitoring before busy periods.
Warehouse
Origin is Jitra, Kedah, set up by
apps/backend/src/scripts/setup-shipping-my.ts, with a service zone covering
all of Malaysia.
Shipping options return an empty list — even with a valid cart and address —
unless the sales channel is linked to the stock location via
linkSalesChannelsToStockLocationWorkflow. This is the single most confusing
failure in the shipping setup, because nothing errors; the options are just
absent. The setup script is step-wise idempotent because the first version
bailed early and left the configuration half-built.
Weights
Rates are priced by weight, so the catalogue's weight data is part of this integration working:
- 4,404 variants have weights imported from Shopify
- 41 have none
- 6 look wrong by a decimal — an alternator recorded at 290 kg is the clearest case
Fix both before switching on live rates, or those products will quote absurd delivery prices.
Switching it on
- Confirm which EasyParcel API the account has.
- Set
EASYPARCEL_API_KEYandEASYPARCEL_ENVon the Railway service. - Redeploy.
- Confirm the Gateway mode widget shows Shipping as
LIVErather thanOFF. - Place a test order to a real address and check the quoted rate is sane.