Naar de inhoud
SyncMyShop

OCI en PunchOut

OCI koppeling Exact

Exact Online heeft zelf geen OCI: geen inlogadres voor leveranciers en geen ontvangst van een winkelmand. Een OCI koppeling met Exact is daarom bijna altijd de andere kant: je klant bestelt via OCI in jouw webshop, en de order komt via de REST API van Exact Online als verkooporder in jouw administratie.

Wat er tussen OCI en Exact gaat

Een OCI-sessie wordt altijd gestart door een inkoopsysteem: AFAS InSite, Elari, SAP. Dat systeem opent de webshop van de leverancier, krijgt de winkelmand terug en stuurt na goedkeuring de order. Exact Online doet geen van die drie. In het helpcentrum van Exact Online staat geen artikel over OCI of punchout, in het Nederlands noch in het Engels, en de REST API heeft geen endpoint dat een winkelmand aanneemt (beide gecontroleerd op 3 oktober 2026).

Wie zoekt op een OCI koppeling met Exact, zit dus bijna altijd aan de leverancierskant. Je verkoopt aan klanten die via OCI bestellen, en je eigen administratie draait op Exact Online. De koppeling verbindt dan drie dingen: het inkoopsysteem van je klant, je webshop en Exact.

Stap Richting Wat er gaat Via
Prijzen en assortiment Exact naar webshop Verkoopprijslijst per klant, artikelen logistics/SalesItemPrices, sync/Logistics/Items
Sessie en winkelmand Inkoopsysteem en webshop Inlog, HOOK_URL, NEW_ITEM-velden OCI, in de browser van de inkoper
Order na goedkeuring Inkoopsysteem naar koppeling Inkoopordernummer, afleveradres, regels cXML OrderRequest, of pdf per e-mail
Verkooporder Koppeling naar Exact Klant, adres, artikelen, aantallen, prijzen salesorder/SalesOrders

De sessie en de winkelmand zijn voor elk inkoopsysteem anders ingericht; dat staat op OCI koppeling AFAS en OCI koppeling Spend Cloud. Deze pagina gaat over de twee stappen waar Exact in zit: de prijzen die de sessie toont en de order die erin terugkomt.

Welk systeem is leidend, per gegeven

Gegeven Leidend Wat de koppeling doet
Verkoopprijs per klant Exact Online Leest de prijslijsten en zet ze in de webshop voor de sessie start. sales/SalesPriceLists is in de API alleen te lezen
Artikelnummer Exact Online Het veld Code van het artikel is ook NEW_ITEM-VENDORMAT in de winkelmand en SupplierPartID in de order
Aantallen in de order Inkoopsysteem van de klant Neemt de order over zoals hij na goedkeuring binnenkomt, niet de winkelmand van de sessie
Inkoopordernummer Inkoopsysteem van de klant Zet orderID in YourRef van de verkooporder, zodat het op de factuur komt
Afleveradres Inkoopsysteem, vertaald naar Exact Zoekt het adres op bij de klant in Exact en vult de GUID in
Voorraad Exact Online De sessie toont de vrije voorraad uit sync/Inventory/StockPositions (FreeStock)

Het inkoopordernummer is het belangrijkste veld in de rij. Je klant controleert jouw factuur tegen zijn inkooporder, en zonder dat nummer op de factuur gaat de factuur naar een medewerker die hem met de hand zoekt. Wat er aan die kant gebeurt, staat in wat is purchase-to-pay.

Wat de order en Exact anders bewaren

Een cXML-order beschrijft de klant, het adres en het artikel met codes en namen. Exact Online wil op drie plekken een GUID. De referentie van SalesOrders maakt OrderedBy verplicht, als GUID van de klant, en SalesOrderLines maakt Item verplicht, als GUID van het artikel. Een order kan pas worden aangemaakt als alle drie gevonden zijn.

