Naar de inhoud
SyncMyShop

Shopware en Exact Online

Shopware Exact Online koppeling

Shopware-orders landen als verkooporder of factuur in Exact Online, met kortingen uit de Rule Builder verdeeld over de juiste btw-tarieven. Staffelprijzen en prijsafspraken uit Exact worden advanced prices in Shopware, en voorraad en leveringen gaan terug naar de shop. Gebouwd op jouw administratie en jouw Shopware 6, en daarna door ons gedraaid en bewaakt.

Wat je tussen Shopware en Exact Online koppelt

Exact Online is bij deze combinatie de bron voor artikelen, prijsafspraken en voorraad. Shopware is de bron voor de order en voor alles wat de klant in de checkout heeft gekregen: kortingen uit de Rule Builder, verzendkosten en het gekozen btw-regime. De koppeling leest Shopware via de Admin API, nooit via de Store API die voor de winkel zelf is bedoeld. Daardoor werkt hij ook met een headless frontend.

Stroom Richting Shopware 6 Exact Online
Artikelen naar Shopware POST /api/_action/sync sync/Logistics/Items
Staffels en prijsafspraken naar Shopware product.prices sync/Logistics/SalesItemPrices
Voorraad naar Shopware product.stock sync/Inventory/StockPositions
Orders naar Exact POST /api/search/order salesorder/SalesOrders of SalesInvoices
Klanten naar Exact customer, order_address crm/Accounts, crm/Addresses
Leveringen en trackingnummer naar Shopware order_delivery salesorder/GoodsDeliveries

Verkooporders, leveringen en voorraadposities bestaan in de API alleen voor Exact Online Handel en Productie. Met Boekhouden landt een Shopware-order als verkoopfactuur of verkoopboeking en gaat er geen voorraad terug. De keuze per pakket staat op Exact Online koppeling.

Welk systeem is leidend, per gegeven

Gegeven Leidend Richting Gedrag
Artikelcode, omschrijving Exact naar Shopware alleen wijzigingen, op Timestamp
Hoofdproduct, eigenschappen, afbeeldingen Shopware blijft in Shopware de koppeling schrijft er niet overheen
Verkoopprijs en staffels Exact, SalesItemPrices naar Shopware als advanced prices onder een regel
Promoties en kortingscodes Shopware, Rule Builder in de order naar Exact verdeeld over de regels per btw-tarief
Voorraad Exact, FreeStock naar Shopware elke 10 minuten via de sync-endpoint
Order en betaalstatus Shopware tot de import, daarna Exact naar Exact één keer, orderNumber in YourRef
Debiteur Exact zoeken op e-mail en btw-nummer nieuwe debiteur alleen als beide niets vinden
Levering Exact naar Shopware trackingnummer op de order_delivery

Twee kanten bepalen samen de prijs die de klant ziet: Exact levert de staffel, Shopware past de promotie toe. De order in Exact moet allebei bevatten, anders klopt de omzet per artikel niet met wat er is betaald.

Wat Shopware en Exact Online anders bewaren

Kortingen uit de Rule Builder

In Shopware is een promotie een eigen regel in de order. Hij heeft het type promotion, een negatieve prijs en een payload met onder meer code, discountType (absoluut of percentage) en value. Exact Online kent zo'n regel niet. Een orderregel in SalesOrderLines heeft een veld Discount, maar dat is een fractie ten opzichte van de standaardprijs van het artikel in Exact, niet ten opzichte van de prijs die Shopware rekende.

Shopware verdeelt de btw over een korting naar rato van de grondslag per tarief. De koppeling doet hetzelfde met het bedrag, zodat Exact op dezelfde btw uitkomt. Een voorbeeld met kortingscode HERFST15 van € 15,00:

Regel Bruto voor korting Aandeel Korting Bruto na korting
2 x artikel 10482, 21% 120,00 120 / 180 10,00 110,00
1 x artikel 20117, 9% 60,00 60 / 180 5,00 55,00
Totaal 180,00 15,00 165,00

