Naar inhoud
Documentatie menu

Referentie

REST API

Prijzen

Wat een klant betaalt voor een SKU bij een hoeveelheid, en precies welk regelset die prijs is.

TradeCatalog berekent elke klantprijs op één plek, op dezelfde manier voor de app, de handelssite, MCP en de API. Je hoeft nooit zelf prijzen te berekenen.

Geconfigureerde producten, gemeten tarieven, hoeveelheid drempels, net extra's en expliciete afronding gebruiken ook deze prijsdienst. Geef een volledige lijn aan met POST /products/{id}/quote; een ontbrekende prijs kan betekenen configurationRequired, terwijl een geldige ongeprijsde specificatie Price on request is. Gebruik de teruggekregen lijntotaal. Zie trade catalogue setup voor voorrang, net behandeling en publicatie.

Hoe prijzen worden berekendLink naar deze sectie#

De meest specifieke regel wint, en aanpassingen staan nooit op elkaar:

  1. Overeengekomen prijs. Als de klant een overeengekomen (vaste) prijs voor het product heeft, is dat de prijs.
  2. Anders de lijstprijs met een percentage, het eerste dat van toepassing is. Een percentage is een korting (afgetrokken) of een toevoeging (toegevoegd):
    1. het percentage van de klant voor dat product
    2. het percentage van de klant voor de categorie van het product (de dichtstbijzijnde ouder wint)
    3. het percentage van de klant voor de merk van het product
    4. het eigen percentage van de klant op de gehele lijst
  3. Anders de lijstprijs.

Een categorie korting van 10% en een totale lijst markup van 5% geven 10% korting, niet beide. De eenheid is nooit onder nul, en wordt half omhoog afgerond naar een geheel minderheidseenheid. De lijntotaal is unit × qty.

Lijstprijzen en overeengekomen prijzen zijn versiebeheerd per datum. De API geeft altijd de prijs die nu geldt. Toekomstige prijzen van een geplande prijsverandering gelden vanaf hun datum.

Prijslijsten en catalogus toegangLink naar deze sectie#

Standard is de leveranciersmastercatalogus. Andere prijslijsten kunnen producten bevatten met prijzen en producten die op een offerte wachten. Een ontbrekende prijs op een toegewezen lijst valt niet terug naar Standard.

In de werkruimte, open Prijslijsten en kies een genoemde lijst. Toegewezen klanten kunnen zien heeft twee keuzes:

  • Alle toegestane catalogusproducten is de standaardinstelling. De lijst stelt prijzen vast; toegewezen kopers kunnen ook andere toegestane producten bekijken met 'Prijs op verzoek'.
  • Alleen producten op deze lijst beperkt elke toegewezen koper's catalogus, zoekopdrachten, productkoppelingen, downloads en nieuwe bestellingen tot die lijst's producten. Andere productzichtbaarheid en goedgekeurde lijstbeperkingen blijven van toepassing. Klanten op andere lijsten behouden hun bestaande toegang.

Elke lijst toont het aantal klanten, geprijsde producten, ongeprijsde producten en het totaal aantal producten. Totaal omvatten inactieve producten, dus ze kunnen groter zijn dan wat een koper momenteel ziet. Een nulprijs telt als geprijsd. Een toekomstige prijs telt als ongeprijsd tot aan de startdatum.

Om producten toe te voegen, selecteer ze op Producten, kies Toevoegen aan prijslijst, en kopieer standaardprijzen met een optionele percentage of kies Toevoegen zonder prijzen. Bestaande leden behouden hun prijzen. Producten zonder standaardprijs worden toegevoegd als 'Prijs op verzoek'. Op de pagina van een genaamde lijst, opslaan van een SKU met een lege prijs voegt het toe zonder prijs of verwijdert de huidige prijs. Verwijderen verwijdert het van die lijst terwijl het hoofdproduct en vorige bestellingen behouden blijven. Los eventuele uitstaande prijswijziging voor dat product eerst op.

Deze controle vereist Pro en globale prijsbewerkingsrechten. Bestaande lijsten behouden hun catalogus toegang tot het moment dat een leverancier deze verandert. API-importen in een genaamde lijst bevatten gewone productrijen zonder prijs als ongeprijsde leden; een leeg veld in een prijs-alleen import verandert de toegang niet.

Het prijsobjectLink naar deze sectie#

Elk product heeft de vorm van price. GET /prices retourneert dezelfde velden op het bovenste niveau van data.

