Persoon aan een bureau met laptop en papieren over een online factuursysteem
GidsUitgebreide gids19 oktober · 09:0018 min leestijd

HubSpot aan Exact Online koppelen: van gewonnen deal naar gecontroleerde conceptfactuur

Leer HubSpot-deals veilig doorzetten naar Exact Online: match klant en regels, controleer btw, schrijf idempotent naar een conceptfactuur, lees terug en laat Finance pas daarna vrijgeven.

Een gewonnen deal is nog geen factuur. Je salescollega zet de deal in HubSpot op Gewonnen, de klant verwacht een factuur en Finance vraagt zich af of de juiste rechtspersoon, regels en btw wel in beeld zijn. Zet je die status rechtstreeks door naar Exact Online, dan automatiseer je vooral de kans dat een verkeerde klant of prijs officieel wordt.

De veilige route heeft een tussenlaag. HubSpot levert de deal, de gekoppelde onderneming, contactpersoon en regels. Een controleerbaar dossier matcht die gegevens met Exact Online, berekent btw en betalingsvoorwaarden, schrijft één conceptfactuur, leest het resultaat terug en wacht daarna op menselijke vrijgave.

Een gecontroleerde deal-naar-factuurflow is een koppeling waarin een gewonnen CRM-deal eerst wordt bevroren als bewijsdossier, daarna wordt gematcht met klant, contact, regels, btw en voorwaarden in het boekhoudpakket, en pas na read-back en expliciete goedkeuring mag worden verwerkt of verzonden. De betaling volgt als een aparte statuslaag.

Deze gids is voor ondernemers, salesoperations en finance-teams die HubSpot en Exact Online gebruiken en de stap van verkoop naar financiële werkelijkheid willen automatiseren zonder de controle kwijt te raken. De actuele API-versies, productdetails en prijzen hieronder zijn gecontroleerd op 19 oktober 2026.

Eerst de koppelroute kiezen

Een koppeling is niet één knop. Je kiest eerst hoe de data door de keten gaat en wie verantwoordelijk blijft als een match niet uniek is. De bestaande gids over Exact Online koppelen via een standaardconnector, integratieplatform of maatwerk is de routecontext. Voor deze klus is de financiële vrijgave de extra laag.

  • Kant-en-klare connector: alleen verstandig als de connector HubSpot-deals, gekoppelde regels, jouw Exact-administratie, conceptstatus, btw-velden en terugleescontrole echt ondersteunt. Een knop die alleen een klant en een bedrag doorstuurt is geen factuurpoort.
  • Integratieplatform: n8n of Make past als je één of twee systemen koppelt, de uitzonderingen overzichtelijk blijven en iemand de flow beheert. Je moet staging, idempotentie en goedkeuring zelf ontwerpen.
  • Eigen API-koppeling: kies dit bij meerdere administraties, afwijkende factuurmomenten, meerdere btw-regels, hoge foutkosten of een proces waarin geld pas na bewijs mag bewegen. Dan bouw je de regels rond jouw proces in plaats van rond de velden van een connector.

Mijn korte regel: een standaarddeal met één administratie kan kant-en-klaar. Zodra een gewonnen deal nog niet automatisch factureerbaar is, hoort de vrijgave in een eigen workflowlaag te staan, ook als de uiteindelijke API-call klein is.

Wat je nodig hebt

Leg eerst het contract tussen sales en finance vast. Een integratie-engineer kan de API aanroepen, maar geen ontbrekende afspraak over het factuurmoment oplossen. De onderstaande gegevens horen vóór de bouw op tafel te liggen.

  • Een HubSpot-pijplijn met een duidelijke trigger. Kies een interne dealstage-ID voor Gewonnen en leg vast welke extra voorwaarde de factuur toelaat, zoals 'billing_milestone=acceptatie', een getekende offerte of een opleverdocument. HubSpot vraagt bij het aanmaken van deals de interne IDs van pipeline en dealstage, niet de zichtbare Nederlandse labels. De actuele Deals API-documentatie noemt dealname, dealstage en pipeline als kernvelden en laat zien dat je met interne IDs werkt, documentatie bijgewerkt op 9 september 2026.
  • Een bron voor de factuurregels. Gebruik gekoppelde HubSpot line items, een ondertekende quote of een vast prijsdocument. Het veld amount op de deal is een controletotaal, geen vervanging voor regels, hoeveelheden, eenheden en kortingen.
  • Een relatiekaart. Bewaar voor iedere onderneming de Exact-account-ID, klantcode, btw-identificatienummer, factuuradres, betaalconditie en eventueel een standaardcontact. Bewaar voor contactpersonen het Exact-contact-ID. Namen en e-mailadressen zijn zoekhulp, geen definitieve sleutel.
  • Een Exact-administratiekaart. Noteer de divisie, het verkoopjournaal, de factuurreeks, betalingscondities, valuta, btw-codes, grootboekrekeningen en de rechten van de API-gebruiker. Bij meerdere divisies is de divisie geen detail in de URL, maar een aparte financiële bestemming.
  • Een factuurbeleid. Beschrijf wanneer Gewonnen genoeg is en wanneer niet. Leg ook vast wie een afwijkende btw-behandeling, korting, creditnota, afwijkende betaaltermijn of handmatige factuurdatum mag goedkeuren.
  • Een staginglaag en uitzonderingsqueue. PostgreSQL, Supabase of een eigen tabel volstaat. Per kandidaat bewaar je bron, payload, hash, status, eigenaar, reden en vervaltijd. Een gedeelde mailbox kan een melding dragen, maar is geen auditlog.
  • Een testadministratie en proefset. Neem minimaal een gewone Nederlandse B2B-factuur, twee btw-tarieven, een buitenlandse klant, een creditnota, een dubbele deal, een ontbrekende contactpersoon en een verlopen prijs mee.
  • Een beheerder met tijd. Spreek af wie binnen één werkdag naar een exception kijkt, wie een Exact-token beheert en wie de maandelijkse controle op facturen en betalingen uitvoert.