In de korting van € 10,00 zit 1,74 btw tegen 21%, in die van € 5,00 zit 0,41 tegen 9%. Zet je de hele € 15,00 als één regel op het hoge tarief, dan staat er 2,60 btw in Exact en betaalde de klant 2,15. De code gaat naar Remarks van de verkooporder, zodat terug te vinden is welke actie de omzet verlaagde. Meer over het verdelen van bedragen in bedragen en btw mappen.

Staffelprijzen en prijsafspraken

Exact bewaart een staffel als een regel in SalesItemPrices met Quantity, de minimale hoeveelheid. Shopware bewaart een staffel als advanced price met quantityStart, quantityEnd en een verplicht ruleId. Elke prijs hangt dus aan een regel uit de Rule Builder.

Staffelprijzen en een prijsafspraak uit Exact Online als advanced prices in Shopware Vier prijsregels van artikel 10482 in Exact Online worden vier advanced prices in Shopware. De staffels van 1, 10 en 50 stuks krijgen een eindaantal, de prijsafspraak met debiteur 10432 krijgt een eigen regel uit de Rule Builder. Exact Online, SalesItemPrices Shopware 6, product ItemCode 10482 Quantity 1 Price 24.50 Quantity 10 Price 22.00 Quantity 50 Price 19.75 Account debiteur 10432, Price 18.90 prijsafspraak voor een klant productNumber 10482 prices[0] regel Staffel, 1 tot 9: 24,50 prices[1] regel Staffel, 10 tot 49: 22,00 prices[2] regel Staffel, vanaf 50: 19,75 prices[3] regel Debiteur 10432, vanaf 1: 18,90 regel met conditie op klantnummer quantityEnd 9 quantityEnd 49 quantityEnd leeg eigen ruleId
Exact kent alleen een vanaf-aantal, Shopware een bereik met begin en eind. Een prijsafspraak voor één klant wordt in Shopware een prijs onder een eigen regel.

De koppeling rekent het eindaantal uit: de staffel vanaf 10 eindigt bij 49 omdat de volgende bij 50 begint. Heeft een regel in Exact een Account, dan is het een prijsafspraak voor één debiteur. Daarvoor maakt de koppeling in Shopware een regel met een conditie op het klantnummer. StartDate en EndDate uit Exact worden condities op datum in dezelfde regel. Meer over de opbouw in staffelprijzen en klantspecifieke prijzen.

Bruto en netto

Shopware bewaart elke prijs met gross, net en linked, en een order heeft een taxStatus van gross, net of tax-free. Een consumentenwinkel rekent meestal bruto. Exact heeft per btw-code een Type: E voor exclusief en I voor inclusief. Met een exclusieve code rekent Exact de btw opnieuw uit over een afgerond bedrag:

Shopware:  3 x 9,95 bruto                         = 29,85
Exact, E:  9,95 / 1,21 = 8,2231, afgerond 8,22
           3 x 8,22 = 24,66 + 21% btw 5,18        = 29,84

De koppeling stuurt bruto-orders daarom met een btw-code van het type I en netto-orders van zakelijke klanten met een code van het type E. Welke codes dat in jouw administratie zijn, leest hij bij de bouw uit vat/VATCodes.

Klanten en adressen

Een Shopware-klant heeft accountType (zakelijk of particulier), company en vatIds als lijst. Exact heeft één VATNumber op de debiteur. Het adres staat in Shopware als street met huisnummer, plus additionalAddressLine1 en 2. Het land is een countryId, een UUID uit jouw installatie, en geen landcode. De koppeling zoekt per order de ISO-code op die bij die UUID hoort en vult AddressLine1 tot AddressLine3 en Country in Exact. Een gastbestelling (guest true) gaat naar een eigen debiteur of naar een verzameldebiteur.

De technische werkelijkheid van deze combinatie

