Deze API maakt het mogelijk om leveranciers, orders, contractkoppelingen en facturen vanuit externe systemen naar ISPnext te versturen via specifieke connector-endpoints. Authenticatie is verplicht met een accessToken dat 60 minuten geldig is. De API accepteert volledige records in JSON-arrayformaat, waarbij unieke externe ID's en correcte datumformaten essentieel zijn. Veelvoorkomende fouten zijn ontbrekende velden, onjuist datumformaat en niet-numerieke contractnummers.
Wanneer gebruik je het?
- het aanmaken of bijwerken van leveranciers;
- het versturen van orders inclusief orderregels;
- het koppelen van orders aan contracten;
- het registreren van facturen en factuurregels.
- ERP stuurt automatisch nieuwe leveranciers naar ISPnext;
- Inkooporders worden realtime overgezet naar ISPnext;
- Contractkoppelingen worden automatisch toegepast bij ontvangst van facturen.
Hoe werkt het?
1. Authenticatie
In onderstaande voorbeelden worden voorbeelden van URL's gegeven.
Bijvoorbeeld: https://XXX.vendorlink.nl/API/
Het is belangrijk dat de XXX vervangen wordt door de daadwerkelijke
applicatieserver
identiteit.
Wordt er normaal gesproken ingelogd op:
https://app.vendorlink.nl/client, dan is de applicatieserver identiteit
app.
De URL voor API gebruik is dan: https://app.vendorlink.nl/API/.......
Login
POST https://XXX.vendorlink.nl/API/auth/login
JSON
{
"u": "username",
"p": "password"
}Mogelijke responses
1. Authenticatie geslaagd
{
"userId": 9999999,
"displayName": "Demo User",
"accessToken": "string",
"renewalToken": "string",
"hostname": "XXX.vendorlink.nl"
}2. Herauthenticatie op andere server vereist
{
"hostname": "ZZZ.vendorlink.nl"
}Toelichting
- Het veld accessToken moet worden gebruikt in alle volgende API‑aanroepen.
- Het renewalToken kan één keer worden gebruikt om een nieuw accessToken op te vragen.
- Een accessToken verloopt na 60 minuten.
- Een renewalToken verloopt na 14 dagen.
ExtendToken
POST https://XXX.vendorlink.nl/API/auth/extendtoken
Authorization: Bearer <accessToken> Content-Type: application/json; charset=utf8
{
"rToken": "string"
}{
"userId": 9999999,
"displayName": "Demo User",
"accessToken": "string",
"renewalToken": "string"
}1. Supplier Connector
Endpoint
POST https://XXX.vendorlink.nl/api/Connector/Suppliers
Modelvelden
| Veld | Type | Beschrijving |
|---|---|---|
| SupplierName | string (100) | Naam van de leverancier |
| SupplierExternalId | string (50) | Unieke referentie op basis van evt. bronsysteem (kan leeg zijn) |
| SupplierAddressStreet | string (250) | Straatnaam |
| SupplierAddressNum | string | Huisnummer |
| SupplierAddressNumAdd | string | Toevoeging |
| SupplierAddressZipCode | string (15) | Postcode |
| SupplierAddressTown | string (250) | Plaats |
| SupplierAddressCountry | string | Landcode |
| SupplierVatCode | string | BTW‑nummer |
| SupplierKvkCode | string | Handelsregisternummer |
| SupplierDunsNumber | string | DUNS‑nummer |
| SupplierTel | string | Telefoonnummer |
| SupplierFax | string | Faxnummer |
| SupplierOrderEmail | string | Bestel‑e-mailadres |
| SupplierBankAccount | string | IBAN |
| SupplierRatingNorm | string | Normering |
| SupplierWebsiteUrl | string | Website URL |
| SupplierTypeExternalId | string | Externe ID voor type |
| SupplierCommodityExternalId | string | Externe ID voor commodity |
| SupplierProductGroupExternalId | string (15) | Externe productgroep |
| SupplierClassificationExternalId | string | Externe classificatie |
Voorbeeldrequest
[
{
"SupplierName": "Supplier BV",
"SupplierExternalId": "SUP-EXT-123",
"SupplierAddressStreet": "Main Street",
"SupplierAddressNum": "100",
"SupplierAddressNumAdd": "A",
"SupplierAddressZipCode": "1234 AB",
"SupplierAddressTown": "Amsterdam",
"SupplierAddressCountry": "NL",
"SupplierVatCode": "NL123456789B01",
"SupplierKvkCode": "12345678",
"SupplierDunsNumber": "123456789",
"SupplierTel": "+31 20 1234567",
"SupplierOrderEmail": "orders@supplier.com",
"SupplierBankAccount": "NL91ABNA0417164300",
"SupplierRatingNorm": "A",
"SupplierWebsiteUrl": "https://www.supplier.com",
"SupplierTypeExternalId": "TYPE-001",
"SupplierCommodityExternalId": "COMM-001",
"SupplierProductGroupExternalId": "PG-001",
"SupplierClassificationExternalId": "CLASS-001"
}
]2. Order Connector
Endpoint
POST https://XXX.vendorlink.nl/api/Connector/Orders
Modelvelden – Order
| Veld | Type |
|---|---|
| OrderId | string (50) |
| OrderReference | string (50) |
| CreationDate | DateTime |
| SupplierReference | string (50) |
| SupplierName | string (100) |
| UserName | string (250) |
| UserMailAddress | string (255) |
| UserId | string (25) |
| AmountExcl | decimal |
| AmountVat | decimal |
| AmountInc | decimal |
| CompanyName | string (100) |
| ContractId | string (numeric wordt long) |
| OrderType | string (50) |
| OrderLines | array |
Orderregelvelden
| Veld | Type |
|---|---|
| ProductReference | string (50) |
| ProductName | string (200) |
| CostCentreReference | string (20) |
| CostCentreName | string (100) |
| CostTypeReference | string (20) |
| CostTypeName | string (100) |
| Unit | string (50) |
| Quantity | double |
| AmountExclVat | double |
| AmountInclVat | double |
| DeliveryDate | DateTime |
| ProductGroupReference | string (50) |
Voorbeeldrequest
[
{
"OrderId": "ORD-2024001",
"OrderReference": "REF-001",
"CreationDate": "2024-05-01T00:00:00",
"SupplierReference": "SUP-EXT-123",
"SupplierName": "Supplier BV",
"UserName": "John Doe",
"UserMailAddress": "john.doe@example.com",
"UserId": "USER123",
"AmountExcl": 1000.00,
"AmountVat": 210.00,
"AmountInc": 1210.00,
"CompanyName": "Company BV",
"ContractId": "12345",
"OrderType": "Standard",
"OrderLines": [
{
"OrderId": "ORD-2024001",
"OrderLineId": "1",
"ProductReference": "PROD-001",
"ProductName": "Product A",
"SupplierReference": "SUP-EXT-123",
"SupplierName": "Supplier BV",
"ProductGroup": "Group A",
"CostCentreReference": "CC-01",
"CostCentreName": "Cost Centre 1",
"CostTypeReference": "T1",
"CostTypeName": "Type 1",
"Unit": "pieces",
"ProductPrice": 100.00,
"Quantity": 10,
"AmountExclVat": 1000.00,
"AmountInclVat": 1210.00,
"DeliveryDate": "2024-05-15T00:00:00",
"Received": 0,
"ProductGroupReference": "PG-01"
}
]
}
]3. Invoice–Order–Contract Connector
Endpoint
POST https://XXX.vendorlink.nl/api/Connector/InvoiceOrderContracts
Modelvelden
- SupplierExternalId
- InvoiceOrderNumber
- ContractNumber
- ContractNumber2
- ContractNumber3
Voorbeeldrequest
[
{
"SupplierExternalId": "SUP-EXT-123",
"InvoiceOrderNumber": "ORD-001",
"ContractNumber": "CN-001",
"ContractNumber2": "CN-002",
"ContractNumber3": "CN-003"
}
]4. Invoice Connector
Endpoint
POST https://XXX.vendorlink.nl/api/Connector/Invoices
Modelvelden – Factuur
Modelvelden – Factuurregel
Voorbeeldrequest
[
{
"InvoiceNumber": "INV-2024001",
"InvoiceNumberSupplier": "SUP-001",
"InvoiceCreateDate": "2024-05-01T00:00:00",
"InvoiceDate": "2024-05-01T00:00:00",
"InvoicePayDate": "2024-05-15T00:00:00",
"InvoiceWorkFlow": 1,
"InvoiceSupplierExternalId": "SUP-EXT-123",
"InvoiceSupplierName": "Supplier BV",
"InvoiceCompanyReference": "COMP-REF-1",
"InvoiceCompany": "Company BV",
"InvoiceOrderLog": "Order log text",
"InvoiceLines": [
{
"InvoiceLineNumber": "1",
"InvoiceLineDesc": "Product A",
"InvoiceLineSupplierReference": "SUP-EXT-123",
"InvoiceLineSupplierName": "Supplier BV",
"InvoiceDate": "2024-05-01T00:00:00",
"InvoiceOrderNumber": "ORD-001",
"InvoiceCostCentreCode": "CC-01",
"InvoiceCostCentreDesc": "Cost Centre 1",
"InvoiceCostCentreGroupCode": "G1",
"InvoiceCostCentreGroupDesc": "Group 1",
"InvoiceCostTypeCode": "T1",
"InvoiceCostTypeDesc": "Type 1",
"InvoiceCostUnitCode": "U1",
"InvoiceCostUnitDesc": "Unit 1",
"InvoiceCommodityCode": "C1",
"InvoiceCommodityDesc": "Commodity 1",
"InvoiceProjectCode": "P1",
"InvoiceProjectDesc": "Project 1",
"InvoiceProductCode": "PR1",
"InvoiceProductDesc": "Product 1",
"InvoiceContractCode": "CN1",
"InvoiceContractDesc": "Contract 1",
"InvoicePurchaserCode": "PU1",
"InvoicePurchaserDesc": "Purchaser 1",
"InvoiceAmountEx": 100.00,
"InvoiceAmountVat": 21.00,
"InvoiceAmountIn": 121.00,
"InvoiceCurrency": "EUR"
}
]
}
]Praktische tips
- Controleren dat externe IDs uniek en consistent blijven.
- Factuurregels altijd voorzien van correcte kostenplaats‑ en kostenunits.
- Bij orders: zorg dat OrderId overal exact gelijk blijft, ook in de orderregels.
Veelgemaakte fouten
Sommige systemen sturen alleen gewijzigde waarden. De API vereist complete records.
Alle datums moeten ISO‑8601 zijn:
YYYY-MM-DDTHH:MM:SS.ContractId wordt gecast naar long wanneer mogelijk.
Veelgestelde vragen
Alle API’s accepteren arrays als root‑object.
Dit is afhankelijk van de logica per omgeving. Vaak wordt via SupplierExternalId of OrderId bepaald of een item nieuw of een update is.
Foutmeldingen worden teruggegeven als JSON‑response.