Developer
Get Support
Sign in
Get Support
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in

User guide for Commerce Pricing APIs to update and fetch app pricing

Before you begin

Please note that creating a paid app and submitting it for approval will work as-is in Marketplace Partner Console UI

For updating the pricing of an app for a particular packaging, follow these steps in sequence.

  1. Fetch Catalog account for a developer space
  2. Fetch Product Id of the app
  3. Fetch Offering for which pricing needs to be updated
  4. Fetch Pricing Plan that needs to be deactivated, when new pricing plan is getting activated
  5. Create a draft Pricing Plan
  6. Create a Pricing Change
  7. Execute this Pricing Change to make the Pricing Plan active

Update app pricing with Commerce APIs (step‑by‑step)

For below steps, API token for authorisation and pass header with key: x-catalog-account and value: catalog-account fetched from API

  1. Fetch product Id for the app using API

  2. Fetch all offerings for the relevant productId using API. Pass status = “ACTIVE” and creation-type = “DEFAULT_OFFERING” as query parameters. Select the id of the relevant offering based on the following name mapping:

Offering TypeOffering Name
Standard offering Standard
Isolated Cloud offering Standard isolated cloud
Data Center offering Data Center
AGC offering Standard fedramp moderate
Advanced offering Advanced
Standard Multi Instance offering Standard Multi Instance
Advanced Multi Instance offering Advanced Multi Instance
  1. Fetch active pricing plans for the relevant offering Id using API and pass status = “ACTIVE” and creation-type = “DEFAULT_PRICING” as query parameters.

  2. Pick the Pricing Plan from above list that needs to be updated. Pick Pricing Plan which matches below criteria

    • "type": "COMMERCIAL"
    • Annual Pricing Plan (primaryCycle.name = ANNUAL) for Multi Instance offering, AGC offering, Data Center offering and Isolated Cloud offering
    • Monthly Pricing Plan (primaryCycle.name = MONTHLY)for rest of the offerings
  3. Update the relevant prices in the fetched pricing plan to create a Draft Pricing Plan using the API

    • Copy user tiers from the pricing plan to be deactivated.
    • Remove the user tier with floor and ceiling = 11, and change the user tier with floor = 12 to floor = 11
    • Below is a sample of user tier change needed
1
2
User tier fetched:   
        {
          "floor": 11,
          "ceiling": 11,
          "unitAmount": --,
          "flatAmount": --
        },
        {
          "floor": 12,
          "ceiling": 15,
          "unitAmount": null,
          "flatAmount": --
        },

User tier while creating draft Pricing Plan:
       {
          "floor": 11,
          "ceiling": 15,
          "unitAmount": --,
          "flatAmount": --
        },
  1. Create a pricing change using API. Pass the Pricing Plan to be deactivated and Draft Pricing Plan Id (Id of the Pricing Plan created in Step 5) to be activated

  2. Execute the pricing change using API

Common validation errors while updating Pricing of an App

Things to remember

  • These draft pricing plans will remain unavailable in the marketplace UI until the change is executed

  • Create annual pricing plans for Multi-instance, AGC, data center, and Isolated Cloud offerings, and monthly pricing plans for all other offerings

  • Free starter tier is not allowed for Advanced edition

  • For annual pricing plans, ensure the flatAmount is in ascending order

  • Ensure higher editions have higher prices than lower editions

  • Ensure higher user tiers have lower per-unit prices than lower tiers in a pricing plan

Attribute in the APIRecommended value
Create draft Pricing Plan API
currency "USD"
tiersMode "VOLUME" for Monthly, "GRADUATED" for Annual
prorateOnUsageChange "NONE"
Create pricing change API
maxNewQuoteDate Epoch in milliseconds for current time + 60 days
cohort.type "DEFAULT"
activationReasonCode "DEFAULT_PRICING"
effectiveDate null (No value for this attribute)
Execute pricing change API
Empty body

Example CURLs to update App pricing

Create draft Pricing Plan CURL