Een cXML-order uit het inkoopsysteem als verkooporder in Exact Online De koppeling zet inkooporder 4500001234 van Bakker Installatie om naar een verkooporder in Exact Online. Klant, afleveradres en artikel worden opgezocht en als GUID ingevuld; de eenheid EA moet naar de eenheidscode van Exact vertaald worden. cXML OrderRequest Exact Online SalesOrders orderID 4500001234 From Credential bakker-installatie ShipTo addressID BI-ZWOLLE SupplierPartID 10482 quantity 12 UnitPrice 17.08 UnitOfMeasure EA YourRef 4500001234 OrderedBy GUID van de klant verplicht, opgezocht in crm/Accounts DeliveryAddress GUID van het adres opgezocht in crm/Addresses Item GUID van het artikel verplicht, opgezocht op Code Quantity 12 NetPrice 17.08 UnitCode stuk eigen code uit logistics/Units opzoeken opzoeken opzoeken vertaaltabel
Drie van de zeven velden zijn een opzoeking: Exact Online wil een GUID waar de order een code of naam heeft.
Van order naar Exact Waar het misgaat
Afzender (From, Credential) naar OrderedBy De identiteit in het inkoopsysteem is geen debiteurnummer. De koppeling legt per klant vast welke debiteur erbij hoort
ShipTo addressID naar DeliveryAddress Een nieuwe locatie van de klant bestaat nog niet in Exact
SupplierPartID naar Item Een artikel dat in de webshop staat maar in Exact geblokkeerd of hernummerd is
UnitOfMeasure naar UnitCode cXML gebruikt UN/CEFACT-codes zoals EA. Exact gebruikt de eenheden van je administratie uit logistics/Units, en dat endpoint is alleen te lezen
UnitPrice naar NetPrice Prijs per eenheid tegen prijs per 100 stuks

Die laatste rij is waar een OCI-winkelmand en Exact elkaar het vaakst missen. In de winkelmand van Bakker Installatie B.V. staan 500 kabelbinders van 3,75 per 100. OCI stuurt dat als NEW_ITEM-PRICE 3.75 met NEW_ITEM-PRICEUNIT 100, omdat het prijsveld maar drie decimalen heeft. In Exact is de prijs per stuk 3,75 / 100 = 0,0375. De koppeling rekent dat om: 500 × 0,0375 = 18,75, gelijk aan het regelbedrag in de winkelmand. Zet hij 3.75 ongewijzigd in NetPrice, dan wordt de regel 500 × 3,75 = 1.875,00.

Een negatief aantal hoort er nooit bij. Exact leest een negatieve Quantity op een verkooporderregel als een inruilregel, dus een creditregel uit een inkoopsysteem gaat niet als negatieve regel mee.

De technische werkelijkheid van Exact Online

Exact Online staat per app en per administratie 60 API-calls per minuut en 5.000 per dag toe, en antwoordt daarboven met 429. Een access token is 10 minuten geldig. Wat dat betekent, staat uitgewerkt in Exact Online API-limieten. Voor een OCI-order is het zo:

Call Aantal per order van 3 regels
Klant opzoeken in crm/Accounts 1, daarna uit de eigen tabel van de koppeling
Adres opzoeken in crm/Addresses 1
Artikelen opzoeken in logistics/Items, gefilterd op Code 1 voor alle drie
Verkooporder aanmaken met de regels erin 1

Dat zijn 4 calls per order. Bij 200 OCI-orders op een dag is dat 800 van de 5.000. Het werk zit in de prijzen. Neem een webshop met 6.000 artikelen en 40 klanten met een eigen prijslijst. De sync-endpoints geven 1.000 regels per call, dus de artikelen kosten 6.000 / 1.000 = 6 calls. De meeste andere endpoints geven 60 regels per pagina. Staan alle 6.000 artikelen op elke prijslijst, dan is dat 6.000 / 60 = 100 calls per lijst, en 40 × 100 = 4.000 calls voor alle klanten. Dat is 80 procent van het daglimiet voor één verversing. De koppeling haalt daarom alleen gewijzigde prijzen op en ververst de rest 's nachts.

Het pakket telt ook. SalesOrders is volgens Exact beschikbaar in Wholesale & Distribution en Manufacturing. Een administratie met alleen een boekhoudpakket kan orders niet als verkooporder ontvangen. De koppeling maakt dan direct een verkoopfactuur via salesinvoice/SalesInvoices, en de stap van order naar levering zit niet in Exact.

Als je klant zelf Exact Online gebruikt

Er is een tweede vraag achter de zoekterm: een klant die zelf met Exact Online werkt en bij jou wil bestellen alsof je een OCI-leverancier bent. Exact kan die sessie niet starten. Wat Exact wel documenteert, is het endpoint purchaseorder/PurchaseOrders. Daarmee zet een koppeling, met toestemming van je klant via OAuth, een bestelling uit jouw webshop als inkooporder in zijn administratie.

