Oracle NetSuite and FedEx integration
Oracle NetSuite holds your orders, customers, and inventory. FedEx moves your packages and tracks them in transit. The two need to talk to reduce manual re-entry and connect your fulfillment to your accounting records. When a sales order ships from NetSuite, ml-connector creates the FedEx shipment, pulls the tracking number and label URL back into your invoice, and polls FedEx for delivery updates so your NetSuite records stay current.
What moves between them
Sales orders and invoice data flow from NetSuite into FedEx. When a sales order is marked as shipped in NetSuite, ml-connector reads the customer address and item lines, calls the FedEx Ship API to create a shipment with the customer details from NetSuite, and writes the FedEx tracking number and label URL back into the NetSuite invoice record. Tracking events can flow back from FedEx into NetSuite via polling the FedEx Track API (free) or webhook subscription (paid). Reference data such as customer addresses is read from NetSuite and used as-is on the FedEx shipment.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For NetSuite, it uses OAuth2 Client Credentials and refreshes the 60-minute token before it expires, or switches to Token-Based Authentication if OAuth is not available in your NetSuite role. For FedEx, it caches the OAuth token for the full 1-hour TTL to stay under the 3-tokens-per-second IP-level rate limit. When a sales order ships, ml-connector reads the order and customer from NetSuite via REST, maps the shipping address and item details, calls the FedEx Ship API with the customer's FedEx account number, and receives back a label URL and tracking number. These are written into the NetSuite invoice as custom fields. Because NetSuite Event Subscriptions lack HMAC signatures, ml-connector validates the source IP or validates a shared secret in the webhook URL. FedEx provides transactionId on every shipment response, so ml-connector uses this for deduplication if a shipment is retried. For tracking updates, ml-connector either polls the FedEx Track API at a cadence you control or subscribes to FedEx webhooks (paid service with monthly per-shipment cost). Every record move carries an audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized e-commerce retailer uses Oracle NetSuite for orders, invoicing, and inventory, and ships with FedEx. Before the integration, the fulfillment team picked items from inventory, then manually created FedEx shipments in the FedEx portal, copied the tracking number back into the NetSuite invoice, and checked the FedEx tracking portal each morning to see which packages had delivered. With NetSuite and FedEx connected, each marked-as-shipped order triggers a FedEx shipment automatically, pulling customer and item details from NetSuite to prefill the label, and the tracking number flows back into the invoice without re-keying. Delivery confirmations are synced back hourly, so the finance team knows which invoices have actually reached the customer.
What you can do
- Create FedEx shipments from NetSuite sales orders with customer and item details automatically populated.
- Sync FedEx tracking numbers and label URLs back into NetSuite invoice records after shipment creation.
- Poll FedEx Track API (free) or subscribe to paid webhooks for delivery updates and sync status back to NetSuite.
- Authenticate NetSuite with OAuth2 Client Credentials and FedEx with OAuth2 credentials, caching tokens to stay under rate limits.
- Track every shipment creation and tracking sync with a full audit trail and replay capability on failure.
Questions
- Which direction does data move between NetSuite and FedEx?
- Sales order and customer data flow from NetSuite into FedEx to create shipments. FedEx tracking numbers, label URLs, and delivery events flow back into NetSuite invoice records. NetSuite is the source of truth for orders and customers, and FedEx is the source of truth for tracking and delivery status.
- How does ml-connector stay under FedEx rate limits?
- FedEx enforces strict rate limits: 3 tokens per second at the IP level, and 1,400 transactions per 10 seconds. ml-connector caches the OAuth token for the full 1-hour TTL and spreads shipment creation calls to stay under the transaction limit. If rate limiting occurs, ml-connector backs off and retries with jitter.
- Does the integration handle shipping without a FedEx account number?
- No. FedEx requires a valid account number for account-rated shipments and most shipping operations. ml-connector can store the account number per customer or globally, but at least one must be configured. The FedEx sandbox is virtualized and does not require a real account for testing.
Related integrations
More Oracle NetSuite integrations
Other systems that connect to FedEx
Connect Oracle NetSuite and FedEx
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started