ml-connector
SAP Business OneFedEx

SAP Business One and FedEx integration

SAP Business One is where your small-to-midsize business tracks orders, inventory, and fulfillment. FedEx is where those orders become shipped packages and tracking events. Connecting the two keeps your fulfillment pipeline real-time: orders in SAP Business One flow to FedEx for label creation, and incoming FedEx tracking events update SAP Business One's audit trail so your warehouse and finance teams always see the current shipment status without manual lookup or re-entry.

How SAP Business One works

SAP Business One exposes sales orders, purchase orders, business partners (customers and vendors), items, inventory, journals, and chart of accounts through OData v4 REST at a customer-specific Service Layer URL (default port 50000 or 50001 for HTTPS). Authentication uses a session token obtained via POST to /Login, which returns a B1SESSION cookie valid for 30 minutes of inactivity. Sessions are reused across multiple API calls and must not be created per request. Webhooks are supported in version 10.0 FP 2602 and later if the customer activates the Webhook Messenger Service, but polling is recommended as the default approach since webhook setup requires SAP administrator activation. On-premise deployments only; there is no global SaaS endpoint, so the customer provides their Service Layer URL and ml-connector must be able to reach it across the network.

How FedEx works

FedEx exposes shipment creation, label generation, package tracking, rate quoting, and freight management through REST APIs at apis.fedex.com (sandbox at apis-sandbox.fedex.com). Authentication uses OAuth 2.0 Client Credentials with an API Key (client_id) and API Secret (client_secret) from the FedEx Developer Portal. The platform enforces strict rate limits: three tokens per second at the IP level will trigger a 403 for 10 minutes, so tokens must be cached for a full hour after issuance. The Track API accepts up to 30 tracking numbers per request and is free, but advanced tracking webhooks are a paid subscription. FedEx has no freight invoice REST API and no PO master data, so purchase orders and invoices are matched via customer-provided reference fields on shipments. The Ship API provides a transactionId field for client-side deduplication since FedEx does not guarantee server-side idempotency.

What moves between them

Sales orders and shipping addresses flow from SAP Business One into FedEx. ml-connector reads open sales orders from SAP Business One, extracts shipping addresses from the Business Partner master data, and creates FedEx shipments with label generation. FedEx tracking information flows back: ml-connector polls the FedEx Track API on a configurable schedule (typically after label creation and periodically thereafter) and writes tracking events, delivery status, and exception codes into SAP Business One's journal trail so fulfillment staff see the current package location and status without leaving SAP Business One. Rate quotes can also be pulled from FedEx and stored against SAP Business One items for quoting accuracy.

How ml-connector handles it

ml-connector stores the FedEx OAuth2 credentials encrypted and caches the bearer token for one hour to avoid hitting the IP-level rate limit that triggers after three token requests in five seconds. On the SAP Business One side, it obtains a session token once per batch, reuses it across all OData calls in that session, and never creates a new session per API request. When polling FedEx, it batches up to 30 tracking numbers per Track API call and parses delivery events, exceptions, and final status changes into an audit-trail format that SAP Business One can ingest. Sales orders are identified via their DocNum field in SAP Business One, matched to FedEx shipments via custom reference fields, and deduplication on the FedEx side uses the transactionId provided by the Ship API. On-premise SAP Business One deployments often use self-signed TLS certificates, so ml-connector accepts certificate pinning or validation skip per customer configuration. Because neither system has cross-system idempotency keys, ml-connector checks for existing shipments and tracking records before writing to prevent duplicates on retry.

A real-world example

A small-to-midsize ecommerce and direct-to-customer wholesaler runs SAP Business One for orders, inventory, and accounting. They ship via FedEx ground and next-day to customers across the country. Before the integration, the warehouse team manually entered orders into FedEx's web portal and checked tracking status there, then copied delivery confirmations back into SAP Business One for revenue recognition and customer service lookup. With SAP Business One and FedEx connected, each order flows automatically to FedEx label creation, labels print in the warehouse, and tracking events sync back automatically so the sales and finance teams see ship and delivery status without leaving SAP Business One. Month-end revenue recognition is faster because confirmed delivery status is already in the system.

What you can do

  • Read sales orders and customer addresses from SAP Business One and create FedEx shipments with label generation.
  • Poll FedEx tracking for delivery status, exceptions, and final confirmations on a configurable schedule.
  • Write tracking events and delivery status back into SAP Business One so warehouse and finance teams see fulfillment progress without manual lookup.
  • Authenticate SAP Business One with session tokens reused across multiple API calls, and FedEx with OAuth2 client credentials cached to avoid IP-level rate limits.
  • Deduplicate shipments and tracking records across retry cycles using FedEx transactionId and SAP Business One DocNum as client-side idempotency keys.

Questions

Which direction does data move between SAP Business One and FedEx?
Sales orders and shipping addresses flow from SAP Business One to FedEx for shipment creation and label generation. Tracking information, delivery status, and exception codes flow back from FedEx into SAP Business One's audit trail. This keeps fulfillment visibility in one place without manual copying between systems.
How does ml-connector handle FedEx's strict IP-level rate limiting?
FedEx triggers a 10-minute lockout if more than three tokens are requested from the same IP in five seconds. ml-connector caches the OAuth2 bearer token for the full one-hour TTL and reuses it across all calls in a batch window, avoiding repeated token requests. Tracking calls batch up to 30 shipments per FedEx Track API request to minimize request volume.
Why must SAP Business One sessions be reused instead of created per request?
SAP Business One session tokens expire after 30 minutes of inactivity and require a cold-start delay of about five seconds on initial login. Reusing a single session across multiple API calls in a batch reduces overhead and avoids connection churn. ml-connector obtains one token per fulfillment batch and discards it after the batch completes.

Related integrations

Connect SAP Business One and FedEx

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started