Onderwerp Shopware 6 Admin API Exact Online
Limiet op verzoeken geen algemene limiet, wel op login en OAuth 60 per minuut, 5.000 per dag
Schrijven in bulk Sync API, upsert van veel records per verzoek één record per verzoek
Lezen in bulk zoekendpoints met criteria sync-endpoints, 1.000 per pagina
Toegang client_credentials met Access key ID en secret OAuth 2.0, token 600 seconden
Wijziging melden webhook via een app, 3 nieuwe pogingen in ongeveer 7 seconden webhook, 10 nieuwe pogingen over 34 uur

De Exact-getallen staan in de documentatie van Exact over API-limieten, de Shopware-limieten in de rate limiter-documentatie van Shopware. Nagelezen op 3 oktober 2026.

De dag, doorgerekend. Een groothandel met 8.000 artikelen en gemiddeld 3 prijsregels per artikel heeft 24.000 regels in SalesItemPrices. De eerste volledige ronde uit Exact is 24.000 / 1.000 = 24 verzoeken. Naar Shopware gaan ze in porties van 500 producten: 8.000 / 500 = 16 verzoeken naar de Sync API. Daarna gaat elk uur alleen wat gewijzigd is. Per dag kost dat aan de Exact-kant:

Stroom Rekensom Verzoeken
Voorraad, elke 10 minuten 6 x 24 144
Artikelen en prijzen, elk uur 2 x 24 48
350 orders 350 x 3 1.050
Totaal 144 + 48 + 1.050 1.242

De 3 verzoeken per order zijn: debiteur zoeken, order aanmaken en de levering ophalen. Er blijft 5.000 - 1.242 = 3.758 over. De grens ligt bij de minuutlimiet van 60: na een onderbreking van twee uur staan er misschien 60 orders klaar, en dat zijn 180 verzoeken, dus minstens 3 minuten.

Shopware-webhooks zijn een signaal, geen garantie. Shopware probeert een webhook 3 keer opnieuw in ongeveer 7 seconden, garandeert geen volgorde en zet de webhook uit na 10 fouten. De koppeling gebruikt het event checkout.order.placed om snel te starten en zoekt daarnaast elke 5 minuten op orders die sinds de vorige ronde zijn aangemaakt. Zo komt een order die tijdens een herstart van de koppeling binnenkwam alsnog in Exact. Zie wat is een webhook.

Wat een standaardkoppeling hier niet doet

Standaardkoppelingen en koppelplatformen voor Exact Online documenteren hun eigen grenzen. Bij Shopware komen deze het vaakst terug:

  • Staffel of verkoopprijs, één keer gekozen. Bij de installatie kies je of de verkoopprijs of de staffel naar de shop gaat, en dat geldt voor alle artikelen.
  • Prijslijsten alleen per artikel, niet op een artikelgroep, en een debiteurenkorting gaat niet mee.
  • Eén magazijn per koppeling, vast ingesteld bij de installatie. Voorraad uit een tweede magazijn telt niet mee.
  • Eén richting. Orders gaan naar Exact, maar voorraad en leveringen komen niet terug.

Een gebouwde koppeling leest de promotieregels uit jouw Shopware, de btw-codes uit jouw administratie en de prijsafspraken per debiteur. Het hoofdproduct en de eigenschappen blijven in Shopware, waar ze horen. De platformkant staat op Shopware koppeling.

Als het misgaat

Wat er misgaat Wat de koppeling doet Wat je ziet
429 van Exact order blijft in de wachtrij tot het venster verder is niets, tenzij het aanhoudt
Orderregel met een productNumber dat in Exact niet bestaat die order wordt vastgehouden, andere gaan door de order en het nummer
Promotie op een tarief zonder btw-code in de tabel order naar de controlelijst de order, het tarief en de code
Sync API weigert een product in de portie de rest van de portie wordt opnieuw aangeboden het product en de melding van Shopware
Shopware-webhook uitgeschakeld na 10 fouten de controleronde haalt orders op datum op een regel in het logboek
Refresh token van Exact verlopen alle stromen naar Exact pauzeren een verzoek om opnieuw in te loggen