De checklist hieronder is de minimale go/no-go voor je begint.

Voordat je HubSpot aan Exact Online koppelt
0/8

Concrete stappen: van gewonnen deal naar conceptfactuur

De flow hieronder maakt van de CRM-status een voorstel, niet meteen een financiële mutatie. Iedere stap levert controleerbaar bewijs op. Ontbreekt dat bewijs, dan gaat de kandidaat naar de queue.

1. Trigger alleen op een factureerbare deal

Gebruik Gewonnen als startpunt, niet als blind factuurcommando. In HubSpot maakt de zichtbare naam van een fase niet genoeg duidelijk. Een deal kan Gewonnen zijn terwijl de klant nog een aanbetaling moet doen, de oplevering nog niet is geaccepteerd of een order nog uit meerdere deelmijlpalen bestaat.

Maak daarom naast dealstage minimaal deze eigen deal-eigenschappen aan: factuurmoment, factuurtoestemming, contractreferentie, factuurstatus, exact_invoice_id en integratie_sleutel. De waarde factuurtoestemming=true ontstaat pas wanneer de commerciële voorwaarde klopt. Een workflow, webhook of geplande controle mag daarna een kandidaat maken.

HubSpot ondersteunt webhooks voor CRM-objectgebeurtenissen. De huidige Webhooks API-documentatie noemt een openbaar HTTPS-eindpunt en waarschuwt dat de beheer-API voor subscriptions aan legacy public apps is gekoppeld; controleer dus het type van je app voordat je een webhook als enige trigger kiest. HubSpot beschrijft webhooks als HTTP-meldingen voor CRM-events en noemt de app- en authenticatievoorwaarden, versie 2026-03 gecontroleerd op 19 oktober 2026. Een geplande controle die deals met factuurtoestemming=true ophaalt is een prima terugvalroute.

Controlepunt: je kunt uitleggen waarom deze deal factureerbaar is, los van het feit dat de stage Gewonnen heet.

2. Bevries de deal en bewaar de bron

Lees de deal opnieuw uit voordat je iets naar Exact stuurt. Bewaar hs_object_id, pipeline, interne stage-ID, dealnaam, sluitdatum, valuta, contractreferentie, bron-URL of document-ID, gekoppelde bedrijfs- en contact-ID's en de volledige set line items. Bewaar ook de tijd waarop de snapshot is gemaakt.

Gebruik de dealwaarde alleen als controle tegen de som van de regels. Als HubSpot € 7.500 toont en de regels tellen op tot € 7.200, maak je geen factuur van een van beide bedragen. De kandidaat gaat naar amount_mismatch met de twee berekeningen naast elkaar.

Verander de bron niet. Een genormaliseerde kopie mag datums en decimalen geschikt maken voor Exact, maar je moet altijd kunnen terugzien welk HubSpot-veld of welk regelrecord de waarde leverde. Een correctie in HubSpot na de snapshot is een nieuwe versie van de kandidaat, geen stille wijziging van de oude.

Controlepunt: een reviewer kan de voorgestelde factuur terugbrengen naar één HubSpot-dealversie, één set regels en één contract- of opleverbewijs.

3. Match bedrijf, contact en factuuradres

Match eerst op een expliciete externe sleutel. De beste sleutel is een eigen Exact-account-ID of klantcode die je in HubSpot bewaart. Ontbreekt die, gebruik dan btw-identificatienummer en juridische naam als combinatie. Een e-maildomein kan een kandidaat leveren, maar niet zelfstandig een account kiezen. Een groep met meerdere bv's maakt dat verschil duur.

