Logistics

Shipping that works the way deep-tech moves

One calculator, 50+ carriers, 11 Incoterms. Get a real quote on a listing page before you ever send an RFQ — and a single tracking link the moment the supplier hands the parcel over.

Carriers we route through

CarrierService tier shown in quotesCoverage
DHLExpress WorldwideGlobal · 220+ countries · door-to-door
FedExInternational PriorityGlobal · strong on US ↔ APAC corridors
UPSWorldwide SaverGlobal · best EU intra-EU rates
USPS / EMSPriority Mail InternationalSmaller parcels · Pacific economies
Royal MailTracked & SignedUK origin, 200+ destinations
Canada PostTracked PacketNorth America origin
EasyPost (consolidated)Economy consolidatedBest price · longer ETA

EasyPost and Shippo aggregate 50+ regional carriers behind a single API — the list above is what the quote widget surfaces on most routes. EU pallets and >70 kg freight road through dedicated forwarders (Schenker, DSV, Kuehne+Nagel) on request.

Speed tiers and indicative pricing

TierIntra-region (EU↔EU, etc.)Inter-regionMultiplier
Express1–3 business days3–6 business days~1.6× priority
Priority (default)2–5 business days5–10 business daysbaseline
Economy5–10 business days10–21 business days~0.55× priority

Pricing is per-shipment, not per-month — the calculator returns a USD amount per shipment based on weight, dimensional weight, customs value and route. Card fees and duties are quoted separately so they never hide inside the line item.

How the calculator works

  1. Inputs. Origin + destination (country and postal code), weight in kg, package dimensions in cm, and declared customs value in USD.
  2. Provider chain. Buyka tries EasyPost first, falls back to Shippo, and finally to a heuristic stub (haversine × billable-weight × per-carrier multiplier) so the widget never returns an empty page during a provider outage.
  3. Rate table. You see 3–7 rows: carrier, service name, total cents in your selected currency, ETA in business days, and whether the quote is binding or indicative (stub mode is marked clearly).
  4. Lead-time fallback. If a route has no live rate (EXW, courier strike, sanctioned destination), the page still shows a typical 3 / 7 / 14-day ETA range from our regional matrix so you can plan.

Incoterms — who pays what

The listing wizard lets the supplier publish a default Incoterm; the buyer can request a different one inside the RFQ. We support the full 2020 set:

  • EXW — Ex Works (buyer picks up, buyer pays everything from the supplier’s door).
  • FCA / FOB — Free Carrier / Free on Board (seller hands to nominated carrier; FOB is maritime-only).
  • CPT / CIP — Carriage Paid / Carriage and Insurance Paid (seller pays freight, risk shifts at first carrier).
  • CFR / CIF — Cost and Freight / Cost, Insurance and Freight (maritime equivalents of CPT/CIP).
  • DAP / DPU / DDP — Delivered at Place / Delivered at Place Unloaded / Delivered Duty Paid (seller carries cost and risk all the way; DDP also covers import duties).

Each term has a tooltip in the wizard with the ICC 2020 responsibility split (export clearance, main carriage, insurance, import clearance, duties). The API endpoint GET /api/v1/shipping/incoterms returns the same table for partners building on top of Buyka.

Customs, taxes, and paperwork

  • Commercial invoice + packing list are auto-generated from the deal page once both sides confirm — PDF, signed with the supplier’s e-signature when KYC is verified.
  • HS code lookup on the listing page suggests a 6–10 digit Harmonized System code from the catalog; the supplier can override.
  • DDP buyers see an estimate of import duties + VAT in the quote (Stripe Tax integration); under DAP/EXW the import paperwork is on the buyer.
  • Restricted goods. Lithium batteries, dangerous goods, dual-use items: the wizard prompts for IATA / ADR documentation before the listing can be published.

Tracking and exceptions

Every shipment lands in the deal page with a single tracking link that pulls events from the carrier in real time. The buyer gets notifications (in-app + email + optional Telegram) on these milestones:

  • Picked up by the carrier
  • In transit / out for customs
  • Delivery exception (held at customs, address issue, refused)
  • Delivered (signature / proof attached)

If a parcel is lost or the tracking goes silent for more than 5 days past ETA, the escrow dispute window opens automatically on the buyer’s side — see the escrow page.

For developers

Same data the listing page consumes is exposed under /api/v1/shipping:

GET  /api/v1/shipping/options       → which provider is live
GET  /api/v1/shipping/incoterms     → 11-row Incoterms table
GET  /api/v1/shipping/regions       → 7 world regions + colour for map
GET  /api/v1/shipping/lead-time     → typical days per route + tier
POST /api/v1/shipping/estimate      → rate table for a concrete parcel

All endpoints are public, rate-limited globally; the estimate body schema is OpenAPI-documented at /api/v1/docs.