1.Inleiding
Dit is de handleiding voor de koppeling tussen Shopify en Twinfield.
De optie doorboeken van betalingen is alleen beschikbaar als de bestellingen doorgezet worden naar Twinfield concept boekingen. Deze optie is voor Twinfield facturen niet beschikbaar. Voor deze optie worden extra kosten in rekening gebracht.
- Deze koppeling is een financiële koppeling. Het is geen logistieke koppeling. De koppeling is niet geschikt voor het bijwerken van klanten in Twinfield, het printen van pakbonnen of het synchroniseren van producten/voorraad.
- Deze koppeling vervangt niet het werk van de boekhouder. Deze koppeling bespaart tijd omdat je niet meer hoeft over te tikken. De boekhouder is nog steeds nodig voor advies, kennis en controle.
- Tip: Andere klanten met deze koppeling hebben veel gehad aan de tips in de FAQ voor Shopify en in de FAQ voor Twinfield.
Je installeert deze koppeling vanuit de Shopify Appstore. Als je zoekt op webwinkelfacturen komen onze apps vanzelf tevoorschijn. Je kunt ons als leverancier herkennen aan het blauwe tandwieltje. Klik je op de App dan zie je een omschrijving en de knop Add app. Bij het activeren word je automatisch door de configuratieschermen geleid.
Als je op de knop Add app klikt dan dien je eerst te autoriseren dat de koppeling gegevens uit je webwinkel mag lezen en mogelijk zelfs schrijven. Dit staat in het volgende scherm aangegeven. Ook dien je de maandelijkse bijdrage voor de koppeling goed te keuren. Heb je de maandelijkse bijdrage goedgekeurd dan is de connectie met Shopify gelegd en word je automatisch doorgeleid naar je persoonlijke dashboard.
De installatie is voltooid als beide bolletjes van de verbinding op groen staan, en de instellingen in tabblad Configuratie ingevuld en opgeslagen zijn.
Belangrijk: Is de koppeling eenmaal geinstalleerd, log dan altijd in op het dashboard via https://uwkoppeling.webwinkelfacturen.nl, en niet vanuit de appstore.
Er is een 30-dagen gratis proefperiode.
De koppeling is een realtime koppeling. Als een bestelling een bepaalde status heeft gekregen wordt deze zo snel mogelijk naar je boekhoudsysteem doorgezet.
Wil je nog een koppeling installeren, dan kan dat op dezelfde manier. Zorg er wel voor dat je uit het dashboard van koppeling bent uitgelogd, en start de nieuwe installatie bij voorkeur in een incognito browser.
Indien je de koppeling wilt beeindigen kan dat eenvoudig door de app in je backend te verwijderen uit de appstore.
Stap je over naar een ander boekhoudsysteem, en wil je daarmee opnieuw een koppeling? Dan kun je de nieuwe app vanuit de appstore in je backend installeren. Zorg er wel voor dat je uit het dashboard van de oude koppeling bent uitgelogd, en start de nieuwe installatie bij voorkeur in een incognito browser.
Stap je over naar een ander webwinkelsysteem? Via onze koppelingen-pagina kun je zien of je deze vanuit de desbetreffende appstore installeert, of dmv een installatie-link.
Is de installatie gelukt, maar zie je in het dashboard van de koppeling nog wel de oude licentiesleutel staan als je op het dropdown pijltje naast de sleutel klikt (terwijl die app/sleutel wel is verwijderd)? Stuur ons dan een e-mail met het verzoek de oude sleutel te verwijderen.
2.Hoe de koppeling werkt
Het is ook mogelijk om de betalingen op basis van de bestellingen uit door te zetten naar Twinfield. Dit is alleen beschikbaar als de bestellingen doorgezet worden naar Twinfield conceptboekingen. Voor Twinfield facturen is deze optie niet beschikbaar.
Shopify werkt met webhooks. Wij ontvangen een melding zodra er een nieuwe bestelling in je webwinkel wordt aangemaakt of als een bestelling wijzigt. Als de bestelling doorgezet kan worden - dit is afhankelijk van de status - dan plaatst de koppeling de bestelling in de verwerkersqueue. Afhankelijk van de drukte in de verwerkersqueue wordt de bestelling snel of iets later doorgezet. Over het algemeen lopen de queues snel door.
Naast de webhooks draait er dagelijks een bezemwagen. Dit betekent de koppeling dagelijks controleert of alle webhooks correct zijn binnengekomen. Zijn er webhooks gemist dan worden die bestellingen alsnog opgehaald en doorgezet.
Lees meer Hoe de koppeling werkt .... Lees minder Hoe de koppeling werkt ....
Aan het begin van de verwerking van een bestelling voeren we een aantal controles op de Shopify bestelling uit:
- Er wordt gecontroleerd of het totaal van de Shopify bestelling gelijk is aan de som van de bedragen in de bestelregels plus het bedrag aan verzendkosten.
- Is de bestelling een ICP bestelling dan wordt het BTW nummer gecontroleerd.
- Er wordt gecontroleerd of voor de BTW in iedere regel een overeenkomstige BTW code in Twinfield bestaat.
- Er wordt gecontroleerd of de bestelling niet eerder is doorgezet.
Een betaling wordt alleen toegevoegd als de status van de betaling succes is. Een betaling wordt alleen doorgezet als eerst de bijbehorende bestelling is doorgezet.
Het doorzetten van een Shopify bestelling naar Twinfield gebeurt in twee stappen:
- Er wordt gekeken of de klant al in Twinfield aanwezig is. Zo nee dan wordt de klant aangemaakt. Matching gebeurt op emailadres.
- De Twinfield transactie (conceptboeking, factuur) wordt aangemaakt en doorgezet.
Bij het doorzetten van een betaling zoekt de koppeling eerst de concept-boeking in Twinfield op die bij de betaling hoort. De koppeling gebruikt voor het zoeken van de concept-boeking de volgende criteria:
- Er wordt een match gedaan op het bedrag
- Als er een klant-emailadres is wordt een match gedaan op dit emailadres
- Er wordt een match gedaan op het bestelnummer en de omschrijving in de betaling
Na het doorzetten van de betaling zal de koppeling de betaling en de concept-boeking tegen elkaar afletteren.
Nadat de bestelling is doorgestuurd en een succesmelding van Twinfield is ontvangen wordt de bestelling als afgehandeld aangemerkt. De Shopify bestelling verschijnt bij tab Rapportage op het dashboard.
Geeft Twinfield een foutmelding terug bij het verwerken van de bestelling dan verschijnt de bestelling bij tab Fouten op het dashboard. Via de gele knop Meer info is meer informatie over het probleem te vinden. Via de rode knop Meld probleem kan de bestelling met alle noodzakelijke gegevens heel gemakkelijk bij ons aangemeld worden nadat je zelf het probleem hebt proberen op te lossen. Is het probleem opgelost dan kan in sommige situaties de bestellingen opnieuw worden doorgezet met de blauwe Verwerk knop.
Bij het doorsturen van de betaling wordt ook de betaling geregistreerd zodat deze niet nog eens kan worden doorgezet. Ook betalingen kunnen nagekeken worden via het dashboard.
Gegevens
Informatie over de gegevens die doorgezet worden is te vinden in de sectie Day-to-day: Naar Twinfield verderop in de handleiding.
3.Voorbereiding Twinfield
Om te koppelen met Twinfield is een eigen gebruikersnaam / wachtwoord om in te loggen verplicht. De koppeling dient met deze gebruikersnaam / wachtwoord gelegd te worden.
Bij het gebruik van een accountancy gebruikersnaam / wachtwoord krijgt de koppeling toegang tot alle administraties die onder de accountant vallen. Dat is zeer onwenselijk. Het gevolg kan zijn dat de koppeling in de verkeerde administratie boekt. Daarnaast heeft de koppeling toegang tot alle administraties die onder de accountancy licentie vallen. Dit is onwenselijk vanuit een security oogpunt en is in tegenspraak met de AVG regelgeving.
Voor meer informatie: FAQ: Kan ik als boekhouder via mijn accountancy licentie een administratie koppelen?
4.Installatie
Het activeren van de koppeling gaat nu verder met:
1. Het accepteren van de voorwaarden.
2. Het leggen van de connectie met Twinfield. Hiermee autoriseer je de koppeling transacties naar jullie Twinfield administratie te schrijven en informatie te lezen.
3. De configuratie zelf.
Lees meer Installatie ...Lees minder Installatie ...
Voordat de koppeling gebruikt kan worden dienen eerst de voorwaarden geaccepteerd te worden. De voorwaarden zijn gebaseerd op de algemene ICT Voorwaarden (brancheorganisatie) en de algemene AVG richtlijnen.
Connectie Twinfield
De connectie met Twinfield loopt via OAuth. Zorg dat je bent uitgelogd bij Twinfield voordat je de connectie start. Je klikt nu op de rode Connect knop. Er verschijnt automatisch een inlogscherm voor je Twinfield account. Als je inlogt krijg je een scherm waarin gevraagd wordt of je de connectie toestaat. Als je dit bevestigt dan wordt de connectie met Twinfield gelegd.
Wil je op een later moment de connectie opnieuw wil leggen - bijvoorbeeld omdat je een andere wilt gebruiken - dan kan dat door op de Connect knop te klikken.
Je kunt aangeven bij welke statussen bestellingen moeten worden doorgezet naar Twinfield. Je kunt meerdere statussen aanvinken. De koppeling zal bestellingen nooit dubbel doorzetten. De koppeling is daartegen beveiligd.
Het is belangrijk dat je na het leggen van de connectie met Twinfield eerst de administratiecode van je Twinfield administratie instelt. Je kunt ook de debiteuren dimensie wijzigen. Standaard in Twinfield is een debiteuren dimensie 1300.
Bij het inrichten van de BTW tarieven en de grootboekrekeningen wordt een link gelegd tussen de BTW tarieven in de webwinkel en de BTW codes en omzetrekeningen in Twinfield. Aanpassen kan altijd door op de blauwe 'Wijzigen' knop te klikken, en via de drop-down boxjes een keuze te maken.
Bij de BTW tarieven toont de koppeling een standaard-lijst met BTW tarieven en alle EU landen. Default staan de Nederlands of Belgische BTW tarieven ingevuld. De BTW percentages kunnen aangepast worden. Bijvoorbeeld in het geval van OSS kan het Duitse BTW hoog percentage aangepast worden naar 19%.
Het is mogelijk met de BTW tarieven in de webwinkel te werken. Dit kun je aanpassen bij tab Configuratie van het dashboard, bij de optie Alle Instellingen > Contract.
De BTW codes worden getoond afhankelijk van de contract instellingen.
De BTW codes worden getoond afhankelijk van de contract instellingen.
Zijn de BTW instellingen gedaan en opgeslagen dan zul je altijd de ingestelde BTW tarieven zien. Wil je opnieuw beginnen dan kun je de grijze knop 'BTW instellingen verwijderen' gebruiken. Dan worden je huidige instellingen verwijderd en kun je opnieuw beginnen.
Bij het doorzetten van bestellingen zonder het doorboeken van betalingen kan voor iedere betaalmethode in een link worden gelegd met een vaste debiteur. In de lijst debiteuren staan de Twinfield debiteuren met in de naam de specifieke substring WWF_. Zie deze faq voor meer informatie, als de lijst leeg is.
Worden de betalingen wel doorgezet dan wordt er een link gelegd tussen betaalmethoden in webwinkel en tussenrekeningen uit Twinfield. De mogelijkheid om betaalmethoden toe te wijzen aan vaste debiteuren vervalt dan. Het doorzetten van betalingen is alleen mogelijk als de bestellingen doorgezet worden naar Twinfield conceptboekingen. Het is niet mogelijk als de bestellingen doorgezet worden naar Twinfield facturen.
Let op: Helaas staat Shopify ons niet toe om de betaalmethoden uit te lezen uit die je in je webwinkel gebruikt. Daarom werken wij met een vaste lijst betaalmethoden. Het kan zijn dat er betaalmethoden tussen staan die jullie niet gebruiken en dat er betaalmethoden niet in staan die jullie wel gebruiken. Hier is een workaround voor, beschreven in deze faq.
5.Day-to-day: Vanuit Shopify
De koppeling doet een extra controle voor bestellingen in de Shopify webwinkel die worden ingeladen vanuit Bol.com of Amazon. Dit inladen gebeurt via een externe app die de Shopify merchant kan inschakelen. Voor deze geimporteerde bestellingen doet de koppeling een extra controle of de BTW aanwezig is in de bestelling. Zo niet, dan zal de bestelling niet doorgezet worden. Zie onze FAQ voor meer informatie.
Omdat de Shopify koppeling met webhooks werkt dien je na installatie van de koppeling geen bestellingen met terugwerkende kracht in Shopify meer te importeren. Doe je dit wel, en laad je bijvoorbeeld 500 bestellingen tegelijk in of wijzig je 500 bestellingen van status dan ontvangt ons platform al deze wijzigingen en gaat ze verwerken. Dit is een onevenredige belasting van ons netwerk.
Wil je dat de koppeling naast de bestellingen ook de refunds doorzet, dan kun je de status refund of partially_refunded aanvinken in het tabblad Configuratie bij Status doorzetten verkopen. Refunds moeten in Shopify correct zijn aangemaakt, dwz dat de refund gedaan moet worden op de regels. Een refund verwerken met alleen een bedrag kan de koppeling helaas niet. Zie hier voor meer informatie: FAQ.
Let op: Voor refunds gaat de koppeling maximaal 30 dagen terug in de tijd. Ook zet de koppeling een refund alleen door als de koppeling eerder de bestelling waar de refund betrekking op heeft, heeft doorgezet.
De koppeling zal veel velden uit een Shopify bestelling niet uitlezen of doorzetten naar Twinfield. Met name de note_attribute velden en de custom-velden worden niet meegenomen. De reden is dat verschillende webwinkels deze velden verschillend gebruiken. Omdat onze koppelingen voor alle webwinkeliers moeten werken kunnen we dit niet voor individuele merchants inregelen.
Let speciaal op velden die via een plugin binnen komen. Er is een behoorlijke kans dat de koppeling deze velden niet meeneemt.
Hieronder een uitwerking op veld-niveau bij het ophalen van bestellingen. Aan de orde komen de algemene waarden in de bestelling, de bestelregels, de verzendkosten en de debiteurgegevens. | ||
Naam veld | Waarden uit Shopify bestelling | |
Bestel-identifier | [id] | |
Bestelnummer | Wordt als volgt bepaald:
|
|
Factuurnummer | Wordt als volgt bepaald:
|
|
Boekdatum | [created_at] | |
Besteldatum | [processed_at] | |
Status bestelling | [financial_status] | |
Betaalstatus | als de status van de bestelling paid is dan paid, anders geen betaalstatus | |
Betaalreferentie | [order_number] | |
Affiliatenummer | Wordt als volgt bepaald
|
|
Valuta | [currency] indien aanwezig | |
Betaalmethode | veld [gateway] in [transactions] | |
Besteltotaal incl BTW en kortingen | [total_price] | |
Totaal BTW bestelling incl kortingen | Waarde in [total_tax], of, als die waarde 0 is, de waarde uit [current_total_tax]. Bij het gebruik van de [current_total_tax] zit een extra controle. De BTW regels in de bestelling moeten optellen tot de waarde in [current_total_tax]. | |
Besteltotaal excl BTW en kortingen | Verschil bovenstaande twee regels | |
Aanduiding ICP | De koppeling bepaalt als volgt of het om een ICP bestelling gaat:
|
|
Aanduiding Internationaal | De koppeling bepaalt als volgt of het om een internationale bestelling gaat:
|
|
Kortingen |
Kortingen worden als volgt bepaald:
|
Voor het uitlezen van de bestelregels pakt de koppeling het veld [line_items]. Er kunnen meerdere bestelregels in de bestelling staan en de koppeling leest deze regels een-voor-een uit. | ||
Naam veld | Waarden uit Shopify bestelregel | |
Productid | [product_id] | |
Aantal | [quantity] | |
SKU | [sku] | |
Omschrijving | [name] | |
BTW percentage |
Het BTW percentage wordt als volgt bepaald:
|
|
Bedragen excl BTW |
De bedragen excl BTW worden als volgt bepaald:
|
|
Bedragen incl BTW |
De bedragen incl BTW worden als volgt bepaald:
|
|
Korting in bestelregel |
De korting in de bestelregel wordt als volgt bepaald:
|
|
BTW code en rekeningen Twinfield | Deze worden bepaald aan de hand van de instellingen, het BTW percentage en het leveringsland. Hier wordt ook in meegenomen of het een ICP of internationale bestelling is. |
Voor het uitlezen van de verzendkosten pakt de koppeling het veld [shipping_lines]. Er kunnen meerdere verzendregels zijn. Wat betreft de naam en het BTW percentage wordt alleen naar de eerste regel gekeken, voor de bedragen worden de bedragen in alle verzendregels opgeteld. In verreweg de meeste gevallen zal er sprake zijn van maximaal 1 regel voor de verzendkosten. | ||
Naam veld | Waarden uit Shopify bestelregel | |
Omschrijving | [title] uit de eerste regel van de verzendkosten | |
BTW percentage | Som van de waarden in veld [rate] uit de [tax_lines] in de eerste regel van de verzendkosten. | |
Verzendkosten excl BTW |
De verzendkosten excl BTW worden als volgt bepaald:
|
|
Verzendkosten incl BTW |
De verzendkosten incl BTW worden als volgt bepaald:
|
|
BTW code en rekeningen Twinfield | Deze worden bepaald aan de hand van de instellingen, het BTW percentage en het leveringsland. Hier wordt ook in meegenomen of het een ICP of internationale bestelling is. |
Naam veld | Waarden uit Shopify klant |
Indien aanwezig [email] anders [contact_email] | |
Factuuradres |
Indien aanwezig op basis van [billing_address] in de Shopify bestelling
Als er geen factuur- en geen verzendadres is dan wordt gekeken naar de informatie in [customer] en [customer][default_address]. |
Verzendadres |
Indien aanwezig op basis van [shipping_address] in de Shopify bestelling
|
BTW nummer |
Het BTW nummer wordt als volgt bepaald:
|
6.Day-to-day: Naar Twinfield
De synchronisatie van gegevens tussen Shopify en Twinfield is als volgt.
Bij het doorzetten van klantinformatie wordt eerst gecontroleerd of de klant al eens eerder is doorgezet. Zo ja, dan wordt deze Twinfield debiteur gebruikt als debiteur van de Twinfield transactie. Is de klant nog niet bekend, dan wordt deze toegevoegd aan Twinfield. Matching gebeurt op basis van e-mailadres. Let op: De koppeling maakt alleen debiteuren aan. De koppeling wijzigt geen debiteuren.
Betalingen uit Shopify worden in geimporteerd als memoboekingen. Een memoboeking bestaat uit twee regels, één regel voor de betaling en één voor de bijbehorende verkoopboeking. Als de verkoopboeking voor de betaling niet gevonden kan worden dan kan de memoboeking niet aangemaakt worden.
Let op: betalingen kunnen we alleen doorzetten als er wordt doorgezet naar concept verkoopboekingen, niet bij facturen. Daarnaast moet het factuurnummer wat in Twinfield in de openstaande verkoopboeking staat, in de payment-transactie van de verkoop aanwezig zijn.
Afletteren
Na het doorzetten van de betaling zal de koppeling een extra actie doen om de betaling en verkoop af te letteren.

