Naar hoofdinhoud

KoppelingenExact Online

Exact Online API koppelen aan je webshop.

Een koppeling op de Exact Online API zet de orders en klanten uit je webshop automatisch in je boekhouding, en stuurt artikelen, prijzen en voorraad terug naar je site. Exact Online is het boekhoudpakket waarin een groot deel van de Nederlandse webshops en groothandels hun administratie doet, en wij bouwen die koppeling zonder dat iemand nog iets overtypt.

Vertrouwd door

200+ bedrijven en webshops

Dux
Swim Essentials
Vouwwagenspecialist
Fit Preps
Fysio Moov
Mörgenn
MBST
Sunwave Brands
Flaske
Boumij Makelaars

Wat het oplevert

Wat een koppeling met Exact Online je oplevert.

Orders zonder overtypen. Een bestelling in je webshop wordt een order of factuur in Exact, met de klant erbij.

Eén waarheid over je voorraad. Wat in Exact op voorraad staat, staat op je site, en niet het aantal van vorige week.

Per administratie. Meerdere bv’s of merken naast elkaar: elke administratie is een eigen division in de koppeling.

Technisch

De koppeling in het kort.

Vorm van de koppeling
De REST API, met de code van de administratie in het adres van elke aanroep
Authenticatie
OAuth 2.0. Het access token is 10 minuten geldig, het refresh token rouleert bij elke vernieuwing
Richting
Beide kanten op
Verversing
Per aanroep, binnen 60 aanroepen per minuut en een dagelijkse limiet per administratie
Wij bouwen het op
WordPress, Next.js, Maatwerk

Waar het misgaat

  • Het access token is 10 minuten geldig en het refresh token rouleert. Dat betekent dat de koppeling na elke vernieuwing het nieuwe refresh token moet bewaren; bewaart hij het oude, dan werkt de volgende vernieuwing niet meer en staat de koppeling stil. Dit is veruit de meest gemaakte fout bij Exact Online, en hij valt pas op als er een dag geen orders zijn doorgekomen.
  • Je mag niet vaker dan eens per 10 minuten een nieuw token opvragen. Een koppeling die bij elke aanroep opnieuw inlogt, loopt daar dus tegenaan. Het token hoort te worden bewaard en hergebruikt tot het verloopt, en dat is iets anders dan het elke keer opnieuw ophalen omdat dat makkelijker leest.
  • Er zit een limiet van 60 aanroepen per minuut, en daarnaast een dagelijkse limiet per administratie. Bij elk antwoord zitten headers waarin staat hoeveel je er nog over hebt. Wij lezen die mee en verdelen het werk: een nachtelijke synchronisatie van de hele catalogus is iets anders dan een order die meteen door moet.
  • De administratie staat in het adres van elke aanroep. Heeft een klant meerdere bv’s in één Exact-omgeving, dan is dat per administratie een eigen code en een eigen limiet. Zet die code in een instelling; hij verandert als de boekhouder een nieuwe administratie aanmaakt, en dan wijst de koppeling ineens naar de verkeerde.

Bron: documentatie van Exact, Delft

Wat is Exact Online?

Exact Online is online boekhoudsoftware uit Delft, met daarnaast modules voor handel, productie en projecten. Voor een webshop of groothandel is het meestal de plek waar de administratie staat: debiteuren, facturen, betalingen, artikelen en vaak ook de voorraad.

Dat maakt het een logisch eindpunt van een koppeling. Wat op je site gebeurt is verkopen; wat in Exact gebeurt is de financiële verantwoording. De koppeling zorgt dat die twee dezelfde werkelijkheid zien.

Boekhoud je in Moneybird, lees dan hoe we Moneybird koppelen aan je website, met factuur en betaalstatus. Voert je accountant de administratie in Twinfield, lees dan wat er komt kijken bij Twinfield koppelen aan je website.

Stappen om je webshop via de Exact Online API te koppelen

De API is REST met JSON en werkt per administratie: de code van die administratie staat in het adres van elke aanroep.

Aanmelden gaat met OAuth 2.0. Je maakt in het developerportaal van Exact een app aan, en een beheerder van de administratie geeft die app eenmalig toegang. Daarna werkt de koppeling met een access token dat 10 minuten geldig is, en een refresh token waarmee je een nieuw ophaalt.

Dat refresh token verandert bij elke vernieuwing. De koppeling moet dus het nieuwste bewaren, niet het eerste. Doet hij dat niet, dan werkt alles tot het token verloopt en daarna niets meer.