Controleer daarna de relatie:

  1. HubSpot-bedrijf naar Exact-account en factuuradres.
  2. HubSpot-contact naar Exact-contactpersoon, als die op de factuur hoort.
  3. Afwijkend afleveradres of debiteur naar een expliciete InvoiceTo- of DeliverTo-relatie.
  4. Valuta, betaalconditie en kredietblokkade tegen Exact.

Gebruik de Exact-ID's in de payload. Zet de zichtbare naam en code ernaast voor de reviewer, maar laat de naam geen sleutel worden. Bij nul kandidaten gaat de deal naar account_not_found. Bij twee kandidaten naar account_ambiguous. De mens kiest dan uit een getoonde lijst en de keuze wordt als correctie op de relatiekaart opgeslagen.

Controlepunt: bedrijf, contact en adres wijzen elk naar één Exact-record en de match is reproduceerbaar zonder vrije tekst.

4. Map de regels en maak btw een vaste beslissing

Lees per regel product of dienst, hoeveelheid, eenheid, prijs, korting, valuta, lever- of prestatiedatum en btw-behandeling. Leg per regel vast waar de waarde vandaan komt. Een regel uit een ondertekende offerte is iets anders dan een vrije omschrijving op de deal.

Laat een taalmodel geen btw-code raden. Gebruik een deterministische tabel met minimaal land van de klant, land van de leverancier, type levering, btw-identificatienummer, product- of dienstcategorie, factuurmoment en eventuele verleggings- of vrijstellingsreden. Nieuwe combinaties gaan naar finance.

Een Nederlandse factuur moet onder meer naam en adres van beide partijen, btw-identificatienummer, KVK-nummer waar van toepassing, uitgiftedatum, uniek opeenvolgend factuurnummer, geleverde goederen of diensten, leverdatum, bedrag exclusief btw, btw-tarief en btw-bedrag bevatten. De Belastingdienst noemt deze verplichte factuurgegevens op de actuele pagina voor de btw-administratie, gecontroleerd op 19 oktober 2026.

Leg ook de betalingsconditie vast. De vervaldatum hoort uit de Exact-betaalconditie te komen, niet uit een vrij tekstveld in HubSpot. Heeft de deal een afwijkende termijn, laat een bevoegde medewerker die wijziging accepteren en bewaar de reden.

Controlepunt: per regel staan netto, btw-code, btw-bedrag, valuta, betaalconditie en bron vast. De som van regels, btw en totaal is opnieuw berekend en gelijk aan de kandidaat.

5. Maak de stagingrecord idempotent

Maak vóór de Exact-write een sleutel voor de zakelijke factuurcase, los van de payloadversie. Gebruik bijvoorbeeld case_key = source_system + source_deal_id + factuurmoment + division. De payloadversie krijgt daarnaast een eigen sleutel, zoals integration_key = case_key + payload_version. Daardoor kan een correctie een nieuwe versie worden zonder een tweede factuurcase te openen.

Leg deze databasebeperkingen vast:

ConstraintVoorbeeldDoel
Eén factuurcaseUNIQUE (source_system, source_deal_id, factuurmoment, division) op invoice_casesAlle retries en payloadversies van dezelfde zakelijke gebeurtenis komen in één case
Eén versie per caseUNIQUE (case_id, version) op invoice_versionsEen dubbele webhook kan geen tweede versie met hetzelfde nummer maken
Eén actieve versiePartial unique index op case_id voor status staged, awaiting_release, written_open of releasedEr kan maar één versie tegelijk naar een open Exact-concept wijzen
Eén Exact-factuurUNIQUE (exact_invoice_id) wanneer de waarde niet leeg isHetzelfde InvoiceID kan niet aan twee cases worden gekoppeld

Sla ook een hash van de genormaliseerde payload op. Bewaar minstens case_key, integration_key, payload_hash, source_snapshot_at, division, version, status, exact_invoice_id, superseded_invoice_id, owner en expires_at. Gebruik aparte statuslagen: source_validated, match_validated, vat_validated, staged, written_open, released, processed, payment_open, paid, superseded en exception.

Neem de case-lock binnen één databasetransactie voordat je een versie leest of schrijft. Bijvoorbeeld: SELECT ... FROM invoice_cases WHERE case_key = ... FOR UPDATE of een transactionele advisory lock op de genormaliseerde case_key. Die lock serialiseert een dubbele webhook, een retry en een payloadwijziging. De eerste run beslist, terwijl de volgende run wacht en daarna de bestaande uitkomst terugleest.