1
2
curl --location 'https://{{host}}/api/v2/pricing-plans' \
--header 'x-catalog-account: {{catalog_account}}' \
--header 'Authorization: {{API_token}}'\
--header 'Content-Type: application/json' \
--data '{
  "id": "{{guid}}",
  "offeringId": "{{offeringId}}",
  "primaryCycleId": "ANNUAL",
  "currency": "USD",
  "items": [
    {
      "cycleId": "ANNUAL",
      "starter": false,
      "chargeType": "LICENSED",
      "chargeElement": "user",
      "tiersMode": "VOLUME",
      "chargeElementAggregationType": "LATEST",
      "transformQuantity": null,
      "prorateOnUsageChange": "NONE",
      "tiers": [
        {
          "floor": 1,
          "ceiling": 10,
          "unitAmount": null,
          "flatAmount": 0
        },
        {
          "floor": 11,
          "ceiling": 15,
          "unitAmount": null,
          "flatAmount": 61200
        },
        {
          "floor": 16,
          "ceiling": 25,
          "unitAmount": null,
          "flatAmount": 102000
        },
        {
          "floor": 26,
          "ceiling": 50,
          "unitAmount": null,
          "flatAmount": 204000
        },
        {
          "floor": 51,
          "ceiling": 100,
          "unitAmount": null,
          "flatAmount": 408000
        },
        {
          "floor": 101,
          "ceiling": 200,
          "unitAmount": null,
          "flatAmount": 756000
        },
        {
          "floor": 201,
          "ceiling": 300,
          "unitAmount": null,
          "flatAmount": 1075000
        },
        {
          "floor": 301,
          "ceiling": 400,
          "unitAmount": null,
          "flatAmount": 1365000
        },
        {
          "floor": 401,
          "ceiling": 500,
          "unitAmount": null,
          "flatAmount": 1655000
        },
        {
          "floor": 501,
          "ceiling": 600,
          "unitAmount": null,
          "flatAmount": 1945000
        },
        {
          "floor": 601,
          "ceiling": 800,
          "unitAmount": null,
          "flatAmount": 2525000
        },
        {
          "floor": 801,
          "ceiling": 1000,
          "unitAmount": null,
          "flatAmount": 3105000
        },
        {
          "floor": 1001,
          "ceiling": 1200,
          "unitAmount": null,
          "flatAmount": 3631000
        },
        {
          "floor": 1201,
          "ceiling": 1400,
          "unitAmount": null,
          "flatAmount": 4157000
        },
        {
          "floor": 1401,
          "ceiling": 1600,
          "unitAmount": null,
          "flatAmount": 4683000
        },
        {
          "floor": 1601,
          "ceiling": 1800,
          "unitAmount": null,
          "flatAmount": 5209000
        },
        {
          "floor": 1801,
          "ceiling": 2000,
          "unitAmount": null,
          "flatAmount": 5735000
        },
        {
          "floor": 2001,
          "ceiling": 2250,
          "unitAmount": null,
          "flatAmount": 6392500
        },
        {
          "floor": 2251,
          "ceiling": 2500,
          "unitAmount": null,
          "flatAmount": 7050000
        },
        {
          "floor": 2501,
          "ceiling": 2750,
          "unitAmount": null,
          "flatAmount": 7662500
        },
        {
          "floor": 2751,
          "ceiling": 3000,
          "unitAmount": null,
          "flatAmount": 8275000
        },
        {
          "floor": 3001,
          "ceiling": 3250,
          "unitAmount": null,
          "flatAmount": 8887500
        },
        {
          "floor": 3251,
          "ceiling": 3500,
          "unitAmount": null,
          "flatAmount": 9500000
        },
        {
          "floor": 3501,
          "ceiling": 3750,
          "unitAmount": null,
          "flatAmount": 10112500
        },
        {
          "floor": 3751,
          "ceiling": 4000,
          "unitAmount": null,
          "flatAmount": 10725000
        },
        {
          "floor": 4001,
          "ceiling": 4250,
          "unitAmount": null,
          "flatAmount": 11337500
        },
        {
          "floor": 4251,
          "ceiling": 4500,
          "unitAmount": null,
          "flatAmount": 11950000
        },
        {
          "floor": 4501,
          "ceiling": 4750,
          "unitAmount": null,
          "flatAmount": 12562500
        },
        {
          "floor": 4751,
          "ceiling": 5000,
          "unitAmount": null,
          "flatAmount": 13175000
        },
        {
          "floor": 5001,
          "ceiling": 5500,
          "unitAmount": null,
          "flatAmount": 14325000
        },
        {
          "floor": 5501,
          "ceiling": 6000,
          "unitAmount": null,
          "flatAmount": 15475000
        },
        {
          "floor": 6001,
          "ceiling": 6500,
          "unitAmount": null,
          "flatAmount": 16625000
        },
        {
          "floor": 6501,
          "ceiling": 7000,
          "unitAmount": null,
          "flatAmount": 17775000
        },
        {
          "floor": 7001,
          "ceiling": 7500,
          "unitAmount": null,
          "flatAmount": 18925000
        },
        {
          "floor": 7501,
          "ceiling": 8000,
          "unitAmount": null,
          "flatAmount": 20010000
        },
        {
          "floor": 8001,
          "ceiling": 8500,
          "unitAmount": null,
          "flatAmount": 21095000
        },
        {
          "floor": 8501,
          "ceiling": 9000,
          "unitAmount": null,
          "flatAmount": 22180000
        },
        {
          "floor": 9001,
          "ceiling": 9500,
          "unitAmount": null,
          "flatAmount": 23265000
        },
        {
          "floor": 9501,
          "ceiling": 10000,
          "unitAmount": null,
          "flatAmount": 24350000
        },
        {
          "floor": 10001,
          "ceiling": 11000,
          "unitAmount": null,
          "flatAmount": 26230000
        },
        {
          "floor": 11001,
          "ceiling": 12000,
          "unitAmount": null,
          "flatAmount": 28110000
        },
        {
          "floor": 12001,
          "ceiling": 13000,
          "unitAmount": null,
          "flatAmount": 29990000
        },
        {
          "floor": 13001,
          "ceiling": 14000,
          "unitAmount": null,
          "flatAmount": 31870000
        },
        {
          "floor": 14001,
          "ceiling": 15000,
          "unitAmount": null,
          "flatAmount": 33750000
        },
        {
          "floor": 15001,
          "ceiling": 16000,
          "unitAmount": null,
          "flatAmount": 35480000
        },
        {
          "floor": 16001,
          "ceiling": 17000,
          "unitAmount": null,
          "flatAmount": 37210000
        },
        {
          "floor": 17001,
          "ceiling": 18000,
          "unitAmount": null,
          "flatAmount": 38940000
        },
        {
          "floor": 18001,
          "ceiling": 19000,
          "unitAmount": null,
          "flatAmount": 40670000
        },
        {
          "floor": 19001,
          "ceiling": 20000,
          "unitAmount": null,
          "flatAmount": 42400000
        },
        {
          "floor": 20001,
          "ceiling": 21000,
          "unitAmount": null,
          "flatAmount": 44030000
        },
        {
          "floor": 21001,
          "ceiling": 22000,
          "unitAmount": null,
          "flatAmount": 45660000
        },
        {
          "floor": 22001,
          "ceiling": 23000,
          "unitAmount": null,
          "flatAmount": 47290000
        },
        {
          "floor": 23001,
          "ceiling": 24000,
          "unitAmount": null,
          "flatAmount": 48920000
        },
        {
          "floor": 24001,
          "ceiling": 25000,
          "unitAmount": null,
          "flatAmount": 50550000
        },
        {
          "floor": 25001,
          "ceiling": 26000,
          "unitAmount": null,
          "flatAmount": 52070000
        },
        {
          "floor": 26001,
          "ceiling": 27000,
          "unitAmount": null,
          "flatAmount": 53590000
        },
        {
          "floor": 27001,
          "ceiling": 28000,
          "unitAmount": null,
          "flatAmount": 55110000
        },
        {
          "floor": 28001,
          "ceiling": 29000,
          "unitAmount": null,
          "flatAmount": 56630000
        },
        {
          "floor": 29001,
          "ceiling": 30000,
          "unitAmount": null,
          "flatAmount": 58150000
        },
        {
          "floor": 30001,
          "ceiling": 31000,
          "unitAmount": null,
          "flatAmount": 59350000
        },
        {
          "floor": 31001,
          "ceiling": 32000,
          "unitAmount": null,
          "flatAmount": 60550000
        },
        {
          "floor": 32001,
          "ceiling": 33000,
          "unitAmount": null,
          "flatAmount": 61750000
        },
        {
          "floor": 33001,
          "ceiling": 34000,
          "unitAmount": null,
          "flatAmount": 62950000
        },
        {
          "floor": 34001,
          "ceiling": 35000,
          "unitAmount": null,
          "flatAmount": 64150000
        },
        {
          "floor": 35001,
          "ceiling": 36000,
          "unitAmount": null,
          "flatAmount": 65330000
        },
        {
          "floor": 36001,
          "ceiling": 37000,
          "unitAmount": null,
          "flatAmount": 66510000
        },
        {
          "floor": 37001,
          "ceiling": 38000,
          "unitAmount": null,
          "flatAmount": 67690000
        },
        {
          "floor": 38001,
          "ceiling": 39000,
          "unitAmount": null,
          "flatAmount": 68870000
        },
        {
          "floor": 39001,
          "ceiling": 40000,
          "unitAmount": null,
          "flatAmount": 70050000
        },
        {
          "floor": 40001,
          "ceiling": 41000,
          "unitAmount": null,
          "flatAmount": 71200000
        },
        {
          "floor": 41001,
          "ceiling": 42000,
          "unitAmount": null,
          "flatAmount": 72350000
        },
        {
          "floor": 42001,
          "ceiling": 43000,
          "unitAmount": null,
          "flatAmount": 73500000
        },
        {
          "floor": 43001,
          "ceiling": 44000,
          "unitAmount": null,
          "flatAmount": 74650000
        },
        {
          "floor": 44001,
          "ceiling": 45000,
          "unitAmount": null,
          "flatAmount": 75800000
        },
        {
          "floor": 45001,
          "ceiling": 46000,
          "unitAmount": null,
          "flatAmount": 76930000
        },
        {
          "floor": 46001,
          "ceiling": 47000,
          "unitAmount": null,
          "flatAmount": 78060000
        },
        {
          "floor": 47001,
          "ceiling": 48000,
          "unitAmount": null,
          "flatAmount": 79190000
        },
        {
          "floor": 48001,
          "ceiling": 49000,
          "unitAmount": null,
          "flatAmount": 80320000
        },
        {
          "floor": 49001,
          "ceiling": 50000,
          "unitAmount": null,
          "flatAmount": 81450000
        },
        {
          "floor": 50001,
          "ceiling": 60000,
          "unitAmount": null,
          "flatAmount": 92750000
        },
        {
          "floor": 60001,
          "ceiling": 70000,
          "unitAmount": null,
          "flatAmount": 104050000
        },
        {
          "floor": 70001,
          "ceiling": 80000,
          "unitAmount": null,
          "flatAmount": 115350000
        },
        {
          "floor": 80001,
          "ceiling": 90000,
          "unitAmount": null,
          "flatAmount": 126650000
        },
        {
          "floor": 90001,
          "ceiling": 100000,
          "unitAmount": null,
          "flatAmount": 137950000
        }
      ]
    }
  ]
}
'