In stappen ziet een koppeling op de Exact Online API er zo uit:

  1. We registreren de app en kiezen de scopes. In de API-documentatie staat bij elk endpoint welke scope erbij hoort, zoals Crm accounts voor debiteuren en Sales invoices voor facturen. Meer rechten dan nodig vragen we niet.
  2. Een beheerder van de administratie geeft de app toegang. Met /api/v1/current/Me leest de koppeling daarna welke administratie actief is, en met system/Divisions welke administraties de gebruiker die toegang gaf kan openen.
  3. We testen met een beperkte set orders en lopen de boekingen samen met je boekhouder na.
  4. Bij de livegang zetten we de synchronisatie op een vast ritme aan, en voor wat meteen door moet een webhook.

Welke data er tussen je webshop en de boekhouding gaat

De kant op naar Exact: de bestelling. Meestal als verkooporder of als factuur, met de klant als debiteur erbij. Verkooporders via de API zijn er alleen in de pakketten Wholesale & Distribution en Manufacturing; in de andere pakketten wordt het een verkoopfactuur. Bestaat die klant al, dan koppel je eraan in plaats van hem opnieuw aan te maken; daar hoort een afspraak bij over hoe je dat herkent, op e-mailadres of op klantnummer. Rekent je klant online af, dan hoort de betaling bij dezelfde referentie als de factuur; hoe dat werkt lees je bij Mollie koppelen.

De kant op naar je site: artikelen, prijzen en voorraad. Dat is waar de winst zit voor een groothandel met duizenden artikelen, want die lijst met de hand bijhouden is geen werk maar een achterstand. Ligt de voorraad in een magazijnsysteem als Picqer, dan spreken we vooraf af welk systeem het getal levert. Komt je omzet uit een winkel, dan haal je die via de Lightspeed API op voordat hij in Exact Online landt.

Wat je niet doet is alles bij elke bezoeker ophalen. Wij bewaren de gegevens aan onze kant en verversen op een ritme dat binnen de limieten past.

Wat er misgaat zonder Exact Online koppeling

Drie dingen, en ze komen altijd terug. Een order die in de webshop staat en niet in de boekhouding, en dus pas bij de kwartaalafsluiting opvalt. Een artikel dat op je site nog leverbaar is terwijl het al weken op is, met een boze klant als gevolg. En een prijs die in Exact is aangepast en op de site niet, waarna iemand met de hand een creditnota maakt.

Elk van de drie kost meer tijd dan de integratie, en dat is voor de meeste klanten de rekensom. Wat het niet oplost is een administratie die niet klopt: een koppeling maakt van rommel geen orde, hij maakt het alleen sneller zichtbaar.

Limieten van de Exact Online API en waar een koppeling op vastloopt

De Exact Online API rekent met 60 aanroepen per minuut en een dagelijkse limiet per administratie. Elk antwoord vertelt in de headers hoeveel er nog over is, dus een koppeling kan zelf afremmen voordat hij tegen de grens loopt.

Daar hoort de paginagrootte bij. De meeste endpoints geven 60 regels per keer, de bulk- en sync-endpoints geven er 1000. Wie een catalogus van tienduizend artikelen via het gewone endpoint ophaalt, gebruikt ruim 160 aanroepen voor iets wat met de sync-variant in 10 kan.

De sync-endpoints werken met een timestamp. Je bewaart de hoogste waarde van de vorige keer en krijgt daarna alleen wat nieuw of gewijzigd is. Verwijderde records komen daar niet in mee; die haal je op via een apart endpoint voor verwijderde gegevens. Wie dat overslaat, houdt artikelen op de site die in Exact al weg zijn.

En een afgeronde verkooporder is via de API niet meer te wijzigen. Een correctie op een order die al is afgehandeld gaat dus niet automatisch, en dat hoort in de afspraken over retouren.

REST API of XML API

Exact Online kent twee routes. De REST API is de huidige: per endpoint gedocumenteerd met de methodes, de scope en of er een webhook bij hoort, en met aparte sync- en bulk-endpoints voor grote hoeveelheden. De XML API is de oudere route voor import en export van vaste onderwerpen, en de documentatie daarvan staat achter de login van Exact Online.

Voor een koppeling met een webshop bouwen wij op de REST API. Daar zitten de webhooks en de sync-endpoints die een koppeling zuinig houden met de limieten. Kom je bij een bestaande site een koppeling op XML tegen, dan is dat de oudere route; voor uitbreiden bouwen we liever op REST.

Koppelen met WordPress of met maatwerk

Op WordPress met WooCommerce draait de koppeling als een taak op de server. Een bestelling gaat naar Exact zodra de betaling is bevestigd en niet bij het afrekenen, zodat er geen facturen ontstaan voor orders die nooit zijn betaald. Artikelen en voorraad verversen op een vast ritme, en in het beheerscherm laat de logging zien wanneer de laatste synchronisatie was en of er iets is blijven hangen. Hoe we zo’n WooCommerce webshop bouwen, staat op een eigen pagina.