Behandel de uitkomst zo:

  1. Zelfde payloadhash: hervat dezelfde versie. Staat exact_invoice_id al gevuld, lees die InvoiceID terug en doe geen nieuwe POST. Staat de write nog op staged, dan mag alleen de eigenaar van de lock de write uitvoeren.
  2. Payload-drift vóór de Exact-write: maak onder dezelfde invoice_case versie 2 of hoger aan met status awaiting_reconciliation, een verwijzing naar de vorige versie en de nieuwe hash. Schrijf nog niets naar Exact totdat Finance de nieuwe payload opnieuw heeft vrijgegeven.
  3. Payload-drift terwijl een Exact-concept openstaat: maak geen tweede concept. Als de bestaande open InvoiceID wijzigbaar is, update diezelfde InvoiceID met de goedgekeurde nieuwe payload, lees hem terug en markeer de oude versie als superseded. Bewaar de InvoiceID in superseded_invoice_id, samen met superseded_at, superseded_reason en replaced_by_version. De nieuwe versie hergebruikt dan één open concept in plaats van een tweede te POST'en.
  4. Vervangen is echt nodig: als de Exact-inrichting de open factuur niet mag wijzigen, zet de oude versie niet alvast op superseded. Voer eerst de toegestane Exact-actie uit om de oude open InvoiceID te annuleren, verwijderen of anderszins buiten de open conceptstatus te brengen en lees de status terug. Pas na die bevestiging mag de nieuwe versie schrijven. Als de oude InvoiceID al verwerkt is of niet veilig kan worden afgesloten, zet de case op supersede_blocked en stuur hem naar Finance voor correctie, bijvoorbeeld via een creditnota. Er komt in die situatie geen nieuwe conceptfactuur naast de bestaande factuur.
  5. Time-out of netwerkretry na POST: neem opnieuw de case-lock, kijk eerst naar exact_invoice_id en lees die InvoiceID terug. Ontbreekt die, zoek dan in Exact op de opgeslagen externe referentie en case_key en koppel een gevonden factuur aan de bestaande versie. Alleen wanneer die reconciliatie bevestigt dat er geen bestaande Exact-factuur is, mag de write opnieuw worden geprobeerd.

Een nieuwe payloadversie betekent dus niet automatisch een nieuwe Exact-factuur. Zolang de case-lock of de bestaande InvoiceID niet aantoonbaar is afgehandeld, blijft er maximaal één open concept. De waarde integration_key is nuttig voor herstel, maar de databaseconstraint en de lock zijn de harde grens.

Controlepunt: dezelfde gebeurtenis opnieuw aanbieden levert dezelfde invoice_case en, waar mogelijk, dezelfde InvoiceID op. Bij payload-drift zie je de oude en nieuwe versie, de superseded InvoiceID en de exacte reden, zonder twee open Exact-concepten naast elkaar.

6. Schrijf één open conceptfactuur naar Exact Online

Gebruik voor een eigen koppeling de Exact REST API met een private app, OAuth en de juiste divisie. De write moet een beperkt contract hebben: klant, contact, journaal, valuta, betaalconditie, factuurdatum, referentie en SalesInvoiceLines. Geef geen algemene agenttool toegang tot vrij schrijven in Exact.

De officiële SalesInvoices-documentatie beschrijft POST, GET, PUT en DELETE en vereist SalesInvoiceLines bij een POST. Nieuwe facturen krijgen standaard status 20, open; status 10 is draft en status 50 is processed. Een open factuur kan nog worden gewijzigd, een verwerkte factuur niet. Exact beschrijft deze endpoint, de verplichte factuurregels en de statuswaarden in zijn REST-referentie, documentatie gecontroleerd op 19 oktober 2026.

Gebruik een verkoopjournaal, OrderedBy en de echte Exact-account- en artikel-ID's. Zet de HubSpot-deal-ID in een geschikt referentieveld, zoals YourRef of Description, maar maak die tekst niet je enige deduplicatiecontrole. De zakelijke sleutel staat in je eigen staginglaag.

Roep geen print-, verwerk- of verzendactie aan in deze stap. Het doel is een controleerbaar open concept met een Exact-ID. De financiële en externe gevolgen komen pas na de release-regel die je met Finance hebt afgesproken.

Controlepunt: de API-response bevat een Exact InvoiceID, de status is teruggelezen en de gekoppelde regelset is opgeslagen in je stagingrecord.

7. Lees terug en laat een mens de exacte payload vrijgeven

Een HTTP 201 zegt dat Exact iets heeft opgeslagen. Het zegt niet dat de juiste klant, prijs, btw of regel in het record staat. Lees header en regels daarom terug met de nieuwe InvoiceID en vergelijk minimaal:

  • Exact-account, contact en factuuradres.
  • Factuurdatum, valuta, journaal en betaalconditie.
  • Iedere artikel- of dienst-ID, hoeveelheid, eenheid, prijs en korting.
  • Netto, btw en totaal, met een tolerantie die je vooraf hebt vastgelegd.
  • De externe referentie, bronversie en integratiesleutel.

