Modern shipping, zero setup pain

The shipping platform
every store deserves.

Rate-shop UPS, FedEx, DHL, USPS, Royal Mail and EasyPost in parallel. Sync orders from your store, automate labels, tracking and returns — without touching a spreadsheet.

No credit card Live in 5 minutes Cancel any time
Plays well with everything you already sell on
Why Shipnest

Built for shops that outgrew their carrier dashboard.

Every screen is keyboard-first, every table remembers your columns, every mutation is audited. We sweated the boring details so you ship the fun ones.

Rate shop in parallel

Quote every enabled carrier at once and pick the cheapest, fastest or best-margin service per order. Markup policies you control.

One-click integrations

OAuth install for Shopify, Amazon, eBay, WooCommerce and UPS. Connect in two clicks, no dev portals required.

Automations that stick

A real rule engine — nested AND/OR trees, 11 action types, dry-run testing. Set it once, never touch a drop-down again.

Carriers

Your rates, our platform, or both.

Paste your own UPS / FedEx / DHL / Royal Mail account for pass-through rates, or use our negotiated platform accounts with a markup you control. Mix and match per shipment.

  • One-click OAuth install for UPS — paste your shipper number, consent in your UPS.com dashboard, done. USPS, FedEx, DHL and Royal Mail are tenant-BYO via API key paste.
  • Multi-piece shipments: UPS, FedEx, Royal Mail and EasyPost return per-box tracking numbers we persist individually.
  • Automatic token refresh + in-transit tracking refresh on a cron. Labels void from the same screen you bought them.
  • Parallel rate-shop fans out across every enabled account. Markup is applied only to your own platform rates — customer BYO stays at cost.
Supported carriers
Platform rates built in: offer UPS + FedEx at our negotiated pricing, with a markup you set. Pass-through at cost for every customer-owned account.
Sales channels

Connected end to end.

Connect your storefront and orders flow in automatically. We handle the refresh tokens, you handle the orders.

Orders → labels → fulfillment

Paid orders land automatically. Ship a label and the fulfillment is posted back to the channel with the tracking number — all from one screen.

Stock stays in sync

Every label buy decrements local stock and broadcasts the new on-hand level back to Shopify, Woo, BigCommerce, Etsy, eBay and Amazon.

Catalog pull + push

Import your products once, keep prices and images in sync. Shopnest → Shopify / Woo push is supported too — one source of truth.

Automations

Express rules in natural logic.

A real rule engine: nested AND/OR conditions against any order field, and eleven distinct action types. Dry-run against live orders before switching on.

  • If weight > 10 kg → ship UPS Ground and add signature required.
  • If destination country ≠ origin → attach commercial invoice and set insurance.
  • If tag contains 'gift' → use unbranded packaging and hide price.
  • If order total > $200 → route to priority warehouse and notify ops.
Rule — heavy-parcel routing
IF all:
weight_g >= 10000
OR any:
tags includes "fragile"
value_cents > 25000
THEN
SET_CARRIER UPS
SET_SERVICE Ground
REQUIRE_SIGNATURE true
SET_INSURANCE declared_value
NOTIFY ops@yours.com
Developer API

Or skip the UI entirely.

Every screen in Shipnest is backed by a documented REST endpoint. Point your ERP or headless-commerce stack at an API key and let it drive the whole lifecycle — push orders, rate-shop, buy labels, void, track — without ever opening the dashboard.

Endpoints
Orders
  • POST/api/ordersCreate (headless)
  • GET/api/ordersList + filter
  • GET/api/orders/:idDetail
Carriers
  • GET/api/carrier-accountsDiscover accounts
Shipping
  • POST/api/ratesRate-shop all carriers
  • POST/api/insurance/quoteThird-party insurance
  • POST/api/labelsBuy label
  • POST/api/labels/:id/voidRefund / void
  • POST/api/address/validateLive DPV verify
Tracking
  • GET/api/shipmentsList + filter
  • GET/api/shipments/:idDetail
  • GET/api/tracking/:nLive events
