Volume Pricing maken met API's
Maak een nieuwe Volume Pricing-regel via de Public API, inclusief de volledige referentie voor de request body.
Dit document legt uit hoe je een nieuwe Volume Pricing-regel maakt met de Public API.
1. Endpoint
Section titled “1. Endpoint”Gebruik het volgende endpoint om een nieuw Volume Pricing-record te maken:
POST - https://wholesale.samita.io/api/v1/volume-pricingsMet dit endpoint maak je een nieuwe Volume Pricing-configuratie.
2. Request headers
Section titled “2. Request headers”Alle API-requests moeten de volgende vereiste headers bevatten:
| Header | Beschrijving | Vereist |
|---|---|---|
X-SAMITA-API-KEY |
API-sleutel uit de Wholesale-app | Ja |
X-SAMITA-SHOP-URL |
Shopify-shopdomein in het formaat xxx.myshopify.com | Ja |
CONTENT-TYPE |
Moet application/json zijn |
Ja |
Als een vereiste header ontbreekt, wordt het request geweigerd.
3. Request body
Section titled “3. Request body”a. Algemeen formaat
Section titled “a. Algemeen formaat”De gegevens voor het maken van Volume Pricing moeten worden verzonden in JSON-formaat.
Een voorbeeld van een JSON-structuur staat aan het einde van dit document.
Voorbeeld van request-JSON:
{ "title": "New Volume Pricing", "status": true, "type": "quantity", "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_method": "variant", "discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ], "active_date": { "types": ["start date", "end date"], "start_at": "2026-01-15T10:00:00", "end_at": "2026-01-15T10:00:00" }}b. title (vereist)
Section titled “b. title (vereist)”- De naam waarmee het Volume Pricing-record wordt geïdentificeerd
- Moet een string zijn
- Maximale lengte: 255 tekens
c. status (vereist)
Section titled “c. status (vereist)”- Bepaalt of het record actief is of niet
- Accepteert alleen de volgende waarden:
| Waarde | Beschrijving |
|---|---|
true |
Prijsregel is actief |
false |
Prijsregel is inactief |
d. type (vereist)
Section titled “d. type (vereist)”Bepaalt of volume pricing wordt berekend op basis van hoeveelheid of bedrag.
Geaccepteerde waarden:
quantityamount
e. apply_customer (vereist)
Section titled “e. apply_customer (vereist)”Bepaalt welke klanten in aanmerking komen voor deze prijsregel.
Structuur:
"apply_customer": { "type": "all", "tags": []}type
Geaccepteerde waarden (slechts een van de volgende):
all– Toepassen op alle klantenlogged– Alleen toepassen op ingelogde klantennon-logged– Alleen toepassen op gastklantencustomer-tags– Alleen toepassen op klanten met specifieke tags
tags
- Alleen vereist als
type == customer-tags - Moet een array zijn met door komma’s gescheiden waarden
- Voorbeeld:
["wholesale","b2b"]
Als type niet customer-tags is, kan dit veld worden genegeerd.
f. exclude_customer
Section titled “f. exclude_customer”Wordt gebruikt om specifieke klanten uit te sluiten van de prijsregel.
Structuur:
"exclude_customer": { "type": "none", "tags": []}type
- Standaardwaarde:
none - Geaccepteerde waarden:
| Waarde | Beschrijving |
|---|---|
none |
Geen enkele klant uitsluiten |
customer-tags |
Klanten uitsluiten op basis van tags |
tags
- Alleen vereist als
type == customer-tags - Array met door komma’s gescheiden waarden
- Voorbeeld:
["vip","internal"]
g. apply_product (vereist)
Section titled “g. apply_product (vereist)”Bepaalt op welke producten de prijsregel wordt toegepast.
Structuur:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false}type
Geaccepteerde waarden:
allproductscollectionsproduct-tags
product_ids
- Alleen vereist als
type == products - Lijst met product-ID’s, gescheiden door komma’s
- Voorbeeld:
[1,2,3]
product_tags
- Alleen vereist als
type == product-tags - Voorbeeld:
["tag1","tag2"]
collection_ids
- Alleen vereist als
type == collections - Voorbeeld:
[1,2,3]
apply_for_variants
- Bepaalt of kortingen per variant kunnen worden geconfigureerd
- Geaccepteerde waarden:
trueoffalse - Standaardwaarde:
false
h. exclude_product
Section titled “h. exclude_product”Bepaalt welke producten van de regel worden uitgesloten.
Structuur:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": []}type
- Standaard:
none - Geaccepteerde waarden:
| Waarde | Beschrijving |
|---|---|
none |
Geen enkel product uitsluiten |
products |
Specifieke producten uitsluiten |
collections |
Specifieke collecties uitsluiten |
Andere velden zijn alleen vereist afhankelijk van het geselecteerde type.
i. discount_for_variants
Section titled “i. discount_for_variants”Bepaalt de kortingsconfiguratie op product- en/of variantniveau.
- Laat dit veld leeg als
apply_product.apply_for_variants == false. - Als
apply_product.apply_for_variants == true, is dit veld vereist. - De structuur moet een array met productconfiguraties zijn.
Structuur:
"discount_for_variants": [
{
"id": 8516448190631,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
],
"variant_pricing": true,
"variants": [
{
"id": 46747346763943,
"duplicated": false,
"from_qty": "0",
"from_amount": "0",
"to_qty": "10",
"to_amount": "0",
"discount_groups": [
{
"name": "all",
"type": "percent",
"value": "10"
}
]
}
]
}
]
i.1. id (vereist)
- Product-ID.
- Moet overeenkomen met een bestaand product.
i.2. duplicated
Geeft aan of het product meerdere hoeveelheids- of bedragbereiken heeft.
Geaccepteerde waarden:
truefalse
Regels:
- Bij
true: het product bevat meerdere hoeveelheids- of bedragbereiken. - Bij
false: het product heeft maar één hoeveelheids- of bedragbereik.
i.3. from_qty / from_amount
Beginhoeveelheid of beginbedrag van het bereik.
Regels:
- Het eerste item mag leeg zijn (standaard 1).
- Alle volgende items zijn vereist.
i.4. to_qty / to_amount
Eindhoeveelheid of eindbedrag van het bereik.
Regels:
- Mag leeg zijn (wordt automatisch berekend als de
from-waarde van het volgende item min 1). - Indien opgegeven, moet het lager zijn dan de
from-waarde van het volgende item.
Voorbeelden:
- Item 1: from:0 – to:10 → Item 2: from:11 – to:20
- Item 1: from:0 – to:leeg → Item 2: from:10 – to:leeg
- Item 1: from:leeg – to:10 → Item 2: from:11 – to:leeg
i.5. discount_groups (productniveau)
Bepaalt de kortingsconfiguratie voor elk hoeveelheids- of bedragbereik op productniveau.
- Vereist als
variant_pricing == false. - Laat leeg als
variant_pricing == true. - Moet een array zijn met kortingsobjecten die overeenkomen met het geconfigureerde
apply_customer.type.
Structuur:
{ "name": "all", "type": "percent", "value": "10"}+ name
Geaccepteerde waarden:
all(alsapply_customer.type == all)logged(alsapply_customer.type == logged)non-logged(alsapply_customer.type == non-logged)
Als een andere waarde wordt opgegeven, wordt die behandeld als een klanttag en moet die overeenkomen met een van de tags die zijn gedefinieerd in apply_customer.tags.
+ type
Bepaalt het kortingstype.
Geaccepteerde waarden:
percent– Procentuele kortingamount– Vast bedrag dat van de prijs wordt afgetrokkenfixed-amount– Vaste eindprijs
+ value
- Moet een getal zijn
- Moet groter zijn dan 0
- Als
type == percent, moet de waarde lager zijn dan 100
i.6. variant_pricing
Geeft aan of de korting op variantniveau wordt toegepast.
Geaccepteerde waarden:
truefalse
i.7. variants
Bepaalt de kortingsconfiguratie op variantniveau.
- Vereist als
variant_pricing == true - Laat leeg als
variant_pricing == false - Moet een array met variantconfiguraties zijn
Structuur:
{ "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ]}+ id (vereist)
- Variant-ID.
+ duplicate
Geeft aan of de variant meerdere hoeveelheids- of bedragbereiken heeft.
Geaccepteerde waarden:
truefalse
Regels:
- Bij
true: de variant bevat meerdere bereiken. - Bij
false: de variant heeft maar één bereik.
+ from_qty / from_amount
Beginhoeveelheid of beginbedrag.
Regels:
- Het eerste item mag leeg zijn (standaard 1).
- Alle volgende items zijn vereist.
+ to_qty / to_amount
Eindhoeveelheid of eindbedrag.
Regels:
- Mag leeg zijn (automatisch berekend als de
from-waarde van het volgende item min 1). - Indien opgegeven, moet het lager zijn dan de
from-waarde van het volgende item.
Voorbeelden:
- Item 1: from:0 – to:10 → Item 2: from:11 – to:20
- Item 1: from:0 – to:leeg → Item 2: from:10 – to:leeg
- Item 1: from:leeg – to:10 → Item 2: from:11 – to:leeg
+ discount_groups (variantniveau)
Bepaalt de kortingsconfiguratie per hoeveelheids- of bedragbereik op variantniveau.
Regels:
- Als
apply_customer.typegelijk is aan:allloggednon-logged
→ Moet de array maar één item bevatten.
- Als
apply_customer.type == customer-tags
→ Moet de array meerdere items bevatten (één per klanttag).
name
Geaccepteerde waarden:
allloggednon-logged
Als een andere waarde wordt opgegeven, wordt die behandeld als een klanttag en moet die overeenkomen met een tag die is gedefinieerd in apply_customer.tags.
type
Geaccepteerde waarden:
percentamountfixed-amount
value
- Moet een getal zijn
- Moet groter zijn dan 0
- Als
type == percent, moet de waarde lager zijn dan 100
j. apply_market (vereist)
Section titled “j. apply_market (vereist)”Bepaalt op welke Shopify-markten de regel van toepassing is.
Structuur:
"apply_market": { "type": "all", "handle": []}type
Geaccepteerde waarden:
allspecific-market
handle
- Alleen vereist als
type == specific-market - Lijst met markt-handles, gescheiden door komma’s
- Voorbeeld:
["japan","us"]
Zo vind je de handle van een markt:
- Ga in Shopify-beheer naar het gedeelte Markten > klik op Meer acties > kies Markthandles bewerken > kopieer de handle die daar staat:


k. discount_methods (vereist)
Section titled “k. discount_methods (vereist)”Geaccepteerde waarden:
variant→ Same Variantacross_group→ Mix Variantswithin_each_group→ Mix Products
Deze komen overeen met de opties die beschikbaar zijn in de app.
Voorbeeld:
"discount_method": "variant",l. discount_group (vereist)
Section titled “l. discount_group (vereist)”Bepaalt hoeveelheids- of bedragbereiken en kortingswaarden.
from_qty / from_amount
to_qty / to_amount
Dezelfde validatieregels als hierboven beschreven.
Geaccepteerde waarden voor “type”:
percentamountfixed-amount
value:
- Moet > 0 zijn
- Bij percent → moet < 100 zijn
Structuur:
"discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ],De regels zijn dezelfde als hierboven beschreven voor kortingstypen en -waarden.
m. active_date
Section titled “m. active_date”Wordt gebruikt om de begin- en eindtijd van de prijsregel in te stellen.
Structuur:
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00"}types
- Optioneel
- Geaccepteerde waarden:
start_date,end_date - Kan een of beide bevatten, gescheiden door een komma
- Voorbeeld:
["start_date","end_date"]
start_at
- Vereist als
typesstart_datebevat - Formaat:
YYYY-MM-DD HH:MM:SS
end_at
- Vereist als
typesend_datebevat - Formaat:
YYYY-MM-DD HH:MM:SS
4. API-response
Section titled “4. API-response”a. Foutmeldingen
Section titled “a. Foutmeldingen”401 – Unauthorized
Mogelijke oorzaken:
- Ontbrekende shop-URL
- Ontbrekende API-sleutel
- Ongeldige shop-URL
- Ongeldige API-sleutel
- API-sleutel komt niet overeen met de shop
403 – This action is unauthorized
- API-sleutel heeft geen machtiging Create
- Elke API-sleutel kan de machtigingen View, Create, Update en Delete hebben
- Voor deze API is de machtiging Create nodig
- Wordt ook teruggegeven als een opgegeven ID niet bestaat
429 – Too Many Requests
- Limiet voor het aantal requests overschreden
- Maximaal toegestaan:
| Limiet | Waarde |
|---|---|
| Aantal requests | 1 request per 5 minuten |
| Daglimiet | 50 requests per dag |
b. Succesvolle response
Section titled “b. Succesvolle response”200 – API Success
- Volume Pricing-record succesvol aangemaakt
- Response wordt teruggegeven in JSON-formaat
{ "id": 1, "title": "New Volume Pricing", "status": true, "type": "quantity", "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_method": "variant", "discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ], "active_date": { "types": [], "start_at": "", "end_at": "" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}