Visma and FedEx integration
Visma.net ERP keeps your accounting, purchasing, and project financials in one place. FedEx moves your packages and tracks them in transit. Connecting the two lets you create shipments directly from purchase orders in Visma, track packages automatically, and post freight costs into your general ledger without manual re-entry. Your financial records and your logistics stay in sync.
What moves between them
Purchase orders flow from Visma into FedEx to create shipments tied to supplier accounts and PO numbers. FedEx tracking updates flow back into Visma on a scheduled poll, matching shipments to purchase receipts and freight records. Freight costs extracted from FedEx are posted into Visma's general ledger and allocated to project accounts and cost dimensions tied to the original purchase order. Rates and quotes are pulled on demand when a user requests a shipment quote in Visma.
How ml-connector handles it
ml-connector accepts the Visma client credentials and FedEx account number per customer and stores both encrypted. For Visma, it uses OAuth 2.0 client credentials to obtain a bearer token and polls purchase orders by lastModifiedDateTime. For FedEx, it obtains a separate OAuth 2.0 token and caches it for the full 1-hour TTL to stay under FedEx's 3-tokens-per-5-seconds IP rate limit. When creating a shipment from a Visma PO, ml-connector calls FedEx Ship API with the transactionId field for client-side deduplication in case of network retry. FedEx requires the account number for account-rated shipments, which ml-connector carries per tenant. Tracking updates are polled from FedEx using the Track API, bundled 30 numbers per call, and matched back to Visma purchase receipts. Freight costs are read from shipment records and posted into Visma general ledger via journal transactions, allocated to cost dimensions from the original purchase order. ml-connector tracks token expiry on both sides and refreshes proactively to avoid mid-flight failures. ETag-based optimistic locking is applied on Visma PUT operations. Every shipment and receipt carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized distributor runs Visma.net ERP for accounting and project costing and ships orders via FedEx. Before integration, the logistics team exported shipment manifests from FedEx and re-entered tracking numbers and freight charges into Visma by hand, then spent the first days of month-end chasing freight accruals and reconciling FedEx invoices by manual lookup. With Visma and FedEx connected, each purchase order triggers a shipment request, tracking events flow back automatically, and freight costs post into project accounts from the FedEx data. The team no longer re-keys shipments, tracks are visible inside Visma, and freight costs are already accrued when the period closes.
What you can do
- Create FedEx shipments directly from Visma purchase orders, with FedEx account numbers and dimensions from Visma.
- Poll FedEx for tracking updates on shipments and match them back to Visma purchase receipts.
- Post freight costs from FedEx shipments into Visma general ledger accounts and project cost dimensions.
- Request rate quotes from FedEx on demand using address and weight data entered in Visma.
- Manage OAuth 2.0 tokens separately for Visma and FedEx, cache FedEx tokens to stay under IP rate limits, and audit every shipment sync.
Questions
- Which direction does data flow between Visma and FedEx?
- Purchase orders and shipment requests flow from Visma into FedEx. Tracking updates and freight costs flow back into Visma on a scheduled poll. Rate quotes are pulled on demand when a user requests them in Visma. FedEx invoices are available only via the Billing Online portal, not the REST API.
- How does ml-connector handle FedEx's account number requirement and IP-level rate limits?
- FedEx requires the account number for account-rated shipments. ml-connector stores it encrypted per customer and includes it on every Ship API call. FedEx enforces a 3-tokens-per-5-seconds IP rate limit that triggers a 10-minute block at the third token. ml-connector caches the FedEx OAuth token for the full 1-hour TTL and reuses it across calls to stay under this limit.
- How are freight costs matched back to Visma purchase orders and projects?
- When ml-connector polls FedEx tracking updates, it extracts freight costs and shipment metadata and posts them into Visma as journal transactions allocated to the cost dimensions and GL accounts from the original purchase order. Every shipment carries an audit trail and can be replayed if a posting fails.
Related integrations
More Visma integrations
Other systems that connect to FedEx
Connect Visma and FedEx
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started