Naam | Voorbeeld | Opmerking | |
@attributes | |||
destiny | temporary | ||
raisewarning | true | ||
header | |||
code | VRK | ||
office | 300333 | ||
invoicenumber | 5869 | Bestelnummer, op verzoek factuurnummer. | |
date | 20230203 | Besteldatum | |
Currency | EUR | Standaard, op aanvraag variabel. | |
Totalline | |||
type | total | ||
id | 4 | debiteur-id | |
dim1 | 1600 | Debiteurendimensie | |
dim2 | 4539 | Debiteurendimensie | |
debitcredit | debit | ||
value | 82.20 | Totaalprijs Incl. BTW | |
basevalue | 82.20 | Totaalprijs Incl. BTW | |
description | 4121 | Omschrijving: bestelnummer, dan wel factuurnummer - dit is niet aan te passen. | |
Detaillines | |||
@attributes | |||
type | detail | ||
id | 5 | ||
dim1 | 2000 | Debiteurendimensie | |
debitcredit | credit | ||
basevalue | 33.47 | Regelprijs Excl. BTW | |
value | 33.47 | Regelprijs Excl. BTW | |
description | 24 st Prof. tekenpapier. | Productomschrijving, lengte max 35. | |
vatvalue | 7.03 | BTW bedrag | |
vatcode | VH | BTW code | |
Kostenplaats | 1 default kostenplaats per koppeling. | ||
ICP | Indien het een ICP boeking is: | ||
Performancetype | goods | ||
Performancecountry | [isocountry] | Land van levering | |
Performancevatnumber | [vatnr] | BTW nummer | |
In de BTW bedragen wordt het eventuele afrondingsverschil verwerkt als het afrondingsverschil hoogstens 5 cent is. |

