Calculate a configured subscription price
curl --request POST \
--url https://api.marzipan.co/v1/subscription-packages/calculate-price \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"productId": "2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f",
"frequency": 3,
"items": [
{
"id": "9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"quantity": 2
}
]
}
'import requests
url = "https://api.marzipan.co/v1/subscription-packages/calculate-price"
payload = {
"productId": "2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f",
"frequency": 3,
"items": [
{
"id": "9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"quantity": 2
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
productId: '2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f',
frequency: 3,
items: [{id: '9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f', quantity: 2}]
})
};
fetch('https://api.marzipan.co/v1/subscription-packages/calculate-price', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.marzipan.co/v1/subscription-packages/calculate-price",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'productId' => '2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f',
'frequency' => 3,
'items' => [
[
'id' => '9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f',
'quantity' => 2
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.marzipan.co/v1/subscription-packages/calculate-price"
payload := strings.NewReader("{\n \"productId\": \"2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f\",\n \"frequency\": 3,\n \"items\": [\n {\n \"id\": \"9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f\",\n \"quantity\": 2\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.marzipan.co/v1/subscription-packages/calculate-price")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"productId\": \"2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f\",\n \"frequency\": 3,\n \"items\": [\n {\n \"id\": \"9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f\",\n \"quantity\": 2\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.marzipan.co/v1/subscription-packages/calculate-price")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"productId\": \"2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f\",\n \"frequency\": 3,\n \"items\": [\n {\n \"id\": \"9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f\",\n \"quantity\": 2\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"priceRaw": 1700,
"priceFormatted": "£17.00",
"currency": {
"code": "GBP",
"symbol": "£"
}
}{
"message": "Product is not a pick & mix subscription"
}{
"message": "The frequency field is required.",
"errors": {
"frequency": [
"The frequency field is required."
]
}
}Subscriptions
Calculate a configured subscription price
Prices a configured pick & mix subscription for a given billing frequency and set of selected items. Item prices use the effective price (sale, subscriber or list price) and are converted to the active market’s currency. Returns the raw and formatted subtotal plus currency information.
POST
/
subscription-packages
/
calculate-price
Calculate a configured subscription price
curl --request POST \
--url https://api.marzipan.co/v1/subscription-packages/calculate-price \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"productId": "2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f",
"frequency": 3,
"items": [
{
"id": "9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"quantity": 2
}
]
}
'import requests
url = "https://api.marzipan.co/v1/subscription-packages/calculate-price"
payload = {
"productId": "2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f",
"frequency": 3,
"items": [
{
"id": "9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"quantity": 2
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
productId: '2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f',
frequency: 3,
items: [{id: '9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f', quantity: 2}]
})
};
fetch('https://api.marzipan.co/v1/subscription-packages/calculate-price', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.marzipan.co/v1/subscription-packages/calculate-price",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'productId' => '2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f',
'frequency' => 3,
'items' => [
[
'id' => '9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f',
'quantity' => 2
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.marzipan.co/v1/subscription-packages/calculate-price"
payload := strings.NewReader("{\n \"productId\": \"2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f\",\n \"frequency\": 3,\n \"items\": [\n {\n \"id\": \"9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f\",\n \"quantity\": 2\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.marzipan.co/v1/subscription-packages/calculate-price")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"productId\": \"2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f\",\n \"frequency\": 3,\n \"items\": [\n {\n \"id\": \"9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f\",\n \"quantity\": 2\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.marzipan.co/v1/subscription-packages/calculate-price")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"productId\": \"2c1d0e9f-8a7b-4c6d-9e5f-1a2b3c4d5e6f\",\n \"frequency\": 3,\n \"items\": [\n {\n \"id\": \"9b2f1c4e-1a2b-4c3d-8e9f-0a1b2c3d4e5f\",\n \"quantity\": 2\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"priceRaw": 1700,
"priceFormatted": "£17.00",
"currency": {
"code": "GBP",
"symbol": "£"
}
}{
"message": "Product is not a pick & mix subscription"
}{
"message": "The frequency field is required.",
"errors": {
"frequency": [
"The frequency field is required."
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your API token.
Body
application/json
⌘I