Exact staat per endpoint 10 fouten per uur toe en blokkeert de sleutel daarboven. Een order met een onbekend artikel die elke ronde opnieuw wordt verstuurd, legt zo ook de goede orders stil. De koppeling controleert daarom vooraf of elke regel een artikel en een btw-code heeft. Een order die blijft falen bewaart hij met de oorspronkelijke inhoud en biedt hij opnieuw aan zodra de oorzaak is opgelost. Voor livegang draait de koppeling als dry run: je ziet per order welke regels, kortingen en btw-codes er in Exact zouden komen.

Wij hosten en bewaken de koppeling en passen hem aan als Shopware of Exact een interface wijzigt. Alle stromen staan op koppelingen. Verwante combinaties: Magento Exact Online koppeling, WooCommerce Exact Online koppeling en Lightspeed Exact Online koppeling. Vertel welke Shopware-versie en welk Exact-pakket je hebt.

Veelgestelde vragen

Heb ik Exact Online Handel nodig voor een Shopware koppeling?

Voor orders als verkoopfactuur of verkoopboeking is Boekhouden genoeg. Verkooporders, leveringen en voorraadposities staan in de API-documentatie van Exact alleen bij Handel en Productie. Wil je voorraad uit Exact in Shopware en track-and-trace terug, dan heb je Handel of Productie nodig. Zie Exact Online Boekhouden of Handel.

Hoe komt een kortingscode uit Shopware in Exact?

Shopware zet een promotie als eigen orderregel van het type promotion in de order, met de code en het kortingstype in de payload. Exact Online heeft daar geen regelsoort voor. De koppeling verdeelt het kortingsbedrag over de productregels naar rato van de btw-grondslag, zoals Shopware dat zelf ook doet, en zet de code in de opmerkingen van de order. Zo blijft de btw per tarief gelijk aan wat de klant betaalde.

Kunnen klantprijzen uit Exact naar Shopware?

Ja. Een prijsafspraak in Exact is een regel in SalesItemPrices met een Account. In Shopware wordt dat een advanced price onder een regel met een conditie op het klantnummer. Gebruik je de Commercial-plugin van Shopware, dan kan het ook via klantspecifieke prijzen op /api/_action/custom-price. Shopware documenteert dat het filteren op prijs in de productlijst die prijzen niet meeneemt.

Werkt de koppeling met Shopware 6.6 en 6.7?

Ja. De Admin API, de Sync API en de velden die de koppeling gebruikt bestaan in beide lijnen. Op 1 oktober 2026 verschenen 6.7.15.0 en 6.6.10.28. Bij een update draait de koppeling eerst als dry run tegen de nieuwe versie voordat hij weer schrijft.

Waarom wijkt een order in Exact één cent af van Shopware?

Omdat Shopware voor consumenten met brutoprijzen rekent en een btw-code van het type E in Exact de btw opnieuw berekent over een afgerond bedrag exclusief. Drie stuks van 9,95 is in Shopware 29,85, en via 8,22 exclusief per stuk in Exact 29,84. De koppeling gebruikt voor bruto-orders een btw-code van het type I, zodat het brutobedrag het uitgangspunt blijft.

Worden varianten uit Shopware artikelen in Exact?

Elke variant wel, het hoofdproduct niet. In Shopware is een variant een kindproduct met een eigen productNumber, en dat nummer is de artikelcode in Exact. Exact heeft geen hoofdartikel met varianten. De koppeling groepeert de artikelen in Shopware op een afgesproken kenmerk, bijvoorbeeld een deel van de artikelcode. Zie varianten koppelen.

Vertel wat je nodig hebt

Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.

  • Je weet de prijs en de doorlooptijd voordat je iets toezegt
  • Wij zoeken uit welke koppeling het werk uit handen neemt
  • Wij verzorgen de bouw, hosting, bewaking en het onderhoud
  • Je team krijgt minder overtypwerk en minder uitzoekwerk

Leveranciers, producten, orders per dag, een ruwe schatting is prima.

Of mail direct: carsten@syncmyshop.com