Create Pricing Change CURL

1
2
curl --location 'https://offering.staging.atl-paas.net/api/v2/pricing-changes' \
--header 'x-catalog-account: {{catalog_account}}' \
--header 'Authorization: {{API_token}}'\
--header 'Content-Type: application/json' \
--data '{
  "id": "{{guid}}",
  "offeringId": "{{offeringId}}",
  "description": "string",
  "changes": [
    {
      "activate": {
        "pricingPlanId": "{{draftPricingPlanId}}",
        "activationReasonCode": "DEFAULT_PRICING"
      },
      "deactivate": {
        "pricingPlanId": "{{activePricingPlanIdToBeDeactivated}}",
        "maxNewQuoteDate": 1767591039000
      },
      "migrate": {
        "fromPricingPlanId": "{{activePricingPlanIdToBeDeactivated}}",
        "destinations": [
          {
            "toPricingPlanId": "{{draftPricingPlanId}}",
            "cohort": {
              "type": "DEFAULT",
              "chargeElement": "string",
              "tierFloor": 0,
              "tierCeiling": 0
            }
          }
        ]
      }
    }
  ]
}'

Execute Pricing Change CURL

1
2
curl --location --request PUT 'https://{{host}}/api/v2/pricing-changes/{pricingChangeId}/execute' \
--header 'x-catalog-account: {{catalog_account}}' \
--header 'Authorization: {{API_token}}'\
--header 'Content-Type: application/json' \
--data '{
}'