De vrijgever ziet de originele deal-snapshot, de gebruikte match, de btw-beslissing, de Exact-response en de read-back. De knop zegt niet alleen Goedkeuren. Leg released_by, released_at, reden, payloadhash en de vervolgactie vast. Bij weigeren gaat de kandidaat naar rejected of terug naar de eigenaar met een concrete reden.

De vrijgave moet vóór de risicovolle actie liggen en aan de exacte parameters vastzitten. OWASP adviseert voor agentische systemen least privilege, server-side validatie, menselijke goedkeuring voor ingrijpende acties en replay-bescherming. De OWASP-richtlijn werkt deze controles uit voor toolautorisatie, menselijke goedkeuring en outputvalidatie, geraadpleegd op 19 oktober 2026.

Pas na een geldige release voer je de actie uit die in jouw Exact-inrichting de factuur verwerkt of verzendt. Houd open en processed uit elkaar. De reviewer keurt een concrete payload goed, niet de belofte dat een toekomstige run ongeveer dezelfde factuur zal maken.

Controlepunt: bij iedere verwerkte factuur vind je één bron-snapshot, één stagingpayload, één Exact-ID, één read-back en één menselijke beslissing.

8. Volg betaalstatus als aparte geldstroom

Een verwerkte factuur is nog niet betaald. Zet payment_status daarom niet op betaald wanneer Exact de factuur heeft verwerkt of verzonden. Lees na de financiële write de vordering terug en werk de CRM-status bij op basis van de betaling, niet op basis van de dealstage.

De Exact-endpoint cashflow/Receivables geeft onder meer IsFullyPaid, LastPaymentDate, TransactionEntryID en een statuslaag met open, geselecteerd, verwerkt en gematcht. De ReceivablesList is de leesroute voor betalingstermijninformatie. Exact beschrijft in de actuele Receivables-documentatie hoe je betalingsstatus, vervaldatum en de koppeling naar de financiële transactie leest, gecontroleerd op 19 oktober 2026.

Schrijf in HubSpot alleen terug wat je kunt bewijzen: exact_invoice_id, invoice_status, payment_status, due_date, last_payment_date en eventueel outstanding_amount. Een onbetaalde factuur met status processed is een gezonde normale toestand. Een openstaande vordering met verlopen vervaldatum is een opvolgtaak, geen technische fout.

Controlepunt: sales ziet het verschil tussen concept, verzonden, openstaand en betaald. Finance kan elke status terugbrengen naar een Exact-record en een betalingsbron.

CTA-meetbaarheid: registreer iedere CTA-druk als first-party event cta_click, met minimaal source (inline-cta, keuzehulp-result of cta-nl), guide_slug, service_slug en cta_label. Registreer na het formulier en een inhoudelijke kwalificatie een apart event lead_qualified met lead_id, guide_slug, service_slug, source_cta en qualification_reason. Zo zijn clicks en gekwalificeerde leads aan dezelfde CTA toe te schrijven.

Valkuilen die je pas bij de eerste correctie ziet

De happy path is klein. De uitzonderingen bepalen of je administratie betrouwbaar blijft.

  • Gewonnen wordt als factuurtrigger gebruikt. Een commerciële status zegt niet dat een contractuele mijlpaal is geleverd. Maak een aparte factuurvoorwaarde en laat ontbrekend bewijs naar billing_gate_missing gaan.
  • Het dealbedrag vervangt de regels. Een totaal kan korting, voorschot of meerdere termijnen verbergen. Lees de gekoppelde regels en vergelijk de som met amount; bij verschil niet schrijven.
  • Een bedrijfsnaam kiest de verkeerde bv. Domein en naam zijn geen juridische identiteit. Match op eigen Exact-ID of btw-identificatienummer, en zet twee kandidaten in de queue.
  • Eén standaard btw-code wordt overal gebruikt. Een klantland, verleggingsregel of productcategorie kan de behandeling veranderen. Laat de btw-matrix beslissen en geef onbekende combinaties aan finance.
  • Concept, verwerkt en betaald worden één status. Exact status 20 open, status 50 processed en IsFullyPaid vertellen verschillende dingen. Houd CRM-statusvelden daarom gescheiden.
  • Een dubbele webhook maakt twee facturen. Een retry is normaal gedrag. Schrijf integration_key en payload_hash eerst weg, zoek bij een time-out op sleutel en lees de kandidaat terug voordat je opnieuw POST.
  • De goedkeuring verloopt terwijl de deal wijzigt. Een prijs of betaalconditie kan na goedkeuring veranderen. Zet een expires_at, lees kritieke bronvelden opnieuw en maak bij drift een nieuwe versie.
  • De Exact-gebruiker is een medewerker die vertrekt. Gebruik een organisatie-account met minimale rechten, leg eigenaar en offboarding vast en test tokenvernieuwing zonder de persoonlijke gebruiker.
  • De queue zegt alleen review. Finance weet dan niet wat er mis is. Gebruik vaste redencodes zoals account_ambiguous, line_missing, vat_unknown, terms_changed, duplicate_candidate, readback_mismatch en payment_unmatched.
  • De betaling wordt uit de factuurstatus afgeleid. Een verzonden factuur kan nog openstaan, en een betaling kan gedeeltelijk of gematcht zijn. Lees de vordering en bewaar datum, bedrag en transactie-ID apart.

