Visma and ShipStation integration
Visma.net ERP runs accounting, procurement, and inventory for mid-sized companies across the Nordic region. ShipStation manages fulfillment and shipping for e-commerce operations, aggregating orders from multiple sales channels and coordinating carrier shipments. When the two are connected, purchase orders created in Visma flow to ShipStation for fulfillment tracking, and shipment status flows back so procurement and finance have visibility into delivery timing without manual intervention.
What moves between them
Purchase orders created in Visma flow into ShipStation to initiate fulfillment. As ShipStation tracks shipments through each carrier, ml-connector polls for status updates and syncs the shipment dates and tracking information back into Visma as purchase receipt records, tied to the original purchase order line items. Customer invoices in Visma can also be cross-referenced with ShipStation orders for revenue recognition when goods ship. The flow is primarily Visma-to-ShipStation for order initiation and ShipStation-to-Visma for fulfillment confirmation, running on a schedule aligned with order processing and daily shipment updates.
How ml-connector handles it
ml-connector obtains an OAuth 2.0 bearer token from Visma Connect using stored client credentials and includes the ipp-company-id header on every Visma API call. For ShipStation, it stores the API key encrypted and passes it in the Authorization header for V1 calls or the API-Key header for V2 calls. When a new purchase order is created in Visma, ml-connector reads it via the purchase order list endpoint and posts it to ShipStation as an order initiation. ShipStation webhooks notify ml-connector of shipment status changes, but since webhooks provide only resource pointers, ml-connector performs authenticated GET requests to retrieve full shipment details. To catch order edits not signaled by webhooks, ml-connector polls ShipStation's order endpoint with the modifyDate filter on a daily schedule. Because Visma does not issue refresh tokens to service applications, ml-connector obtains a fresh token on each expiry window by re-authenticating with client credentials. ShipStation's rate limits are respected with request queuing, and the PST/PDT timezone used by V1 timestamps is converted to UTC for consistent storage. Every synced record carries an audit trail with the original ShipStation order key and Visma purchase order number for traceability.
A real-world example
A Nordic-based kitchenware distributor uses Visma.net ERP for procurement, inventory, and accounting, and ships orders through ShipStation to multiple e-commerce marketplaces and direct retailers. Before the integration, procurement staff created purchase orders in Visma, then checked ShipStation manually to see when orders shipped, and had to re-enter shipment dates into Visma at month-end to match invoice dates with actual delivery dates. With ShipStation connected to Visma, each purchase order automatically initiates a fulfillment task in ShipStation, and once the order ships, the tracking information and delivery date flow back into Visma as a purchase receipt. The accounting team can now match invoices to actual shipments without manual checking, and procurement has real-time visibility into which orders are in transit or delayed.
What you can do
- Sync purchase orders from Visma into ShipStation to initiate fulfillment without manual re-entry.
- Track shipment status from ShipStation and post receipt dates back into Visma as purchase receipt records.
- Map ShipStation order identifiers to Visma purchase order line items so fulfillment updates reach the correct procurement records.
- Handle Visma's token refresh requirement and ShipStation's webhook pointer payloads by fetching full shipment details on each notification.
- Poll ShipStation daily for order edits and status changes not caught by webhooks, maintaining consistency across both systems.
Questions
- Which direction does data move between Visma and ShipStation?
- Purchase orders flow from Visma into ShipStation to initiate fulfillment. Shipment status, delivery dates, and tracking information flow back from ShipStation into Visma as purchase receipt records tied to the original purchase order. Customer invoices in Visma can reference ShipStation orders for revenue recognition at shipment time.
- How does ml-connector handle ShipStation's webhook pointer-only payloads?
- ShipStation webhooks contain only a pointer to the resource URL, not the full shipment data. ml-connector responds immediately to the webhook notification, then performs an authenticated GET request to ShipStation to retrieve the complete shipment details, ensuring no data is lost if the resource is modified between webhook receipt and the follow-up call.
- Why does ml-connector poll ShipStation if webhooks are available?
- ShipStation webhooks notify on new orders and shipments, but not on order edits. ml-connector polls the order endpoint daily with the modifyDate filter to catch changes such as quantity adjustments, address corrections, or fulfillment delays that webhooks do not signal, so Visma stays synchronized with the authoritative ShipStation state.
Related integrations
More Visma integrations
Other systems that connect to ShipStation
Connect Visma and ShipStation
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started