Kennisbank
Verplichte velden die de bron niet heeft: waarom je ERP een order weigert
Een webshoporder heeft een e-mailadres, een adres en regels met een SKU. Het ERP eist daarnaast een debiteurnummer, een eenheid per regel, een administratie en soms een dagboek of boekingsgroep; zonder die waarden weigert het de order, en de koppeling moet ze per veld opzoeken, afleiden of vast invullen.
Bijgewerkt op
Wat het ERP eist en de webshop niet heeft
Een webshop is gebouwd om een bestelling op te nemen. Een ERP is gebouwd om die bestelling te boeken, te leveren en te factureren. Daarvoor heeft het gegevens nodig die in een webshop niet bestaan: bij welke debiteur hoort de order, in welke administratie, in welke eenheid wordt geleverd, op welk dagboek en welke omzetrekening wordt hij geboekt. Een veld dat het ERP verplicht stelt en dat de koppeling leeg laat, laat de order weigeren.
Dit eisen drie veelgebruikte systemen, nagelezen in de documentatie van de leverancier op 3 oktober 2026:
| Systeem | Verplicht veld | Wat het is | In de webshop |
|---|---|---|---|
| Exact Online, verkooporder | OrderedBy |
GUID van de debiteur | nee, alleen e-mail en naam |
| Exact Online, orderregel | Item |
GUID van het artikel | nee, alleen de SKU |
| Exact Online, verkoopfactuur | Journal |
code van het verkoopdagboek | nee |
| Exact Online, factuurregel | GLAccount |
omzetrekening, afgeleid uit het artikel of de artikelgroep | nee |
AFAS, FbSales |
DbId |
nummer van de verkooprelatie | nee |
AFAS, FbSalesLines |
VaIt, ItCd, BiUn, QuUn |
type regel, itemcode, eenheid, aantal | alleen SKU en aantal |
AFAS, FbItemArticle |
Grp, BiUn |
artikelgroep, basiseenheid | nee |
| Business Central, klant | boekingsgroepen | bepalen naar welke rekeningen de order boekt | nee, en ook niet in de standaard-API |
Exact Online zet de verplichte velden per endpoint in een kolom Mandatory in de veldbeschrijving van de REST API. AFAS markeert ze in de OpenAPI-specificatie van elke UpdateConnector. Bij GLAccount schrijft Exact zelf dat het veld verplicht is en wordt afgeleid uit de omzetrekening van het artikel of de artikelgroep: heeft het artikel die niet, dan heeft de koppeling hem ook niet.
Business Central is het lastigste geval, omdat het veld niet eens in de API staat. De standaard-API v2.0 heeft bij een klant velden voor adres, valuta, betalingscondities en btw, maar geen boekingsgroep. Volgens de documentatie van Microsoft over boekingsgroepen bepalen de bedrijfsboekingsgroep van de klant en de productboekingsgroep van het artikel samen naar welke rekeningen een verkoopregel boekt. Een klant die via de API wordt aangemaakt zonder die groepen, loopt vast zodra de order geboekt wordt. De koppeling zorgt dat de klant ze toch krijgt: via een klantsjabloon dat in Business Central is ingericht, of via een eigen API-pagina die de velden wel heeft.
Vier manieren om een veld te vullen
Voor elk verplicht veld zonder bron legt de koppeling vast waar de waarde vandaan komt. Er zijn vier mogelijkheden.
| Herkomst | Voorbeeld | Risico |
|---|---|---|
| Opzoeken in het doelsysteem | debiteur op e-mailadres of btw-nummer; artikel-GUID op SKU | geen of twee treffers |
| Afleiden uit wat er wel is | orderdatum uit het tijdstip, eenheid uit het artikel, valuta uit de order | een regel die niet voor elk geval klopt |
| Vaste waarde per koppeling | administratie, magazijn, verkoopdagboek, type regel | hetzelfde voor elke order, ook als dat niet moet |
| Controlelijst als niets past | een artikel zonder eenheid, een land zonder btw-code | handwerk, maar zichtbaar |
Opzoeken en afleiden zijn het meeste werk en het betrouwbaarst. Een debiteur opzoeken vraagt een vaste volgorde: eerst op btw-nummer of KvK-nummer, dan op e-mailadres, en pas daarna een nieuwe debiteur aanmaken. AFAS heeft daar zelf een veld voor: MatchOga op de organisatie bepaalt of AFAS vergelijkt op nummer, KvK-nummer, fiscaal nummer, naam of adres, of altijd een nieuwe aanmaakt. Hoe dubbele debiteuren ontstaan als die keuze niet klopt, staat in dubbele klanten en debiteuren.
Een vaste waarde is verleidelijk omdat hij altijd werkt. Er zijn standaardkoppelingen die een verplicht medewerkernummer voor elke order op 999999 zetten. De order komt dan binnen, maar in rapportages per verkoper staan alle webshoporders bij een medewerker die niet bestaat. Een vaste waarde is goed voor velden die echt voor elke order gelijk zijn, zoals de administratie. Voor alles wat per order kan verschillen, is hij een manier om een fout te verbergen.
Rekenvoorbeeld: één webshoporder naar AFAS
Order 10482 van Bakker Installatie B.V. komt uit Shopify: één regel van 12 stuks artikel KB-2210 en verzendkosten. Dit is wat de UpdateConnector FbSales van AFAS ervan moet krijgen:
{
"FbSales": { "Element": {
"Fields": { "DbId": "10432", "OrDa": "2026-10-01", "Unit": 1, "War": "01", "RfCs": "#10482" },
"Objects": [ { "FbSalesLines": { "Element": [
{ "Fields": { "VaIt": "2", "ItCd": "KB-2210", "BiUn": "stk", "QuUn": 12, "Upri": 17.08 } },
{ "Fields": { "VaIt": "6", "ItCd": "VZK", "BiUn": "*****", "QuUn": 1, "Upri": 6.95 } }
] } } ]
} }
}
De verzendregel volgt het voorbeeld dat AFAS zelf in de specificatie geeft: type 6 (kosten) met eenheid *****. Tel de waarden en hun herkomst:
- Rechtstreeks uit de webshop, 5:
RfCs,ItCdenQuUnvan de artikelregel, en de twee prijzen. - Afgeleid, 1:
OrDa, het tijdstip omgerekend naar een Nederlandse datum. Zonder omrekening wordt het 30 september; zie datums en tijdzones. - Opgezocht, 2:
DbIdop e-mailadres of btw-nummer,BiUnuit het artikel in AFAS. - Vaste waarde, 7:
Unit(administratie 1),War(magazijn 01), twee keerVaIt, enItCd,BiUnenQuUnvan de verzendregel.
Van de 15 waarden komen er 5 uit de webshop. De andere 10 zijn bij het inrichten vastgelegd. Die verhouding is gewoon; het is ook waarom een koppeling die alleen velden van A naar B kopieert, bij de eerste order vastloopt.
BiUn laat zien waarom opzoeken beter is dan een vaste waarde. Zet de koppeling overal stk neer, dan gaat het goed tot het eerste artikel dat per meter of per doos wordt verkocht. Wat er dan misgaat, staat in eenheden en verpakkingen.
Wanneer een nieuw verplicht veld opduikt
Welke velden verplicht zijn, staat niet voor altijd vast. Drie dingen veranderen het, en geen van drie is in de webshop te zien.
- Een nieuw artikel zonder volledige inrichting. Een artikel dat in de webshop al te koop is maar in het ERP nog niet bestaat, of in Exact Online nog geen omzetrekening heeft bij het artikel of de artikelgroep, laat elke order met dat artikel weigeren.
- Een wijziging in de inrichting. In Business Central komt de boekingsgroep uit een klantsjabloon. Wie het sjabloon aanpast of een tweede toevoegt, verandert wat een nieuwe klant meekrijgt.
- Een nieuwe situatie in de webshop. De eerste order uit België met een btw-nummer heeft een andere btw-code nodig dan een Nederlandse consument. Bestaat die combinatie nog niet in de tabel, dan heeft de koppeling geen waarde.
De koppeling vangt dit op met een wachtrij en een controlelijst. Een geweigerde order blijft staan met de foutmelding van het ERP erbij. Na het aanvullen, bijvoorbeeld de eenheid bij het nieuwe artikel, wordt hij opnieuw aangeboden. Wat er verder gebeurt als een order niet door kan, staat in wat gebeurt er als een koppeling uitvalt.
Wat betekent dit voor je koppeling?
Voor elk verplicht veld in je ERP leggen we vast waar de waarde vandaan komt: opzoeken, afleiden, vast of controlelijst. Vaste waarden gebruiken we alleen voor velden die voor elke order gelijk zijn. Een order die het ERP weigert, staat in de wachtrij en op de controlelijst met de reden erbij, en gaat opnieuw zodra de waarde er is. In de dry run lopen bestaande orders door de koppeling zonder iets te boeken, zodat ontbrekende waarden vooraf zichtbaar zijn.
Dit is het deel van veldmapping dat het meeste uitzoekwerk kost. De achtergrond staat in wat is veldmapping, het overzicht van alle stromen op koppelingen tussen je webshop en de systemen erachter. Per ERP: AFAS, Exact Online en Business Central. Vertel welk ERP je gebruikt, dan hoor je welke velden het verplicht stelt en waar ze vandaan komen.
Veelgestelde vragen
Waarom weigert mijn ERP een order die in de webshop compleet was?
Omdat het ERP velden verplicht stelt die een webshop niet kent, zoals een debiteurnummer, een eenheid per regel of een dagboek. De webshop heeft niets fout gedaan; de koppeling moet die waarden aanvullen. Elk verplicht veld krijgt bij het inrichten een vaste herkomst.
Kun je een ontbrekend veld niet gewoon met een standaardwaarde vullen?
Soms wel: de administratie of het magazijn is voor elke webshoporder hetzelfde. Bij velden die per order verschillen, zoals de debiteur of de eenheid, maakt een standaardwaarde de fout onzichtbaar. De order komt dan wel binnen, maar met een waarde die niet klopt.
Hoe weet je welke velden een systeem verplicht stelt?
Uit de documentatie van de API en uit de inrichting van de administratie. Exact Online zet per endpoint een kolom Mandatory in de veldbeschrijving, AFAS markeert verplichte velden in de OpenAPI-specificatie van elke UpdateConnector. Velden die via een sjabloon of instelling verplicht worden, zie je pas in de inrichting zelf, en in de dry run.
Wat gebeurt er met een order die geweigerd wordt?
Hij blijft in de wachtrij staan met de foutmelding erbij en komt op de controlelijst. Er gaat niets verloren. Na het aanvullen van de ontbrekende waarde, bijvoorbeeld een nieuw artikel dat nog geen eenheid had, wordt de order opnieuw aangeboden.
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