Naam | Voorbeeld | Opmerking |
header | ||
office | KJ903932 | |
invoicetype | FACTUUR | Dit is niet aan te passen. |
invoicedate | 20230308 | Besteldatum |
headertext | Bestelling 3234002342 |
Als het factuurnummer gelijk is aan het bestelnummer: Bestelling bestelnummer |
customer | 9023 | Klantcode |
currency | EUR | Standaard, op aanvraag variabel. |
status | concept | |
Betaalmethode | Bank | |
Detailline | ||
@attributes | ||
id | 4 | |
article | 0 | |
description | 70 x 70 schildersdoek | Omschrijving |
quantity | 9 | aantal |
units | 1 | |
unitspriceexcl | 21.50 | eenheidsprijs excl. BTW |
dim1 | 3456 | Grootboekrekening |
vatcode | VH | BTW code |
Naam | Voorbeeld | Opmerking |
name | [name] | |
website | ||
Cocnumber | [kvk] | |
Btwnumber | [Btwnr] | |
Adres | ||
contact | [voornaam][achternaam] | |
Land | [isocountry] | |
Stad | [city] | |
Postcode | [zipcode] | |
Telefoonnummer | [telnr] | |
[email] | niet langer dan 200 karakters. |
Naam | Voorbeeld | Opmerking |
Betaalregel | De informatie van de betaling. | |
Type | debit | |
Verkoopnummer | [ordernumber] | |
ID | Combinatie van [payment_id] en [transactie_id] | |
Bedrag | [betalingsBedrag] | |
Kruispost | Zoals ingesteld bij tab configuratie van het dashboard. | |
Verkoopregel | De informatie uit de verkoopboeking. | |
Type | credit | |
Verkoopnummer | [orderNumber] | |
Bedrag | [betaalBedrag] | |
Rekening | Debiteurenrekening | Meestal 1300 - aanpasbaar in het dashboard. |
Klantcode | [Debiteurcode] |
7.Support
Lees meer Support .... Lees minder Support ....
