Delivery absorption is now set per parcel size, orders carry a packing plan, and you can finally see the commission before you list.
Breaking#
PUT /v1/company/shipping-absorption requires parcel_tier#
Absorption used to be one promise per destination. It is now one per destination and parcel size, because the two are not remotely the same purchase: on RO→HU the courier charges about 26 RON for a small parcel and 539 for a large one.
{
"country_code": "RO",
"parcel_tier": "large",
"currency": "RON",
"bands": [
{ "min_amount": 0, "max_amount": 150000, "absorbs": false },
{ "min_amount": 150000, "max_amount": null, "absorbs": true }
]
}
Omitting it returns 400 parcel_tier_required. We made it required rather than
defaulting to small on purpose — a default would have let you set bike thresholds
while silently rewriting your accessory bands.
GET /v1/company/shipping-absorption returns one set per tier, and now uses
min_amount / max_amount (it previously returned min_amount_cents /
max_amount_cents, which you could not round-trip into the write).
New#
GET /v1/products/{id}/pricing#
What a buyer is charged, and what it costs you — from the same service that renders the product page, so you and your buyer never see different numbers.
Commission on every category#
GET /v1/categories now carries commission per category, inherited down the tree.
Set margins before listing instead of inferring the fee from a completed order.
max_amount: null means uncapped.
Packing: parcels on accept#
POST /v1/orders/{id}/accept takes an optional parcels array — which order lines go
in which box. The courier prices per parcel, so three products declared as one box is
one charge rather than three. Send nothing and one box per line is assumed, exactly as
before.
Packing is merge-only: an order cannot ship in more boxes than it has lines.
Smaller additions#
GET /v1/orders/{id}returnsparcels, and each order item now carries itsid— that id is what a parcel plan references.- Products carry a derived
shipping_classandparcel_tier, so you can tell which of your two band sets governs a listing. GET /v1/wallet/balancegainedsettled_to_fees: terminal, where absorbed fees consumed the whole order. It was previously missing from the response entirely.GET /v1/wallet/lotsgainednet_transferred_amount— what actually reached the seller after absorbed fees were withheld. Reconcile against this, notamount.