json
{
  "unit": 1573,
  "line": 15730,
  "list": 1850,
  "discountBp": 1500,
  "adjustment": "discount",
  "source": "brand",
  "label": "15% off your list",
  "remark": null
}
VeldTypeBeschrijving
unitgeheel getal of nullPrijs voor één eenheid, in mindere eenheden. null als het product geen prijs heeft.
linegeheel getal of nullunit × qty.
listgeheel getal of nullDe huidige lijsprijs.
discountBpgeheel getalDe aangepaste waarde, in basispunten. 0 voor overeengekomen en lijsprijzen.
adjustmentdiscount of markupWelke richting discountBp de lijsprijs verandert. discount wanneer er geen percentage is.
sourcestringWelke regelset de prijs bepaalt: zie hieronder.
labelstringWoorden die kopers naast de prijs zien.
remarkstring of nullDe overeengekomen prijs opmerking wanneer die klant deze mag zien. Anders null. De interne notitie voor medewerkers wordt nooit opgenomen.
sourceBetekenisVoorbeeld label
fixedDe overeengekomen prijs van de klantOvereengekomen prijs
productPercentage op één product10% korting op uw lijst
categoryPercentage op een categorie12,5% korting op uw lijst
brandPercentage op een merk15% boven uw lijst
accountPercentage op de hele lijst10% boven uw lijst
listLijsprijs, geen aanpassing(leeg)
unpricedHet product heeft nog geen prijs(leeg)

Controleer een klantprijsLink naar deze sectie#

GET/api/v1/prices

Wat een klant betaalt voor één SKU in een hoeveelheid, en waarom. Gebruik het om te beantwoorden:

NaamTypeVerplichtBeschrijving
customerstringjaKlant ID of accountcode.
skustringjaDe SKU, hoofdlettergevoelig.
qtygeheel getalnee1 tot 1.000.000. Standaard 1.
bash
curl "https://tradecatalog.app/api/v1/prices?customer=OAK01&sku=HX-8510&qty=10" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
js
const params = new URLSearchParams({
  customer: 'OAK01',
  sku: 'HX-8510',
  qty: '10',
})
const res = await fetch(`https://tradecatalog.app/api/v1/prices?${params}`, {
  headers: { Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}` },
})
const { data: price, currency } = await res.json()
json
{
  "data": {
    "customer": {
      "id": "7d2e4f0a-1b3c-4d5e-8f90-a1b2c3d4e5f6",
      "accountCode": "OAK01",
      "name": "Oakfield Joinery"
    },
    "sku": "HX-8510",
    "name": "Hex bolt M10 x 50 zinc",
    "qty": 10,
    "unit": 1573,
    "line": 15730,
    "list": 1850,
    "discountBp": 1500,
    "source": "brand",
    "label": "15% off your list",
    "remark": null
  },
  "currency": "GBP"
}
StatusCodeWanneer
400validation_errorcustomer of sku ontbrekend, of qty buiten bereik.
404not_foundGeen dergelijke klant, of geen product met die SKU.

Deze eindpunt controleert alleen de prijs. Het controleert niet of de klant het product kan zien. Gebruik hiervoor GET /products/{id}?customer=….

Prijzen voor veel productenLink naar deze sectie#

Gebruik GET /products?customer=OAK01 om de prijs van een gehele pagina producten voor één klant te bepalen. Elke rij's price is die klant's prijs, en klant-specifieke producten voor andere klanten worden uitgelaten. Zie Producten.

Prijzen wijzigenLink naar deze sectie#

  • Lijsprijzen veranderen door prijsveranderingen, zodat klanten op de hoogte komen. Stuur nieuwe prijzen met PUT /products; ze gaan in een concept dat u in de app publiceert.
  • Kostenopslagen, kortingen en overeengekomen prijzen worden per klant in de app ingesteld. Lees ze met GET /customers/{id}.
  • Overeengekomen prijzen voor veel klanten worden ingesteld met PUT /agreed-prices.
  • Een klant's gehele lijst percentage kan worden ingesteld met PUT /customers (discountBp, en optioneel adjustment).

Overeengekomen prijzen instellenLink naar deze sectie#

PUT/api/v1/agreed-pricesschrijf sleutel

Maak of vervang overeengekomen prijzen voor bestaande klanten en producten. Stuur maximaal 2.000 rijen. Prijzen zijn gehele minoreenheden. Laat commit onwaar zijn om te previewen: niets wordt opgeslagen en elke onbekende account of SKU wordt als rijfout teruggestuurd. Zet commit op waar om op te slaan. Slaan sluit de overeengekomen prijs nu af en voegt de nieuwe toe vanaf dit moment, in batches van 100. Alleen voor Pro.

NaamTypeVereistBeschrijving
commitbooleanneetrue opslaan. Standaard false preview alleen.
pricesarrayja1 tot 2.000 prijzen.
accountCodestringjaKlantaccountcode, hoofdletteronafhankelijk.
skustringjaProduct SKU, hoofdletteronafhankelijk.
priceintegerjaOvereengekomen prijs in minoreenheden.
notestringneeMaximaal 200 tekens, zichtbaar voor medewerkers.
bash
curl -X PUT https://tradecatalog.app/api/v1/agreed-prices \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"commit":false,"prices":[{"accountCode":"OAK01","sku":"HX-8510","price":1250,"note":"Contract"}]}'
StatusCodeWanneer
400validation_errorEen prijs ontbreekt, negatief of boven de limiet.
403read_onlyDe werkruimte is niet op Pro, of de sleutel is alleen-lezen.