Een uitzonderingsqueue is geen afvalbak. Per item horen bewijs, eigenaar, deadline, kandidaatkeuze en volgende actie zichtbaar te zijn. Meet ook de herhaalde oorzaken. Als 35 procent van de deals op ontbrekende Exact-account-ID blijft hangen, moet je de relatiekaart verbeteren, niet meer mensen naar dezelfde queue sturen.

Beslis-kader: connector, integratieplatform of maatwerk

De keuze draait om variatie, foutkosten en beheer. Niet om de vraag welk platform de langste lijst met apps heeft.

Kant-en-klaar past bij één administratie, één factuurmoment, vaste Nederlandse btw-regels, betrouwbare Exact-relaties en weinig uitzonderingen. Vraag vóór aanschaf of de connector een open conceptfactuur kan maken, SalesInvoiceLines vult, de Exact-ID terugschrijft, een retry veilig verwerkt, read-back doet en betaling apart synchroniseert. Als het antwoord op één van die punten nee is, is een connector voor deze klus te klein.

n8n of Make past wanneer je de deal uit HubSpot haalt, een stagingrecord bijhoudt, een finance-melding stuurt en daarna een beperkte Exact-call doet. n8n Cloud Starter kost momenteel € 20 per maand bij jaarlijkse betaling voor 2.500 volledige workflow-uitvoeringen en Pro € 50 voor 10.000, met onbeperkte stappen. De actuele n8n-prijspagina rekent per volledige uitvoering en noemt deze plannen en aantallen, prijzen gecontroleerd op 19 oktober 2026. Make rekent per moduleactie met credits. Bij 10.000 credits per maand toont de officiële prijsweergave bij maandelijkse facturatie $ 12 per maand voor Core, $ 21 voor Pro en $ 38 voor Teams. Bij jaarlijkse facturatie toont dezelfde selector $ 9, $ 16 en $ 29 per maand-equivalent voor Core, Pro en Teams, waarbij het jaarbedrag vooraf wordt afgerekend. De selector toont dollars; controleer dus valuta en belastingen bij het afrekenen. Let ook op de creditlogica: Core houdt bij jaarbetaling maandelijkse credittoewijzingen, terwijl Pro en Teams een jaarpakket aan credits krijgen. De actuele Make-prijsweergave is gecontroleerd op 19 oktober 2026.

Bij beide platforms blijft de kern jouw verantwoordelijkheid: staging, rechten, foutafhandeling, retentie, idempotentie en de plek waar de mens vrijgeeft. Een visuele flow is geen auditlog zolang je niet vastlegt welke payload is goedgekeurd.

Maatwerk past zodra de factuur een geldbesluit wordt met meerdere mijlpalen, entiteiten, btw-regels, prijscontracten, valuta of uitzonderingen. Bouw dan eerst de release-service en policylaag. De HubSpot-trigger en Exact-adapter zijn daarna verwisselbare onderdelen.

Automatiseer nog niet wanneer klantrelaties niet uniek zijn, de factuurregels niet uit een betrouwbare bron komen of niemand bevoegd is om uitzonderingen te beslissen. De juiste eerste stap is dan datakwaliteit en procesafspraken.

Welke route past bij jouw deal-naar-factuurflow?

Zijn klantrelaties, factuurregels en btw-behandeling stabiel en voorspelbaar?

De keuzehulp is dezelfde beslissing in compacte vorm. Stabiele regels met lage foutkosten kunnen met een connector. Meer variatie past bij een beheerd platform. Zodra de financiële gevolgen groot zijn of uitzonderingen de hoofdroute vormen, verdient een eigen release-service zich terug in controle.

Uitgewerkt voorbeeld: Delta Installaties BV

Dit is een synthetisch rekenvoorbeeld. De IDs zijn voorbeeldwaarden, de bedragen laten zien hoe je de controle uitvoert.

