Skip to content

Return pricing info

POST/pricing

Business Automation API · Pricing

Return pricing information.

Required permissionsfdc-pricing:read

Parameters

Name In Type Required Description
X-Distributor-ID header string Yes Distributor ID.

Request body

Content type: application/json

Request body fields

resellerAccountNumberstringrequired
Account number.
Must match the pattern ^[0-9]+$. Must be 1–8 characters long.
transactionTypestring
Transaction type.
Must be one of: new, renew.
sectorstringrequired
Sector.
Must be one of: corporate, education, government.
linesarray of objectrequired
List of pricing lines.
Must contain 1–6 items.
Pricing line item request.
Show child attributesHide child attributes
lineIdstring
Line ID.
Must be at least 1 character long.
productNamestringrequired
Product code.
Must be at least 1 character long.
quantityintegerrequired
Quantity of the product.
Must be ≥ 1 and ≤ 5000.
termintegerrequired
Term of the product in months.
Must be ≥ 1 and ≤ 60.
discretionaryDiscountPercentnumber
Discretionary discount percentage that should be applied to the MSRP.
Must be ≥ 0 and ≤ 100.
programmeDiscountstring
Programme discount.
Must be one of: dealReg, incumbent, teaming.
promoCodesarray of string
List of applied promo codes.
Must contain at most 3 items.

Request samples

curl -X POST "https://api.central.sophos.com/business-automation/v1/pricing" -H "Authorization: Bearer <access-token>" -H "X-Distributor-ID: <X-Distributor-ID>" -H "Content-Type: application/json" -d "{
  \"resellerAccountNumber\": \"12345678\",
  \"transactionType\": \"new\",
  \"sector\": \"corporate\",
  \"lines\": [
    {
      \"lineId\": \"LINE-001\",
      \"productName\": \"CIXA-U36STNDVF\",
      \"quantity\": 10,
      \"term\": 12,
      \"discretionaryDiscountPercent\": 15.5,
      \"programmeDiscount\": \"dealReg\"
    }
  ],
  \"promoCodes\": [
    \"PROMO10\"
  ]
}"

import requests

response = requests.post(
    "https://api.central.sophos.com/business-automation/v1/pricing",
    headers={
        "Authorization": "Bearer <access-token>",
        "X-Distributor-ID": "<X-Distributor-ID>",
        "Content-Type": "application/json",
    },
    json={   'resellerAccountNumber': '12345678',
    'transactionType': 'new',
    'sector': 'corporate',
    'lines': [   {   'lineId': 'LINE-001',
                     'productName': 'CIXA-U36STNDVF',
                     'quantity': 10,
                     'term': 12,
                     'discretionaryDiscountPercent': 15.5,
                     'programmeDiscount': 'dealReg'}],
    'promoCodes': ['PROMO10']},
)
print(response.json())

$headers = @{
    "Authorization" = "Bearer <access-token>"
    "X-Distributor-ID" = "<X-Distributor-ID>"
    "Content-Type" = "application/json"
}
$body = '{
  "resellerAccountNumber": "12345678",
  "transactionType": "new",
  "sector": "corporate",
  "lines": [
    {
      "lineId": "LINE-001",
      "productName": "CIXA-U36STNDVF",
      "quantity": 10,
      "term": 12,
      "discretionaryDiscountPercent": 15.5,
      "programmeDiscount": "dealReg"
    }
  ],
  "promoCodes": [
    "PROMO10"
  ]
}'
Invoke-RestMethod -Method POST -Uri "https://api.central.sophos.com/business-automation/v1/pricing" -Headers $headers -Body $body -ContentType "application/json"

package main

import (
    "fmt"
    "io"
    "net/http"
    "strings"
)

func main() {
    req, err := http.NewRequest("POST", "https://api.central.sophos.com/business-automation/v1/pricing", strings.NewReader(`{
  "resellerAccountNumber": "12345678",
  "transactionType": "new",
  "sector": "corporate",
  "lines": [
    {
      "lineId": "LINE-001",
      "productName": "CIXA-U36STNDVF",
      "quantity": 10,
      "term": 12,
      "discretionaryDiscountPercent": 15.5,
      "programmeDiscount": "dealReg"
    }
  ],
  "promoCodes": [
    "PROMO10"
  ]
}`))
    if err != nil {
        panic(err)
    }
    req.Header.Set("Authorization", "Bearer <access-token>")
    req.Header.Set("X-Distributor-ID", "<X-Distributor-ID>")
    req.Header.Set("Content-Type", "application/json")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}

const response = await fetch("https://api.central.sophos.com/business-automation/v1/pricing", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <access-token>",
    "X-Distributor-ID": "<X-Distributor-ID>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "resellerAccountNumber": "12345678",
  "transactionType": "new",
  "sector": "corporate",
  "lines": [
    {
      "lineId": "LINE-001",
      "productName": "CIXA-U36STNDVF",
      "quantity": 10,
      "term": 12,
      "discretionaryDiscountPercent": 15.5,
      "programmeDiscount": "dealReg"
    }
  ],
  "promoCodes": [
    "PROMO10"
  ]
}),
});
const data = await response.json();
console.log(data);

Responses

200 — List of pricing information.

Response fields

