Skip to main content
PUT
/
saas
/
{saasId}
/
contract
Update a SaaS contract
curl --request PUT \
  --url https://api.getprimo.com/saas/{saasId}/contract \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "pricingMode": "per_licence",
  "currency": "EUR",
  "billingFrequency": "monthly",
  "flatRatePrice": 123,
  "unlicensedPricePerSeat": 123,
  "unlicensedMinimumSeatsBilled": 4503599627370495,
  "licenses": [
    {
      "remoteId": "<string>",
      "name": "<string>",
      "pricePerSeat": 123,
      "minimumSeatsBilled": 4503599627370495
    }
  ]
}
'
{
  "contract": {
    "pricingMode": "per_licence",
    "currency": "EUR",
    "billingFrequency": "monthly",
    "flatRatePrice": 123,
    "unlicensedPricePerSeat": 123,
    "unlicensedMinimumSeatsBilled": 4503599627370495,
    "licenses": [
      {
        "remoteId": "<string>",
        "name": "<string>",
        "pricePerSeat": 123,
        "minimumSeatsBilled": 4503599627370495
      }
    ]
  },
  "finance": {
    "yearlyCost": 123,
    "unusedYearlyCost": 123,
    "unusedSeatsCount": 4503599627370495
  },
  "licenses": [
    {
      "remoteId": "<string>",
      "name": "<string>"
    }
  ]
}
Key: Write Scope: Company

Authorizations

Authorization
string
header
required

Use your Primo API key in the Authorization header as Bearer <API_KEY>.

Path Parameters

saasId
string
required

Body

application/json
pricingMode
enum<string> | null
required

Contract pricing mode. Use flat_rate for one recurring amount or per_licence for license-based pricing.

Available options:
per_licence,
flat_rate
currency
enum<string> | null
required

ISO currency code used for all contract prices.

Available options:
EUR,
GBP,
USD,
CHF,
CAD
billingFrequency
enum<string> | null
required

Billing period used by every price in this contract: monthly, quarterly, or annual.

Available options:
monthly,
quarterly,
annual
flatRatePrice
number | null
required

Recurring flat-rate amount billed for one billing period defined by billingFrequency. Not annualized. Required when pricingMode is flat_rate; must be null when pricingMode is per_licence.

unlicensedPricePerSeat
number | null
required

Price billed per unlicensed seat for one billing period defined by billingFrequency. Not annualized. Required when pricingMode is per_licence; must be null when pricingMode is flat_rate.

unlicensedMinimumSeatsBilled
integer | null
required

Minimum number of unlicensed seats billed during one billing period. Required when pricingMode is per_licence; must be null when pricingMode is flat_rate.

Required range: 0 <= x <= 9007199254740991
licenses
object[]
required

Priced contract lines, one entry per SaaS license. Required when pricingMode is per_licence; all pricePerSeat and minimumSeatsBilled values must be null when pricingMode is flat_rate. The list must exactly match the licenses defined in the SaaS (same remoteId and name for every entry).

Response

default - application/json
contract
object
required

Billing contract currently configured for this SaaS.

finance
object
required

Derived financial metrics computed from the configured contract.

licenses
object[]
required

SaaS license catalog used to map contract pricing lines with the SaaS licenses.