Op een maatwerksite in Next.js staat de koppeling in een eigen serverroute. Exact kan daar webhooks naartoe sturen, bijvoorbeeld bij een gewijzigde debiteur, en de site ververst dan alleen de pagina’s die het raakt. Dat past bij een groothandel met een eigen bestelomgeving voor vaste klanten, waar de prijslijsten per klant uit Exact komen. Een klantportaal op je administratie, waarin klanten hun orders en facturen uit Exact inzien, bouwen we als webapplicatie op maat.

In beide gevallen staan de tokens alleen op de server. Voor de webshop of bestelomgeving zelf, zie Design & Development.

Bijgewerkt op

Specialist voor koppelingen

Portret van Jos van der Pluijm tussen de stellingen van een magazijnJosDesign & Development085 83 30 533jos@klubb.nl

Veelgestelde vragen

Kan ik mijn webshoporders automatisch in Exact Online krijgen?

Ja. Een bestelling wordt een verkooporder of een factuur in Exact, met de klant als debiteur erbij. We spreken vooraf af hoe een bestaande klant wordt herkend, zodat er geen dubbele debiteuren ontstaan.

Kan mijn voorraad uit Exact op mijn site staan?

Ja. Wij halen artikelen, prijzen en voorraad op en bewaren ze aan onze kant, zodat de site snel blijft en we binnen de limieten van Exact blijven.

Waarom valt een koppeling met de Exact Online API soms stil?

Meestal door het refresh token. Dat rouleert bij elke vernieuwing, dus de koppeling moet steeds het nieuwste bewaren. Bewaart hij het oude, dan werkt alles tot het access token na 10 minuten verloopt en daarna niets meer. Wij slaan het nieuwe token na elke vernieuwing meteen op en krijgen een melding als een vernieuwing mislukt.

Hoeveel aanroepen mag je doen op de Exact Online API?

60 per minuut, plus een dagelijkse limiet per administratie. In elk antwoord zit een header met wat je nog over hebt. Een gewoon endpoint geeft 60 regels per pagina, de sync- en bulk-endpoints geven er 1000. Wij halen grote lijsten daarom via sync op en verdelen de rest van het werk over de dag.

Werkt dit ook als wij meerdere bv’s hebben?

Ja. Elke administratie heeft een eigen code die in het adres van de aanroep staat, met een eigen limiet. Wij zetten die code in een instelling en niet in de code.

Welke rechten heeft een koppeling in Exact Online nodig?

Rechten gaan per scope. In de API-documentatie van Exact staat bij elk endpoint welke scope het vraagt, bijvoorbeeld Crm accounts voor debiteuren en Sales orders voor verkooporders. De app vraagt alleen wat hij nodig heeft, en een beheerder van de administratie geeft eenmalig toegang. De koppeling ziet daarna alleen de administraties waar die gebruiker zelf bij kan.

Hoe kan ik mijn Shopify-webshop koppelen aan Exact Online?

Een Shopify-webshop koppel je aan Exact Online via de REST API, met een app die een beheerder eenmalig toegang geeft. Een bestelling gaat pas naar Exact als de betaling is bevestigd, en artikelen en voorraad komen op een vast ritme terug. Over de shop zelf: Shopify webshop laten maken.

Heeft Exact Online een API?

Ja. Exact Online heeft een REST API met JSON, met de code van de administratie in het adres van elke aanroep, en daarnaast een oudere XML API. Aanmelden gaat met OAuth 2.0. Voor grote hoeveelheden zijn er sync- en bulk-endpoints, en bij een deel van de endpoints horen webhooks.

Kan ik niet gewoon een app uit het Exact App Center gebruiken?

Ja, dat kan. Voor een gangbare situatie is een app uit het Exact App Center vaak de snelste route. Een eigen koppeling op de REST API is zinvol als je afspraken hebt die een standaardapp niet volgt, zoals prijslijsten per klant, meerdere administraties of een eigen bestelomgeving.

Hoe registreer je een app voor de Exact Online API?

Een app voor de Exact Online API registreer je in het developerportaal van Exact. Je kiest daar de scopes per onderdeel, zoals Crm accounts voor debiteuren. Daarna geeft een beheerder van de administratie de app eenmalig toegang, en werkt de koppeling met een access token en een refresh token.

Wat kost een Exact Online-koppeling met mijn webshop?

Een Exact Online-koppeling krijgt bij ons een vaste prijs in de offerte, nadat we de scope hebben uitgezocht. Gaan orders naar Exact en komen artikelen en voorraad terug, dan is het meer dan ophalen en komt er testen bij, samen met je boekhouder. Wachten op toegang valt daarbuiten.

Let's work together.

Je webshop en je boekhouding zien dezelfde werkelijkheid.