The question we hear most from online retailers is whether Visma Net works with Shopify. Yes. Ready-made connectors exist in Visma's catalog, and we have also built our own, which we run against our own Visma Net. This article describes how an integration between Shopify and an ERP really works: what is sent, when, what can go wrong and how to protect against it. Our own integration is the example, because it is the one we know in detail. The full e-commerce offer is called Click to Cash (in Swedish).
Short answer: how does a Shopify ERP integration with Visma Net work?
A paid order in Shopify becomes a sales order in Visma Net. The shipment in Shopify becomes a shipment and an invoice, the return becomes a return order and a receipt, a cancelled order is cancelled, new products become items, and the stock level in Visma Net is mirrored back to the store. The payment is registered on a clearing account for the payment provider, and the payout is reconciled separately.
- Paid order
- Sales order
- Shipment
- Invoice
- Prepayment
- Payout reconciled
Shopify owns the order and the checkout. Visma Net owns the items, the stock, the invoice and the books.
What goes in which direction
| In Shopify | In Visma Net |
|---|---|
| Consumer, per shipping country | One collective customer per country, for example Web customer Sweden (Shopify) |
| Company customer in Shopify B2B | The reseller's own customer, with their prices and terms |
| Price including VAT | Price excluding VAT on the line, net is gross minus Shopify's VAT |
| VAT rate per line | VAT category per line: 25 percent becomes 01, 6 percent becomes 03 |
| VAT regime: Sweden, EU below the threshold, export | VAT zone per order |
| Discount allocated per line | Discount on the line |
| Shipping | One shipping line per VAT rate, since shipping follows the VAT of the goods |
| Order name and id | Customer order number, for example Shopify #1009 followed by Shopify's id |
| Payment at checkout | Prepayment on the sales order, with payment method, cash account and payment reference |
| Shipment, including partial | Shipment, which is confirmed and becomes an invoice |
| Return | Return order and receipt, with a credit note |
In the other direction goes the stock level: Visma Net is the truth, and the level is sent to Shopify every five minutes and after every shipment and return.
The sales order mirrors the order's state, not the events
This is the most important decision in the whole integration. A Shopify order changes: the customer adds an item, a line is removed before shipping, half the order ships today and the rest next week, an item comes back. If the integration counts every event separately, it goes wrong as soon as two events arrive in the wrong order, or one arrives twice.
So the sales order in Visma Net mirrors the order's state. The quantity per line is what has shipped plus what remains on Shopify's fulfillment orders. An order edit, a removed line and a return all come out right without being counted separately, and a rerun does nothing, because the state is already right. Shopify has three different quantities on a line, and they count differently for an edit and for a refund. It took us two orders to learn that.
Duplicate protection lives in Visma Net
The customer order number on the sales order carries the Shopify order's id, and the integration looks it up in Visma Net before anything is created. If the integration restarts, or the same webhook arrives twice, the order already exists and no second sales order is created. The protection lives in the ERP, not in the integration's own memory, so it survives the integration being replaced or moved.
VAT: Visma Net calculates, Shopify picks the category
Visma Net calculates VAT from VAT category times VAT zone. The integration never sends VAT amounts. What it sets is the category per line, from the rate Shopify charged, because the customer has paid Shopify's amount and the invoice has to add up with the payment. New items get their VAT class from the same rate, through Shopify's own tax engine, so the register in Visma Net is right from the start. Every new sales order is also checked against the items' VAT code in Visma Net, and a difference is flagged.
Shipping is its own case. A cart with books at 6 percent and clothes at 25 percent splits the shipping across two rates, and the freight field on the order header in Visma Net takes only one VAT category. So shipping becomes order lines, one per VAT rate, and the VAT matches to the öre.
Webhooks are a notification, not a guarantee
Shopify sends a webhook when something happens: the order is paid, shipped, edited, refunded. The integration acknowledges it, adds a row to its queue and works through the queue with a lock per order. So far it is fast.
But webhooks do not always arrive. On October 5 ours went silent at 16:24 without a single error. So the integration reads Shopify's changed orders itself every fifteen minutes and queues every payment, shipment, cancellation and refund that has no job. What it finds is logged as an alert and shown on the admin page. Orders from before the integration was started are never touched.
Duplicate protection should live in the ERP, and reconciliation should never trust that every webhook arrives.
Shipments, partial shipments and returns
Every fulfillment in Shopify is compared against the shipments Visma Net has already confirmed. The difference becomes a new shipment with the shipped quantity adjusted, and the freight goes with the first one. When the shipment is confirmed, the invoice is created. An order shipped in three parts becomes three shipments and three invoices, without anyone clicking.
The return in Shopify becomes a return order in Visma Net and a receipt when the goods come back, so the stock is corrected and the credit note is created against the original order. Refunds without a return and refunded shipping go the same way: a credit note against the original order.
The payment and the payout
When the order is paid, the sales order gets the checkout's payment details: payment method, cash account and payment reference, which is Shopify's payment id. The payment is registered as a prepayment on the sales order and applied to the invoice when the order is invoiced. The payout from Klarna, Shopify Payments or another checkout provider, such as Svea, Walley or Swedbank Pay, is then reconciled against the prepayments, order by order, and becomes a journal entry that you approve. That flow has its own guide: How to book Klarna and Shopify payouts in Visma Net.
Resellers in Shopify B2B
If you sell to companies in Shopify B2B, their orders are booked on the reseller's own customer in Visma Net, not on the collective customer, so prices, terms and the ledger are right. The reseller can also see their invoices and balance directly in the store, fetched from Visma Net.
Ready-made connector or our own?
Visma's catalog has ready-made Shopify connectors from several vendors, with a monthly fee by order volume. They turn the order into a sales order, let Visma Net be the master for items, prices and stock, and send shipments and tracking back. Check which finance systems the vendor actually supports before you choose; some have changed direction.
Our principle is simple: if you have a connector that does the job, we keep it. Our own is used when the flow needs something the catalog does not do, such as the payout matched order by order with approval, resellers on their own customer, or several warehouses against Shopify's locations.
What the integration includes
Orders, order edits, partial shipments, invoices, returns, cancellations, refunds without a return, refunded shipping, gift cards, new items, stock levels, VAT to the öre, prepayments with payment reference, Klarna's payout as an entry on hold, resellers in Shopify B2B, orders from Shopify POS with the register's location as a warehouse.
Request the right to delete in your Visma Net, or deactivate customers afterwards. The app should have no more authority than it uses.
Frequently asked questions
Does Visma Net work with Shopify?
Yes. Ready-made connectors exist in Visma's catalog, and we have built our own that we run against our own Visma Net. The order becomes a sales order, shipments and returns flow back, the stock level is mirrored to the store and the VAT matches to the öre.
Does every Shopify order become an invoice in Visma Net?
The order becomes a sales order. The invoice is created when the shipment is confirmed, so an order shipped in parts becomes several invoices, one per shipment. Until then the payment sits as a prepayment on the sales order and is applied to the invoice.
How are partial shipments handled?
Every fulfillment in Shopify is compared against the shipments Visma Net has already confirmed. The difference becomes a new shipment with the right quantity, and the freight goes with the first one. The rest of the order stays open until the next shipment.
How are returns and refunds handled?
The return becomes a return order in Visma Net and a receipt when the goods come back, with a credit note against the original order. The refund is deducted in the next payout from the payment provider and matched against the credit note. Refunds without a return and refunded shipping become a credit note against the original order.
How does the VAT come out right when the cart has both 6 and 25 percent?
Visma Net calculates VAT from category and zone, and the integration sets the category per line from the rate Shopify charged. Shipping is split across the same rates as the goods and becomes one order line per rate, since the freight field in Visma Net takes only one category.
How often is the stock level updated in Shopify?
Every five minutes, and right after every shipment and return. Visma Net is the truth for the stock level.
What happens if a webhook from Shopify is lost?
The integration reads Shopify's changed orders itself every fifteen minutes and queues whatever has no job. What it finds is logged as an alert on the admin page. We never rely on every webhook arriving.
Can the same order end up twice in Visma Net?
No. The customer order number on the sales order carries the Shopify order's id and is looked up before anything is created. A restart or a duplicate webhook finds the order that already exists.
Can we have several warehouses?
Yes. Each location in Shopify can be linked to a warehouse in Visma Net, and the stock level is mirrored per warehouse.
Does Shopify B2B work with Visma Net?
Yes. Company customers' orders are booked on their own customer in Visma Net, with their prices and terms, and they can see their invoices and balance in the store.
Do Klarna and Shopify Payments work?
The payment is registered as a prepayment with a payment reference regardless of payment method. Klarna's payouts are reconciled order by order and become an entry you approve. Shopify Payments follows the same model. Other checkout providers, such as Svea, Walley and Swedbank Pay, follow the same model: one clearing account per provider and the payout matched to the orders.
How long does it take to connect Shopify to Visma Net?
In Click to Cash it takes 1 to 2 months from workshop to go-live, with the store, inventory and payouts connected. The integration itself is set up and tested on your own orders before go-live, so VAT, shipments and returns are checked on real data.
Which ERP suits Shopify?
One that takes the order, the inventory and the payouts in the same flow, and has an open API so the integration can mirror the order's state instead of counting events. Visma Net has that, and unlimited users, so everyone who packs, approves and books can work in the system. The full reasoning is on Click to Cash for e-commerce (in Swedish).
What does a Shopify connector for Visma Net cost?
The connectors in Visma's catalog cost from SEK 3,500 a month including 1,000 orders, according to the catalog in October 2026. Our implementation of Visma Net for e-commerce, Click to Cash, costs SEK 95,000 at a fixed price, or SEK 135,000 if we also build the Shopify store at a fixed price, and the Visma Net license is signed with Visma from SEK 2,744 a month with unlimited users.
Next steps
What the integration does, what it costs and how you try it is on Shopify and Visma Net: the integration. The whole flow, with inventory, shipments and agents, is on Click to Cash for e-commerce (in Swedish). Payouts have their own guide: How to book Klarna and Shopify payouts. If you run a 3PL warehouse, read about Visma Net and Ongoing WMS (in Swedish), and what Visma Net costs has its own page. For the full picture of ERP systems for online stores, read ERP for e-commerce 2026: how to choose. And ERP for Shopify: how to choose if the choice is between accounting per day and ERP per order.