Shipping (FedEx, UPS)
Real-time shipping rates at checkout from FedEx and UPS. USPS support is planned.
Setup
FedEx
- Register a developer account at developer.fedex.com (opens in a new tab)
- Create a production (or sandbox) API key
- In admin → Settings → Shipping:
- Enter FedEx account number
- Enter FedEx API key (encrypted at rest)
- Toggle sandbox
UPS
- Register at developer.ups.com (opens in a new tab)
- Create an API app with OAuth credentials
- In admin → Settings → Shipping:
- Enter UPS account number
- Enter UPS API key (encrypted)
- Toggle sandbox
Ship-from address
Set your origin address — fields ship_from_name, ship_from_address1, ship_from_city, ship_from_state, ship_from_zip, ship_from_country.
How rates are fetched
- Customer enters shipping address at checkout
POST /checkout/shipping-ratessent with cart ID + address- Backend calculates cart weight (sum of
variant.weight_oz × quantity) - Calls FedEx + UPS APIs in parallel
- Merges rates, sorts by price, returns to customer
- Customer picks rate — stored on the order
Supported services
FedEx: Ground, Home Delivery, Express Saver, 2-Day, Standard Overnight, Priority Overnight
UPS: Ground, 3-Day Select, 2nd Day Air, Next Day Air Saver, Next Day Air, Next Day Air Early
Free shipping
Set free_shipping_threshold in tenant settings. Orders above this amount show "Free shipping applied" and cost $0 for shipping.
Credentials security
API keys are encrypted at rest via CredentialEncryption. They're only decrypted on the server when making a call.
Planned enhancements
- USPS rate lookup + Priority Mail labels
- Automated label generation + printing
- Real-time tracking updates via carrier webhooks
- Customer shipping notifications
See the shipping integration planning notes for details.