Delta Installaties BV heeft in HubSpot deal 1042 in de pijplijn B2B op de interne stage-ID closedwon gezet. De zichtbare dealnaam is Delta renovatie hal 3. De contractafspraak is: 100 procent factureren na ondertekende oplevering. De deal wordt dus pas factureerbaar wanneer factuurmoment=acceptatie en acceptatie_document=ACC-2026-1016 gevuld zijn.

De gekoppelde regels uit de goedgekeurde quote zijn:

RegelHoeveelheidEenheidsprijs excl. btwBedrag excl. btwBtw
Installatie en inbedrijfstelling2 dagen€ 1.250,00€ 2.500,0021%
Bedieningsmodule IM-2001€ 3.800,00€ 3.800,0021%
Onderhoudscontract 12 maanden1€ 1.200,00€ 1.200,0021%
Totaal€ 7.500,00€ 1.575,00

Het factuurtotaal wordt € 9.075,00. HubSpot toont ook € 7.500,00 in amount, dus de somcontrole slaagt. Dat is nog geen vrijgave.

Stap 1, bron en relatie. De snapshot bewaart deal 1042, de quoteversie, de drie regels, bedrijf-ID 18452, contact-ID 9033, acceptatiedocument ACC-2026-1016 en snapshot-tijd 2026-10-17T09:14:00+02:00. De relatiekaart koppelt het bedrijf aan Exact-klantcode D1027, het contact aan de financiële contactpersoon en de administratie aan divisie 123456.

Stap 2, match. De juridische naam en het btw-identificatienummer uit de relatiekaart vinden precies één Exact-account. Het factuuradres klopt. De betaalconditie is 30 dagen. Er is geen kredietblokkade en de valuta is EUR. Een tweede Delta-vestiging bestaat wel, maar heeft een andere btw-identificatie en wordt daardoor niet als kandidaat gekozen.

Stap 3, btw en payload. Alle drie de regels komen uit dezelfde Nederlandse prestatie en hebben in dit voorbeeld btw-code 21%. Het systeem rekent € 2.500,00 + € 3.800,00 + € 1.200,00 = € 7.500,00 netto en € 1.575,00 btw. De stagingrecord krijgt sleutel hs:deal:1042:acceptatie:v1 en een payloadhash.

Stap 4, Exact-write. De uitvoerder maakt in de divisie een open SalesInvoice aan met het verkoopjournaal, OrderedBy, EUR, betaalconditie 30 dagen, de externe referentie en drie SalesInvoiceLines. Exact geeft voorbeeld-ID EO-INV-2026-0815 terug. De integratie slaat die waarde op en leest de factuur direct opnieuw uit. De status is 20, open.

Stap 5, read-back en vrijgave. De reviewer ziet de acceptatiebron, de klant, de drie regels, € 7.500,00 netto, € 1.575,00 btw, € 9.075,00 totaal en 30 dagen betaaltermijn. De read-back klopt met de goedgekeurde payload. Finance geeft vrij. Pas daarna wordt de factuur volgens de Exact-inrichting verwerkt of verzonden. HubSpot krijgt exact_invoice_id=EO-INV-2026-0815 en invoice_status=processed zodra die verwerking aantoonbaar klaar is.

Stap 6, betaling. Na verzending is payment_status=open, ook al staat de deal op Gewonnen en de factuur op processed. Op 16 november leest de synchronisatie de vordering opnieuw. Als IsFullyPaid=true en LastPaymentDate=2026-11-16 terugkomen, schrijft de flow payment_status=paid terug naar HubSpot. Een gedeeltelijke betaling blijft partially_paid met het openstaande bedrag.

Stel dat de contactmatch in stap 2 twee Exact-contacten vindt. Dan gaat deze deal niet alsnog door omdat de bedragen kloppen. De queue krijgt contact_ambiguous, beide kandidaten en de relatiegegevens. De oplossing is één keer de relatiekaart repareren. De factuur blijft ondertussen onaangeraakt.

Vergelijkingstabel: drie manieren om HubSpot en Exact te koppelen

