Insights · Visma Net

Shopify and Visma Net: how the integration works

How Shopify connects to Visma Net: every paid order becomes a sales order, shipments and returns flow back, stock is mirrored and VAT matches.

Charlie Blomkvist 13 min read

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).

1sales order in Visma Net per paid order, with the same VAT to the öre
15 minbetween the reconciliations that catch what a webhook missed
0deletions: the integration never asks for the right to delete anything in your Visma Net

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.

From click to booked
  1. Paid order
  2. Sales order
  3. Shipment
  4. Invoice
  5. Prepayment
  6. 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 ShopifyIn Visma Net
Consumer, per shipping countryOne collective customer per country, for example Web customer Sweden (Shopify)
Company customer in Shopify B2BThe reseller's own customer, with their prices and terms
Price including VATPrice excluding VAT on the line, net is gross minus Shopify's VAT
VAT rate per lineVAT category per line: 25 percent becomes 01, 6 percent becomes 03
VAT regime: Sweden, EU below the threshold, exportVAT zone per order
Discount allocated per lineDiscount on the line
ShippingOne shipping line per VAT rate, since shipping follows the VAT of the goods
Order name and idCustomer order number, for example Shopify #1009 followed by Shopify's id
Payment at checkoutPrepayment on the sales order, with payment method, cash account and payment reference
Shipment, including partialShipment, which is confirmed and becomes an invoice
ReturnReturn 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

01This is done

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.

02This we never do

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.

Ready to challenge
the way you work today?

Tell us briefly about your situation and a senior advisor will get back to you with a time to talk. Free of charge, no commitment.

We reply within one business day. Your details are only used for this. Prefer email? contact@straviont.com