distributorobject
Distributor account company details.
Show child attributesHide child attributes
namestring
Company name.
addressobject
Address of the distributor, partner, or end-user.
Show child attributesHide child attributes
address1string
Line 1 of the address.
address2string
Line 2 of the address.
citystring
City.
statestring
State.
countryCodestring
Two-letter ISO country code.
postalCodestring
Postal code.
accountNumberstring
Account number.
Must match the pattern ^[0-9]+$. Must be 1–8 characters long.
resellerobject
Partner account company details.
Show child attributesHide child attributes
namestring
Company name.
levelstring
Partner level.
Must be one of: select, authorized, silver, gold, platinum.
accountNumberstring
Account number.
Must match the pattern ^[0-9]+$. Must be 1–8 characters long.
addressobject
Address of the distributor, partner, or end-user.
Show child attributesHide child attributes
address1string
Line 1 of the address.
address2string
Line 2 of the address.
citystring
City.
statestring
State.
countryCodestring
Two-letter ISO country code.
postalCodestring
Postal code.
contactobject
Contact information for distributor, partner, or end-user.
Show child attributesHide child attributes
firstNamestring
First name.
lastNamestring
Last name.
emailstring (email)
Email address.
phonestring
Phone number.
mobilestring
Mobile number.
currencyCodestring
Currency ISO code for the pricing information.
sectorstring
Sector.
Must be one of: corporate, education, government.
transactionTypestring
Transaction type.
Must be one of: new, renew.
msrpnumber
Pricebook price with applied multipliers.
specialTotalnumber
Customer / End User price of all products.
intermediateTierTotalnumber
Reseller price of all products.
totalnumber
Distributor price of all products.
linesarray of object
List of pricing lines.
Pricing line item.
Show child attributesHide child attributes
lineIdstring
Line ID.
productNamestring
Product code.
quantityinteger
Quantity of the product.
terminteger
Term of the product in months.
msrpnumber
Total Pricebook price with applied multipliers for the line.
unitMsrpnumber
Unit Pricebook price with applied multipliers for the line.
discretionaryDiscountPercentnumber
Discretionary Discount Percent.
promoDiscountPercentagenumber
Promotional Discount Percent.
promoDiscountAmountnumber
Promotional Discount Amount.
intermediateTierMarginnumber
Reseller Margin.
marginPercentagenumber
Distributor Margin.
specialUnitPricenumber
Customer / End User Unit Price.
specialTotalnumber
Customer / End User Total Price.
intermediateTierUnitnumber
Reseller Unit Price.
intermediateTierTotalnumber
Reseller Total Price.
unitnumber
Distributor Unit Price.
totalnumber
Distributor Total Price.
skustring
Sophos Stock Keeping Unit.
messagesarray of object
List of info/warning/error messages related to the line item pricing.
Collection of info/warning/error messages.
Show child attributesHide child attributes
typestring
Message type.
Must be one of: info, warning, error.
messagestring
Message text.
promoCodesarray of string
List of applied promo codes.
messagesarray of object
List of info/warning/error messages related to this line.
Collection of info/warning/error messages.
Show child attributesHide child attributes
typestring
Message type.
Must be one of: info, warning, error.
messagestring
Message text.

Errors

Status Meaning
400 Bad request.
500 Unexpected error.

All error responses share the same shape — see the error response object.

Response examples

200

{
  "distributor": {
    "name": "Example Disti, Inc.",
    "address": {
      "address1": "1134 Lane, Eastwood",
      "address2": "New York 10001",
      "city": "New York",
      "state": "NY",
      "countryCode": "US",
      "postalCode": "10001"
    },
    "accountNumber": "12345678"
  },
  "reseller": {
    "name": "Acme Corp",
    "level": "gold",
    "accountNumber": "12345678",
    "address": {
      "address1": "1134 Lane, Eastwood",
      "address2": "New York 10001",
      "city": "New York",
      "state": "NY",
      "countryCode": "US",
      "postalCode": "10001"
    },
    "contact": {
      "firstName": "John",
      "lastName": "Smith",
      "email": "john.smith@example.com",
      "phone": "9111678231",
      "mobile": "6311628237"
    }
  },
  "currencyCode": "USD",
  "sector": "corporate",
  "transactionType": "new",
  "msrp": 1234.56,
  "specialTotal": 999.99,
  "intermediateTierTotal": 899.99,
  "total": 799.99,
  "lines": [
    {
      "lineId": "LINE-001",
      "productName": "CIXA-U36STNDVF",
      "quantity": 10,
      "term": 12,
      "msrp": 100,
      "unitMsrp": 10,
      "discretionaryDiscountPercent": 15.5,
      "promoDiscountPercentage": 10,
      "promoDiscountAmount": 12.34,
      "intermediateTierMargin": 7.5,
      "marginPercentage": 4,
      "specialUnitPrice": 15,
      "specialTotal": 150,
      "intermediateTierUnit": 13,
      "intermediateTierTotal": 130,
      "unit": 12,
      "total": 120,
      "sku": "XYZITA00123",
      "messages": [
        {
          "type": "info",
          "message": "This is an informational message."
        }
      ]
    }
  ],
  "promoCodes": [
    "PROMO10",
    "DISCOUNT20"
  ],
  "messages": [
    {
      "type": "info",
      "message": "This is an informational message."
    }
  ]
}

See the guide for a narrative walkthrough of this API.