Bearer sk_live_… + per-org rate limitsFull reference
From headless storefront to shipped parcel
# 1. Push an order from your headless storefront
curl -X POST https://my.shipnest.app/api/orders \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "orderNumber": "HL-1042",
    "shipTo": { "name": "Jane Doe", "line1": "1 Main",
                "city": "Austin", "postalCode": "78701",
                "country": "US" },
    "items": [{ "sku": "BAG-1", "name": "Tote",
                "quantity": 1, "priceCents": 4500,
                "weightG": 500 }]
  }'

# 2. Rate-shop across every enabled carrier
curl -X POST https://my.shipnest.app/api/rates \
  -H "Authorization: Bearer sk_live_..." \
  -d '{ "orderId": "ord_...", "parcels": [...] }'

# 3. Buy the cheapest (or fastest) — same idempotency key retried
curl -X POST https://my.shipnest.app/api/labels \
  -H "Authorization: Bearer sk_live_..." \
  -d '{ "orderId": "ord_...", "serviceCode": "03",
        "idempotencyKey": "HL-1042-attempt-1" }'

# You now have a tracking number + signed webhook events
HMAC-signed webhooks
shipment.*, return.*, claim.* with timestamp anti-replay
Cursor pagination
newest-first, stable ids, no COUNT queries
Idempotent
retries on /api/labels collapse by idempotencyKey
In the box

Every screen your ops team opens all day.

Shipnest isn't a rate-shop wrapper. It's the full floor-to-dashboard workflow — with the polish of a modern B2B SaaS.

Scan-to-print

Barcode-first floor workflow. Tap the scanner, the label drops straight out of your Zebra — no clicks, no print dialog.

Direct-to-printer via PrintNode

Skip the browser print dialog: route every label to your warehouse Zebra or Dymo by default, split routing per warehouse, and retry failed jobs with one click. Packing slips too, rendered server-side.

Batch shipping cockpit

Queue every awaiting-ship order in one workspace. Pre-flight blocker panel catches missing weight, ship-to gaps, customs or DDP-on-platform issues BEFORE you click Quote. Inline-edit weight, warehouse, parcel dims, signature, insurance, incoterms, hazmat, per-line customs, address and contents from the row — bulk-edit the same fields plus tag, priority, assignee, hold, append note across N selected orders. Quote all → pick override per row with the carrier comparison popover → Buy all → schedule pickups + close manifests + print packing slips, all from the toolbar.

Printable docs

Packing slips, pick lists, commercial invoices, manifests — every PDF is a styled HTML page, printable from any browser.

Bulk edits become reusable rules

After bulk-editing 12 orders the same way from /batch, a banner offers to save the patch as an auto-rule. Pick a lane (domestic / international / EU export), name the rule, hit Save — the system translates each field into a SET_* action and creates the rule disabled for your review. Next time orders matching that lane arrive, the rule fires automatically. Closes the loop between manual work and automation without a separate trip to /rules.

Returns portal

Branded self-serve returns: customer enters order number, picks items, prints a return label. You set the policy.

Branded tracking page

A public /track URL on your domain. Your brand, your colors, no carrier noise.

Push tracking, not 30-min polling

Connect EasyPost or FedEx and we auto-subscribe to their tracking webhook so status updates land in seconds, not on a cron tick. UPS / DHL / USPS / Royal Mail still ride the 30-min polling cron (their APIs are file-based or non-existent for push) — exact same experience downstream, just a slower path. Subscription auto-unregisters on disconnect.

Email + notifications

Built-in templates for shipped, delivered, return-approved. Resend-powered. Custom sender, custom copy.

Under the hood

Security that survives an audit.

We shipped the boring parts so the interesting parts work. Encryption, RBAC, multi-tenancy and audit logs are the foundation — not the roadmap.

AES-256-GCM at rest

Every carrier + channel credential is encrypted with AES-256-GCM keyed by the operator's AUTH_SECRET. Never logged, never leaves Postgres in cleartext.

TOTP-mandatory admin

The operator console requires RFC-6238 TOTP on every sign-in. No backdoor flag, no exception — 2FA is the gate.

Multi-tenant isolation

