Minor bump: adopts the engine's top-level shipping field on
POST /v1/calculate (engine v0.59.0+). Mirrors
opensalestax-js v0.3.0
on the PHP side. Backward compatible — existing two-arg
callers of Client::calculate() continue unchanged.
OpenSalesTax\Shipping value object (request-side) with
optional method, separatelyStated, isHandlingCharge flags.OpenSalesTax\Responses\CalculatedShipping DTO (response-side)
with amount, taxAmount, ratePct, optional taxableReason.?Shipping $shipping = null on Client::calculate().CalculateResponse::$shipping (CalculatedShipping|null).CalculateResponse::$coverageWarning (string|null) — engine
v0.59.0+ surfaces coverage warnings when rate data is incomplete.ShippingTest (12 tests / 36 assertions) +
calculate-mn-shipping.json fixture captured live from engine VM
906 on 2026-05-19 (MN $100 + $12.50 shipping → $9.0250 line tax +
$1.1281 shipping tax).Engine v0.59.0+ required for the engine to actually calculate
shipping. Older engines silently ignore the field; the response's
shipping will be null. Connectors should flag-gate on
$client->capabilities()->features->shippingFirstClass if they
need to detect this at setup time.
How can I help you explore Laravel packages today?