CCV Shop en Exact Online
CCV Shop Exact Online koppeling
CCV Shop-orders landen als verkooporder, factuur of boeking in Exact Online, ook de orders die via een marktplaats binnenkomen. Artikelen, prijzen en voorraad uit Exact gaan naar CCV Shop, per product of per attribuutcombinatie. Gebouwd op jouw administratie en jouw winkel, en daarna door ons gedraaid en bewaakt.
Wat je tussen CCV Shop en Exact Online koppelt
Exact Online is de bron voor artikelen, prijzen en voorraad, CCV Shop voor orders en webklanten. De REST API van CCV Shop werkt met JSON en een API-sleutel en geheim die je in de winkel aanmaakt. Elk verzoek draagt een HMAC-SHA512-hash in de header x-hash en een tijdstip in x-date dat niet meer dan 5 minuten van de servertijd mag afwijken.
| Stroom | Richting | CCV Shop | Exact Online |
|---|---|---|---|
| Artikelen en prijzen | naar CCV Shop | products, attributecombinations |
sync/Logistics/Items |
| Staffels | naar CCV Shop | productstaggeredprices |
SalesItemPrices |
| Voorraad | naar CCV Shop | stock op product of combinatie |
sync/Inventory/StockPositions |
| Orders en orderregels | naar Exact | orders, orders/{id}/orderrows |
SalesOrders, SalesInvoices of SalesEntries |
| Klanten | naar Exact | customer op de order |
crm/Accounts, crm/Addresses |
| Status en track-and-trace | naar CCV Shop | PATCH /orders/{id} |
salesorder/GoodsDeliveries |
Verkooporders, leveringen en voorraadposities bestaan in de API alleen voor Exact Online Handel en Productie. Met Boekhouden landt een CCV Shop-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 en EAN | Exact, Code en Barcode |
naar CCV Shop | productnumber en eannumber, of per combinatie |
| Hoofdproduct, teksten, foto's | CCV Shop | blijft in CCV Shop | de koppeling schrijft er niet overheen |
| Prijs en meerprijs | Exact, prijs per artikel | naar CCV Shop | price op het product, netto_extra_price per combinatie |
| Btw-tarief van het artikel | Exact, SalesVatCode |
naar CCV Shop | als taxtariff, bijvoorbeeld normal |
| Voorraad | Exact, FreeStock |
naar CCV Shop | naar product of combinatie, volgens stocktype |
| Order | CCV Shop tot de import, daarna Exact | naar Exact | één keer, ordernumber_full in YourRef |
| Debiteur | Exact | zoeken op btw, dan e-mail |
nieuwe debiteur alleen als beide niets vinden |
| Status en trackingcode | Exact | naar CCV Shop | status 5, Verzonden, met track_and_trace_code |
Wat CCV Shop en Exact Online anders bewaren
Varianten: eigen artikelen tegenover combinaties met meerprijs
Exact Online heeft geen hoofdartikel met varianten: elke maat is een eigen artikel met een eigen code, prijs en voorraad. CCV Shop slaat een variant op als attribuutcombinatie onder één product. Een combinatie heeft een eigen product_number (64 tekens), ean_number (50) en stock, maar geen eigen prijs: alleen netto_extra_price, het verschil met het hoofdproduct, dat ook negatief mag zijn.
De koppeling groepeert de artikelen uit Exact op een afgesproken deel van de code, hier 10482. De laagste prijs gaat naar het product en elke combinatie krijgt het verschil: 26,50 min 24,50 is 2,00 voor maat XL. stocktype op het product bepaalt of de voorraad op het product staat (Product) of per combinatie (Attribute). Bij varianten staat hij op Attribute. Meer in varianten koppelen.
Prijs en korting als twee velden
Een product in CCV Shop heeft price en discount, en de verkoopprijs is price min discount. In CCV's eigen voorbeeld is dat 11,95 min 1,95. Een tijdelijke actieprijs uit Exact (een SalesItemPrices-regel met StartDate en EndDate) zet de koppeling in discount, zodat de oorspronkelijke prijs zichtbaar blijft. Op de einddatum zet hij discount terug op 0. Of de prijzen inclusief btw zijn staat in de winkelinstelling prices_include_vat; de koppeling leest die bij de start en rekent de prijs uit Exact daarop om.
Btw: een tarief op naam tegenover een code
CCV Shop geeft een product een taxtariff: normal, low A, low B, extra low of zero. Het oude veld vatrate met een percentage is verouderd. Een orderregel heeft wel een percentage in tax. Exact Online vraagt per regel een btw-code uit vat/VATCodes. De koppeling houdt twee tabellen bij: van de Exact-code naar het CCV-tarief voor artikelen, en van percentage, land en type order naar de Exact-code voor orders.
Orders die via een extern platform zijn geplaatst hebben is_platform_sale op true. Volgens CCV is de btw op alle regels dan 0%. Die order krijgt in Exact een eigen code met 0%, en vaak een eigen dagboek. Een regel van het type statiegeld (product_type deposit) heeft ook altijd 0%. Meer in bedragen en btw mappen.
Adressen in twee vormen
Een CCV Shop-adres komt in een van twee vormen: address_line_1 en address_line_2, of street, housenumber en housenumber_suffix. housenumber is een geheel getal, dus een toevoeging staat altijd apart. Exact heeft in crm/Addresses drie vrije regels zonder huisnummerveld. De koppeling neemt address_line_1 over als die gevuld is, en voegt anders samen: Dorpsstraat, 12 en A wordt Dorpsstraat 12 A. Het land komt als country_code (ISO 3166-1, twee letters) en als volledige naam; de koppeling gebruikt de code. Zie adresvelden mappen.
Zakelijke klanten
De klant op de order heeft customertype (b2c of b2b), btw en kvk. In Exact zijn dat VATNumber en ChamberOfCommerce op de debiteur, en alleen Name is verplicht. De koppeling zoekt eerst op btw-nummer, dan op e-mail. Een particuliere klant gaat naar een eigen debiteur of naar een verzameldebiteur.
De technische werkelijkheid van deze combinatie
| Onderwerp | CCV Shop | Exact Online |
|---|---|---|
| Lezen | 150 per minuut per resource | 60 per minuut, 5.000 per dag |
| Schrijven | 100 per minuut per resource en methode | binnen dezelfde 60 en 5.000 |
| Totaal | een limiet over de hele API, foutcode 429.11 |
per app en administratie |
| Per pagina | 25 standaard, met start en size |
60, sync-endpoints 1.000 |
| Bulk | geen, één product of combinatie per verzoek | sync-endpoints om te lezen |
| Orders filteren | op min_create_date, status, is_paid |
op Timestamp via sync |
De CCV-getallen staan per methode in de API-documentatie van CCV Shop, die van Exact in de documentatie over API-limieten. Nagelezen op 3 oktober 2026.
De eerste voorraadronde, doorgerekend. Een winkel met 3.000 producten zonder varianten en 1.000 producten met elk 4 combinaties heeft 3.000 + 4.000 = 7.000 voorraadplekken. Uit Exact is dat 7 verzoeken op de sync-endpoint. Naar CCV Shop is het één PATCH per plek, bij 100 per minuut:
products: 3.000 / 100 per minuut = 30 minuten
attributecombinations: 4.000 / 100 per minuut = 40 minuten
na elkaar = 70 minuten
De twee resources hebben elk hun eigen limiet, maar CCV hanteert ook een totaal over de hele API, zonder dat getal te publiceren. De koppeling loopt ze daarom na elkaar af en verlaagt het tempo bij de eerste 429. Na de eerste ronde gaan alleen gewijzigde plekken mee.
Orders hebben geen filter op wijzigingsdatum. Je kunt orders opvragen vanaf een aanmaakdatum, niet vanaf een laatste wijziging. Een order die gisteren is geplaatst en vandaag wordt betaald, mist een ronde die alleen naar nieuwe orders kijkt. De koppeling luistert daarom naar de webhooks orders.created en orders.updated.ispaid, en haalt elke ronde ook de onbetaalde orders van de laatste dagen op met is_paid. Meer over limieten in wat is een rate limit.
Wat een standaardkoppeling hier niet doet
Standaardkoppelingen en koppelplatformen voor CCV Shop en Exact Online documenteren hun eigen grenzen. Niet elke aanbieder van Exact-koppelingen heeft er een voor CCV Shop. Waar ze er wel zijn:
- Alleen orders naar de boekhouding. De order wordt een boeking of factuur; voorraad en status komen niet terug in de winkel.
- Debiteur alleen op e-mailadres, en een bestaande debiteur wordt niet bijgewerkt.
- Alleen volledige terugbetalingen, binnen 30 dagen en alleen voor orders die de koppeling zelf heeft doorgezet.
Een gebouwde koppeling leest is_platform_sale en general_ledger per order, rekent meerprijzen voor combinaties uit en schrijft voorraad en track-and-trace terug. De platformkant staat op CCV Shop koppeling.
Als het misgaat
| Wat er misgaat | Wat de koppeling doet | Wat je ziet |
|---|---|---|
429.10 of 429.11 van CCV Shop |
pauze, daarna lager tempo | niets, tenzij het aanhoudt |
x-date meer dan 5 minuten afwijkend |
het verzoek gaat opnieuw met een nieuw tijdstip | een regel in het logboek |
| Webhook-adres antwoordt met 503 of 504 | CCV zet de callback op open en biedt hem later opnieuw aan; de koppeling haalt de order ook zelf op | niets |
sub_product_number bestaat niet in Exact |
die order wordt vastgehouden, andere gaan door | de order en het nummer |
general_ledger.code onbekend in Exact |
order naar de controlelijst | de order en de code |
| 429 van Exact | order blijft in de wachtrij tot het venster verder is | niets, tenzij het aanhoudt |
CCV Shop stuurt bij een webhook niet mee voor welke winkel hij is. De koppeling zet daarom een eigen kenmerk in het webhookadres en controleert de x-hash over adres en inhoud. Exact staat per endpoint 10 fouten per uur toe en blokkeert de sleutel daarboven, dus elke order wordt vooraf gecontroleerd op artikel, btw-code en grootboekrekening. Een order die blijft falen bewaart de koppeling met de oorspronkelijke inhoud en biedt hij opnieuw aan zodra de oorzaak is opgelost. Voor livegang draait hij als dry run.
Wij hosten en bewaken de koppeling en passen hem aan als CCV of Exact een interface wijzigt. Alle stromen staan op koppelingen. Verwante combinaties: Lightspeed Exact Online koppeling, WooCommerce Exact Online koppeling en Shopware Exact Online koppeling. Vertel hoeveel producten en combinaties je winkel heeft.
Veelgestelde vragen
Heb ik Exact Online Handel nodig voor een CCV Shop koppeling?
Voor orders als verkoopboeking of verkoopfactuur 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 CCV Shop en track-and-trace terug, dan heb je Handel of Productie nodig. Zie Exact Online Boekhouden of Handel.
Hoe gaan bestellingen via een marktplaats in CCV Shop naar Exact?
Als gewone order, met één verschil. CCV Shop markeert een order die via een extern platform is geplaatst met is_platform_sale, en volgens de documentatie van CCV is de btw op alle orderregels dan 0%. Zo'n order moet in Exact een andere btw-code krijgen dan een order uit je eigen winkel, en vaak een eigen dagboek of omzetrekening. De koppeling leest het veld en kiest de code per order.
Kan de koppeling de grootboekrekening uit CCV Shop gebruiken?
Ja. Een orderregel in CCV Shop kan een general_ledger met een code hebben. Landt de order als verkoopboeking, dan zoekt de koppeling die code op in de grootboekrekeningen van je administratie en gebruikt hij de bijbehorende GLAccount. Een code die in Exact niet bestaat stuurt de order naar de controlelijst, zodat er niets op een verkeerde rekening komt.
Waarom staat een maat in CCV Shop met een meerprijs?
Omdat CCV Shop een variant opslaat als attribuutcombinatie onder één product, met netto_extra_price als verschil met het hoofdproduct. Exact heeft voor elke maat een eigen artikel met een eigen prijs. De koppeling zet de laagste prijs op het product en rekent per combinatie het verschil uit. Verandert de prijs in Exact, dan rekent hij de meerprijzen opnieuw.
Hoe snel staat een voorraadwijziging uit Exact in CCV Shop?
Exact meldt een wijziging in de voorraadpositie via een webhook. De koppeling schrijft de nieuwe voorraad daarna naar het product of de combinatie, met hooguit 100 schrijfacties per minuut per soort. Bij een gewone dag met enkele honderden wijzigingen staat elke wijziging binnen enkele minuten in de winkel. Een volledige ronde over duizenden artikelen duurt langer; de rekensom staat op deze pagina.
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