Every row is scoped by organizationId at the query boundary. Demo data is org-gated (isDemo flag) so no tenant ever sees another's.

Full audit trail

Carrier connects, label buys, rule edits, webhook rotations — each one logs who, what, when. Exportable CSV.

Passkeys + 2FA + scoped sessions

Layer Touch ID / Face ID / hardware keys (WebAuthn) on top of password + RFC-6238 TOTP — keep them all as fallbacks. Password reset rotates every other session globally so a stolen cookie dies the moment a credential is reset. Per-IP rate limits on every login surface.

Signed webhooks + SSRF defense

Outbound webhooks carry HMAC-SHA256 over a timestamp-prefixed body so replay isn't an option. Inbound URLs go through a strict allow-list — loopback, RFC 1918, cloud metadata (169.254.169.254), CGN, link-local IPv6 and internal TLDs all refused at register and at delivery time.

Public status + cron heartbeats

/status surfaces DB latency, error floor, cron freshness with auto-recorded incident history (open + 90 days resolved). Every /api/cron/* run writes a heartbeat so a missed sync becomes visible within one cycle in /admin and on the public page.

Pricing

Simple, volume-honest tiers.

Free tier for shops getting started. Paid tiers scale with your label volume and unlock team size, multi-warehouse, API access and priority support. Save 2 months by paying annually. Upgrade, downgrade or cancel any time from the Stripe portal.

Starter
Free

Everything you need to start shipping. Bring your own carrier accounts, we don't charge per label.

  • Up to 100 labels / month
  • Rate-shop all 6 carriers
  • All 8 sales channels
  • Branded tracking + returns portal
  • Email support
Growth
$39
/mo
or $32.50/mo billed annually
14-day free trial

For shops hitting stride. Automations, batch workflows, and more headroom.

  • Everything in Starter
  • 1,000 labels / month, then $0.08 each
  • Automation rule engine
  • Batch cockpit (inline + bulk edit every shipping field)
  • 3 users · +$5 / extra seat
Most popular
Pro
$69
/mo
or $57.50/mo billed annually
14-day free trial

Multi-warehouse ops with API access and PrintNode per-warehouse routing.

  • Everything in Growth
  • 3,000 labels / month, then $0.06 each
  • Multi-warehouse + routing
  • API keys & webhooks
  • 10 users + 5 warehouses · addons available
Scale
$99
/mo
or $82.50/mo billed annually
14-day free trial

For high-volume dispatch. Unlimited users and warehouses, priority support.

  • Everything in Pro
  • 5,000 labels / month, then $0.04 each
  • Unlimited users
  • Unlimited warehouses
  • Priority support
Enterprise
Contact us

Custom volume, SAML SSO, dedicated onboarding, SLA. For ops teams that need more than the shelf.

  • Everything in Scale
  • Custom label volume
  • SAML SSO / SCIM
  • Dedicated onboarding
  • 99.9% uptime SLA

Per-label overage replaces hard caps so a burst week never blocks shipping — you only pay for what you actually ship. Per-seat ($5/mo) and per-warehouse ($10/mo, Pro) addons let you scale without forcing a tier upgrade. Annual saves you 2 months. Stripe handles billing, we handle shipping.

FAQ

Everything we get asked in the first call.

Do I need my own carrier account?+
No — you can ship entirely with our platform UPS + FedEx accounts at our negotiated rates. If you already have carrier contracts, paste them in /carriers and we'll quote against both. You control which account shows up in rate-shop per order.
Can I still use UPS / FedEx if I'm outside the US?+
Yes. UPS and FedEx support international rates in most regions. For non-US merchants we recommend DHL or Royal Mail for domestic plus UPS / FedEx International Priority / Economy for cross-border. All quotes live in the same rate-shop panel.
How does OAuth install work for channels and carriers?+
For Shopify, WooCommerce, Amazon, eBay and UPS, you click Connect, authorize on the partner's site, and we keep the refresh tokens encrypted on our side. FedEx, USPS, DHL, Royal Mail and Etsy use a traditional API-key paste — register a developer app on each portal once, paste the credentials, done.
What happens when a token expires?+
Every adapter refreshes tokens automatically. If a refresh fails (seller revoked the app, secret rotated, account suspended), the store is marked auth-failed on the dashboard so you can re-connect in one click.
Is my data isolated from other tenants?+
Yes — every row in the database is scoped by organizationId and every query enforces it. Credentials are encrypted at rest with AES-256-GCM keyed by the operator's AUTH_SECRET. Demo data is gated behind an isDemo flag on the organization.
Where is Shipnest hosted?+
On Railway with a managed Postgres plugin. Scheduled jobs run via GitHub Actions cron. Your data never leaves your chosen region.
Can I bring my own email provider?+
Resend is the default. The email module is pluggable — set EMAIL_PROVIDER=console for dev or swap in another transactional provider via a small adapter.
What's the fastest way to test without paying?+
Sign up, try the one-click demo login from /login, or connect a Shopify dev-store and a single carrier sandbox. You'll see the full flow end-to-end without buying real labels.
What if my stores run in different currencies?+
Every order keeps its native currency from the channel. A US Shopify order stays in USD, a UK Shopify order stays in GBP, an Etsy-EU order stays in EUR. KPIs, reports and CSV exports show one line per currency (`$4,200 · £1,800 · €900`) — never a fake FX rollup. The Default currency setting in /settings is just the fallback for manual orders and the product catalog; it does NOT override order currencies.
Do I need PrintNode?+
Only if you want labels to skip the browser print dialog. Without PrintNode you click Print → a new tab opens → you hit print. With PrintNode wired up, labels go directly to your configured Zebra / Dymo. It's per-user, costs ~$5/month on their side, and you paste your API key in Settings → Printers. Warehouse operators can even route per-warehouse (dock A's Zebra vs dock B's), with one-click retry on any failed job.
Can I ship a one-off package without an order?+
Yes — `/labels/new` builds a standalone label end-to-end without any channel involvement. Pick warehouse or paste a fresh ship-from (with optional Save to address book), enter ship-to, parcel + value, choose a carrier from your connected accounts, buy. The shipment lands in `/shipments` tagged 'Quick label' so it's easy to spot among channel orders.
What if I disconnect a channel — can I delete the leftover orders?+
Yes. Once an integration is disconnected from `/integrations`, orders + voided shipments tied to it can be bulk-deleted from `/orders` and `/shipments`. Live integrations always block the delete so a stale tab can't nuke an in-flight order. Live (non-voided) shipments also block — void the label first. Every delete writes an audit row.
Can I sign in without a password?+
Yes — passkeys (WebAuthn) work side-by-side with the password + TOTP flow. Add a passkey from `/settings/security` → 'Passkeys' (Touch ID, Face ID or a hardware key) and you can sign in with one tap on `/login`. The password and TOTP stay as fallbacks; removing a passkey doesn't lock you out of any other method.
Does Shipnest learn from my behaviour and suggest automations?+
It does. The top of `/rules` carries a 'Suggested automations' card that mines your last 30 days of activity and surfaces patterns like 'you picked UPS for 8/8 orders to GB' or '12/14 Shopify orders carry the tag wholesale'. One click creates the rule (paused so you review the condition + action before it fires). We need 5+ events at 80% consistency before suggesting anything, so it stays useful instead of noisy.
Can I just describe what I want a rule to do, instead of building it?+
Yes — the 'Describe with AI' button on `/rules/[id]` opens a chat where you type the intent in plain English ('add insurance for orders over $200 going outside the US'). GPT-4o returns a strict rule shape, we validate every field against the engine's registry, drop anything it invents, and pre-fill the form for you. You review the conditions + actions and click Save. We never persist anything until you do.
Is there a chat for me + my customers to ask questions?+
There's a floating chat widget on every marketing page AND inside the app. Visitors get an AI-powered support bot that knows the entire product (pricing, integrations, billing, how-to). When it can't help — or when a customer types 'talk to a human' — it escalates straight to our team in `/admin/inbox`. We can take over the chat with one click; the AI hands back automatically when we're done. Tenant chats also surface inside your app so you can ask anything without leaving Shipnest.
Can I schedule a pickup with the carrier from inside Shipnest?+
Yes — pickup scheduling fires through the real carrier API for UPS, FedEx, DHL Express and EasyPost. There's a checkbox on `/labels/new` and inside the rate-shop panel on `/orders/[id]`: tick it, pick a date and ready-by/close-by window, and after the label commits we call the carrier and persist the confirmation number (UPS PRN, FedEx pickupConfirmationCode, DHL dispatchConfirmationNumber). Carriers without an API method — USPS, Royal Mail — fall through to a local-only record in `/pickups` so you still have a ledger. Standalone scheduling from `/pickups` works the same way.
Do you support USPS SCAN forms?+
Yes — close a manifest at `/manifests` and we hit EasyPost `/v2/scan_forms`, which relays to USPS for the PS Form 5630 (required when shipping 25+ USPS parcels/day) and to UPS/FedEx where their APIs support it. The driver scans the one SCAN form barcode instead of every individual label, which speeds up pickup and gets your first scan event into tracking faster. FedEx Ground accounts also get the carrier's own Close Manifest PDF via `POST /ship/v1/shipments/closures`. Carriers without an API method (UPS End-of-Day, DHL, Royal Mail) close locally — same row, you just don't get a carrier-issued SCAN form to hand the driver.
Can I file insurance claims without logging into the carrier portal?+
For UPS, FedEx, Shipsurance and XCover — yes, end-to-end. Click File on the claim and we call the real provider API (UPS Claims, FedEx Customer Support cases, Shipsurance, XCover) to open the case. Then upload damage photos / invoice / packing slip through the same widget and we pipe the bytes straight to the provider's attachment endpoint — Shipnest never stores them. USPS, DHL Express and Royal Mail don't expose claim APIs so they fall through to a local-only row you finish on portal; even there the audit trail + lifecycle (Submitted → Under review → Approved → Paid) stays in `/claims`.
Does tracking update in real time or via polling?+
Both, depending on the carrier. EasyPost and FedEx push tracking events to us via webhook the moment they happen — we auto-subscribe at carrier connect, so updates land in seconds. UPS, DHL Express, USPS and Royal Mail don't expose a clean push API, so they stay on the 30-min polling cron. The experience is identical downstream (notification bell, status update, customer email), just a slower feedback loop on the polling carriers.
What happens if I blow past my plan's label cap mid-month?+
Nothing breaks. Labels keep shipping at the tier's overage rate — $0.08/label on Growth, $0.06/label on Pro, $0.04/label on Scale — and the overage gets added to your next Stripe invoice automatically. You can disable this in /settings/billing if you want a hard budget ceiling instead. Free Starter tenants do hit a hard cap (there's no subscription to meter against) and need to upgrade to keep going.
Can I add seats or warehouses without upgrading the whole plan?+
Yes — Growth and Pro both expose +$5/mo per extra user seat, and Pro adds +$10/mo per extra warehouse slot past its built-in 5. One click in /settings/billing creates the Stripe subscription item and prorates the rest of the cycle. Remove a seat the same way (the system refuses to drop you below your current teammate count). Scale is unlimited so it doesn't need addons.
How much do I save with annual billing?+
Two months free across all paid tiers. Growth: $390/year ($32.50 effective monthly, saves $78). Pro: $690/year ($57.50 effective, saves $138). Scale: $990/year ($82.50 effective, saves $198). Toggle Annual on signup or switch cycles from the Stripe Customer Portal (proration handled automatically).
What if my payment fails?+
We give you 14 days of grace where labels keep shipping while the card gets retried. A persistent amber banner counts down the days remaining so it's hard to miss. The moment you update the card via Stripe Portal — or just attach a new payment method — we auto-retry the failed invoice immediately instead of waiting for Stripe's regular schedule. After 14 days expire, label buys pause until the invoice clears (rate-shop stays open so you can browse quotes).

Ship your first label in the next five minutes.

Connect a store, paste a carrier account, print a label. No seat fees, no setup calls, no fake "book a demo" dance.