De regels daarvan zijn strenger dan bij OCI. Een inkooporder vraagt een geldige leverancier en orderregels; elke regel vraagt een Item als GUID en QuantityInPurchaseUnits. Een vrije tekstregel zoals in een OCI-winkelmand bestaat niet. Jouw artikelnummer staat bij je klant in SupplierItemCode van logistics/SupplierItem, met een eigen PurchaseUnitFactor als jij per zak van 100 verkoopt en je klant per stuk telt. Heeft je klant geen artikel voor jouw artikelnummer, dan is er geen Item om in te vullen en kan de regel niet worden aangemaakt. Het veld ApprovalStatus laat daarna zien of de inkooporder op goedkeuring wacht (0), automatisch is goedgekeurd (1) of is goedgekeurd (2).

Als het misgaat

Situatie Wat Exact teruggeeft Wat de koppeling doet
Artikel uit de order niet gevonden Geen GUID voor Item, de order kan niet worden aangemaakt Houdt de order vast en meldt het artikelnummer in het dashboard
Daglimiet van 5.000 bereikt 429 tot het begin van de volgende dag Orders wachten in de wachtrij; prijsverversing gaat eerst opzij
Token verlopen of ingetrokken 401 Vernieuwt het token; lukt dat niet, dan staat het als storing in het dashboard
Dezelfde order komt twee keer binnen Zonder controle ontstaan twee verkooporders Controleert orderID tegen YourRef voordat hij een order aanmaakt
Voltooide order gewijzigd door de klant Exact staat geen wijziging toe op een voltooide verkooporder Meldt de wijziging in het dashboard voor handmatige verwerking

Het inkoopsysteem van je klant krijgt bij ontvangst direct een 200 OK van de koppeling. Wat er daarna in Exact misgaat, ziet je klant dus niet, en hij hoeft het ook niet te zien: de order staat in de wachtrij, het log toont welk veld niet gevonden werd, en na de correctie gaat hij door. Meer over de koppeling met Exact buiten OCI staat op Exact Online koppeling, het hele OCI-verhaal op OCI en PunchOut. Vertel welk inkoopsysteem je klant gebruikt en welk Exact-pakket je hebt.

Veelgestelde vragen

Heeft Exact Online een OCI-module voor inkoop?

Nee. In het helpcentrum van Exact Online staat geen artikel over OCI of punchout (gezocht op 3 oktober 2026), en de REST API heeft geen endpoint dat een OCI-winkelmand aanneemt. Inkooporders maak je in Exact handmatig, via import of via het endpoint purchaseorder/PurchaseOrders.

Welk Exact-pakket heb ik nodig voor orders via de API?

Voor verkooporders via salesorder/SalesOrders vraagt Exact een pakket Wholesale & Distribution of Manufacturing. Inkooporders via purchaseorder/PurchaseOrders kunnen ook met Professional Services vanaf Plus. Met alleen een boekhoudpakket zet de koppeling de order niet als order in Exact. Het verschil staat in Exact Online boekhouden of handel.

Komen de prijzen in de OCI-sessie uit Exact?

Ja, als Exact je prijzen beheert. De koppeling leest de verkoopprijslijsten uit Exact en zet ze per klant in de webshop, voordat een inkoper de sessie start. Prijslijsten zijn via de API alleen te lezen, dus wijzigingen doe je in Exact zelf.

Wat gebeurt er als Exact Online even niet bereikbaar is?

De order blijft in de wachtrij staan. Het inkoopsysteem van je klant heeft dan al een 200 OK gekregen, dus voor je klant is de order verstuurd. Zodra Exact weer antwoordt, gaat de order alsnog door, en in het dashboard zie je hoe lang hij heeft gewacht.

Kan mijn klant met Exact Online via OCI bij mij bestellen?

Niet via OCI, want Exact start geen OCI-sessie. Wat wel kan: de bestelling uit je webshop als inkooporder in de Exact-administratie van je klant zetten via purchaseorder/PurchaseOrders, met zijn toestemming via OAuth. Elke regel moet dan een artikel zijn dat bij je klant al bestaat.

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