RouteProduct of techniekPrijs en actuele detailsPast bijWaar het breekt
Kant-en-klare connectorPartnerconnector voor HubSpot en Exact OnlineGeen vaste Exact-prijs; partner bepaalt abonnement en implementatie. Controleer de prijs en ondersteuning op 19 oktober 2026Eén administratie, vaste regels, weinig uitzonderingenGeen open conceptstatus, beperkte btw-mapping of geen veilige retry en read-back
Integratieplatformn8n Cloud of Maken8n Starter € 20 per maand bij jaarbetaling voor 2.500 uitvoeringen, Pro € 50 voor 10.000. Make bij 10.000 credits: $ 12/$ 21/$ 38 per maand bij maandelijkse facturatie; $ 9/$ 16/$ 29 per maand-equivalent bij jaarlijkse facturatie, vooraf per jaar betaald. Core houdt bij jaarbetaling maandelijkse credits; Pro en Teams werken met een jaarpakket. Prijzen gecontroleerd op 19 oktober 2026Beheersbare logica, eigen staging en iemand die de flow onderhoudtCredits of uitvoeringen raken op, rechten en auditlaag zijn niet vanzelf goed geregeld
Eigen API-koppelingHubSpot Deals API plus Exact REST APIGeen aparte Exact API-prijs genoemd in de referentie; reken op bouwtijd, hosting, monitoring en onderhoud. HubSpot- en Exact-licenties blijven apartMeerdere divisies, hoge foutkosten, eigen factuurmomenten en complexe btwOnderhoud wordt vergeten of de write krijgt te veel rechten

Vergelijk geen maandbedrag zonder de financiële gevolgen mee te nemen. Een connector van enkele tientjes die geen dubbele factuur voorkomt is duurder dan een eigen staginglaag die een menselijke correctie afdwingt. Omgekeerd is maatwerk overkill als één administratie, één factuurregelpatroon en een kleine queue het hele proces beschrijven.

De echte automatisering zit daarom niet in de POST naar Exact. Ze zit in het bewijs vóór die POST, de vaste grens voor wat groen is en de status die daarna nog eerlijk blijft. Zodra sales, finance en techniek dezelfde payload kunnen aanwijzen, wordt een gewonnen deal een gecontroleerde factuur. Zonder dat bewijs is het alleen een snelle gok met een factuurnummer erachter.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

Van deal naar factuur

Ik denk mee over je factuurpoort, ontwerp de koppeling en realiseer haar end-to-end, met matching, btw-controles, idempotentie en menselijke vrijgave in Exact Online.

Meer informatie

Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

Genoemde integraties

Dit artikel noemt deze tools. Ik koppel ze op maat aan je eigen systemen.

Gerelateerde artikelen

Available-to-promise per kanaal publiceren: maak van voorraad een leverbelofte
Gids
Uitgebreide gids20 min

11 okt 09:00

Available-to-promise per kanaal publiceren: maak van voorraad een leverbelofte

Bepaal welke voorraad je echt kunt beloven. Deze gids brengt bronhouder, reserveringen, quarantaine, verwachte ontvangsten, kanaalpublicatie, versheid en reconciliatie samen in één werkbare ATP-keten.

AI-agent voor verkooporders in de groothandel: veilige ERP-vrijgave
Gids
Uitgebreide gids18 min

10 okt 09:00

AI-agent voor verkooporders in de groothandel: veilige ERP-vrijgave

Laat e-mail-, pdf- en portalorders gecontroleerd naar je ERP gaan: bewijs klant, artikel, contractprijs en beschikbare voorraad vóór menselijke vrijgave.

AI-agent in productie meten: uitzonderingsratio, vrijgavetijd en herstel
Gids
Uitgebreide gids20 min

13 okt 17:00

AI-agent in productie meten: uitzonderingsratio, vrijgavetijd en herstel

Bouw een operationele scorecard voor taakvolume, uitzonderingen, bewijs, menselijke vrijgave, herstel en ERP-read-back. Zo weet je wanneer een productie-agent meer werk krijgt, moet bijsturen of moet stoppen.

AI-agent voor logistieke uitzonderingen: van carrier-event naar claim en vervangzending
Gids
Uitgebreide gids25 min

11 okt 17:00

AI-agent voor logistieke uitzonderingen: van carrier-event naar claim en vervangzending

Een carrier meldt geleverd, je klant meldt schade of vermissing. Leer hoe je events normaliseert, claimbewijs verzamelt en claim, vervangzending, refund of herplanning veilig naar menselijke vrijgave routeert.

AI-agent voor inkooporders in Exact Online: van brondata naar vrijgave
Gids
Uitgebreide gids16 min

4 okt 09:00

AI-agent voor inkooporders in Exact Online: van brondata naar vrijgave

Bouw een veilige AI-agentflow voor inkooporders met Exact Online. Lees voorraad, leveranciersvoorwaarden en contractprijs, stage het voorstel en schrijf pas na menselijke vrijgave, zonder verrassingen in je ERP.

Data-sync met bronversie: voorkom stale writes en geef veilig vrij
Gids
Uitgebreide gids19 min

16 okt 09:00

Data-sync met bronversie: voorkom stale writes en geef veilig vrij

Voorkom dat oude synchronisatiedata nieuwe waarden overschrijft. Bouw bronversies, optimistic concurrency, idempotente retries, read-back en menselijke vrijgave in één herstelbare data-sync.