Get app pricing with Commerce APIs (step‑by‑step)

Use below steps to fetch pricing of an App.

Use API token for authorisation and pass header with key: x-catalog-account and value: catalog-account fetched from API

  1. Fetch product Id for the app using API

  2. Fetch all offerings for the relevant productId using API. Pass status = “ACTIVE” and creation-type = “DEFAULT_OFFERING” as query parameters. Select the id of the relevant offering based on the following name mapping:

Offering TypeOffering Name
Standard offering Standard
Isolated Cloud offering Standard isolated cloud
Data Center offering Data Center
AGC offering Standard fedramp moderate
Advanced offering Advanced
Standard Multi Instance offering Standard Multi Instance
Advanced Multi Instance offering Advanced Multi Instance
  1. Fetch active pricing plans for the relevant offering Id using API and pass status = “ACTIVE” and creation-type = “DEFAULT_PRICING” as query parameters.

  2. Pick the Pricing Plan from above list that needs to be updated. Pick Pricing Plan which matches below criteria

    • "type": "COMMERCIAL"

    • Annual Pricing Plan (primaryCycle.name = ANNUAL) for Multi Instance offering, AGC offering, Data Center offering and Isolated Cloud offering

    • Monthly Pricing Plan (primaryCycle.name = MONTHLY)for rest of the offerings

Rate this page: