Skip to main content
POST
/
merchant
/
plan
/
edit
Edit Plan
curl --request POST \
  --url https://api.unibee.dev/merchant/plan/edit \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "planId": 123,
  "addonIds": [
    123
  ],
  "amount": 123,
  "cancelAtTrialEnd": 123,
  "currency": "<string>",
  "description": "<string>",
  "externalPlanId": "<string>",
  "gasPayer": "<string>",
  "homeUrl": "<string>",
  "imageUrl": "<string>",
  "internalName": "<string>",
  "intervalCount": 123,
  "intervalUnit": "<string>",
  "metadata": {},
  "metricLimits": [
    [
      {
        "metricId": 123,
        "metricLimit": 123
      }
    ]
  ],
  "metricMeteredCharge": [
    [
      {
        "chargeType": 123,
        "graduatedAmounts": [
          {
            "endValue": 123,
            "flatAmount": 123,
            "perAmount": 123,
            "startValue": 123
          }
        ],
        "metricId": 123,
        "standardAmount": 123,
        "standardStartValue": 123
      }
    ]
  ],
  "metricRecurringCharge": [
    [
      {
        "chargeType": 123,
        "graduatedAmounts": [
          {
            "endValue": 123,
            "flatAmount": 123,
            "perAmount": 123,
            "startValue": 123
          }
        ],
        "metricId": 123,
        "standardAmount": 123,
        "standardStartValue": 123
      }
    ]
  ],
  "multiCurrencies": [
    [
      {
        "amount": 123,
        "autoExchange": true,
        "currency": "<string>",
        "disable": true,
        "exchangeRate": 123
      }
    ]
  ],
  "onetimeAddonIds": [
    123
  ],
  "planName": "<string>",
  "productDescription": "<string>",
  "productId": 123,
  "productName": "<string>",
  "trialAmount": 123,
  "trialDemand": "<string>",
  "trialDurationTime": 123,
  "usVATConfig": {
    "active": true,
    "fromAddress": {
      "address": "<string>",
      "city": "<string>",
      "countryCode": "<string>",
      "state": "<string>",
      "verified": true,
      "zipCode": "<string>"
    },
    "nexusAddresses": [
      {
        "address": "<string>",
        "city": "<string>",
        "countryCode": "<string>",
        "state": "<string>",
        "verified": true,
        "zipCode": "<string>"
      }
    ],
    "sellOnUSOnly": true,
    "taxCode": "<string>",
    "toAddress": {
      "address": "<string>",
      "city": "<string>",
      "countryCode": "<string>",
      "state": "<string>",
      "verified": true,
      "zipCode": "<string>"
    }
  }
}
'
{
  "code": 123,
  "data": {
    "plan": {
      "amount": 123,
      "bindingAddonIds": "<string>",
      "bindingOnetimeAddonIds": "<string>",
      "cancelAtTrialEnd": 123,
      "checkoutUrl": "<string>",
      "createTime": 123,
      "currency": "<string>",
      "description": "<string>",
      "disableAutoCharge": 123,
      "externalPlanId": "<string>",
      "extraMetricData": "<string>",
      "gasPayer": "<string>",
      "homeUrl": "<string>",
      "id": 123,
      "imageUrl": "<string>",
      "internalName": "<string>",
      "intervalCount": 123,
      "intervalUnit": "<string>",
      "merchantId": 123,
      "metadata": {},
      "metricLimits": [
        {
          "metricId": 123,
          "metricLimit": 123
        }
      ],
      "metricMeteredCharge": [
        {
          "chargeType": 123,
          "graduatedAmounts": [
            {
              "endValue": 123,
              "flatAmount": 123,
              "perAmount": 123,
              "startValue": 123
            }
          ],
          "metricId": 123,
          "standardAmount": 123,
          "standardStartValue": 123
        }
      ],
      "metricRecurringCharge": [
        {
          "chargeType": 123,
          "graduatedAmounts": [
            {
              "endValue": 123,
              "flatAmount": 123,
              "perAmount": 123,
              "startValue": 123
            }
          ],
          "metricId": 123,
          "standardAmount": 123,
          "standardStartValue": 123
        }
      ],
      "multiCurrencies": [
        {
          "amount": 123,
          "autoExchange": true,
          "currency": "<string>",
          "disable": true,
          "exchangeRate": 123
        }
      ],
      "planName": "<string>",
      "productId": 123,
      "publishStatus": 123,
      "status": 123,
      "taxPercentage": 123,
      "trialAmount": 123,
      "trialDemand": "<string>",
      "trialDurationTime": 123,
      "type": 123,
      "usVATConfig": {
        "active": true,
        "fromAddress": {
          "address": "<string>",
          "city": "<string>",
          "countryCode": "<string>",
          "state": "<string>",
          "verified": true,
          "zipCode": "<string>"
        },
        "nexusAddresses": [
          {
            "address": "<string>",
            "city": "<string>",
            "countryCode": "<string>",
            "state": "<string>",
            "verified": true,
            "zipCode": "<string>"
          }
        ],
        "sellOnUSOnly": true,
        "taxCode": "<string>",
        "toAddress": {
          "address": "<string>",
          "city": "<string>",
          "countryCode": "<string>",
          "state": "<string>",
          "verified": true,
          "zipCode": "<string>"
        }
      }
    }
  },
  "merchantId": 123,
  "message": "<string>",
  "redirect": "<string>",
  "requestId": "<string>"
}

Endpoint Overview

POST https://api.unibee.dev/merchant/plan/edit Edit exist plan, amount|currency|intervalUnit|intervalCount is not editable when plan is active

Authorization

All UniBee Merchant API requests require authentication via API key.
HeaderRequiredDescription
AuthorizationYesBearer <your_api_key>
Content-TypeYesapplication/json (for request body)

Parameters

Parameters for this endpoint are listed below. The schema is also shown in the Try it panel.

Request body

NameTypeRequiredDescription
addonIdsarrayNoPlan Ids Of Recurring Addon Type
amountintegerNoCaptureAmount of plan, not editable when plan is active
cancelAtTrialEndintegerNowhether cancel at subscription first trial end,0-false | 1-true, will pass to cancelAtPeriodEnd of subscription
currencystringNoCurrency of plan, not editable when plan is active
descriptionstringNoDescription of plan
externalPlanIdstringNoExternalPlanId
gasPayerstringNowho pay the gas for crypto payment, merchant|user
homeUrlstringNoHomeUrl,Start With: http
imageUrlstringNoImageUrl,Start With: http
internalNamestringNo
intervalCountintegerNoNumber,intervalUnit of plan, not editable when plan is active
intervalUnitstringNoInterval unit of plan,em: day|month|year|week, not editable when plan is active
metadataobjectNoMetadata,Map
metricLimitsarrayNoPlan’s MetricLimit List, nil means no change, empty array means delete all, array with data means full replace
metricMeteredChargearrayNoPlan’s MetricMeteredCharge
metricRecurringChargearrayNoPlan’s MetricRecurringCharge
multiCurrenciesarrayNoPlan’s MultiCurrencies
onetimeAddonIdsarrayNoPlan Ids Of Onetime Addon Type
planIdintegerYesId of plan
planNamestringNoName of plan
productDescriptionstringNoProductDescription of plan, Default copy description
productIdintegerNoId of product which plan to linked
productNamestringNoProductName of plan, Default copy planName
trialAmountintegerNoprice of trial period, not available for addon
trialDemandstringNodemand of trial, not available for addon, example, paymentMethod, payment method will ask for subscription trial start
trialDurationTimeintegerNoduration of trial,seconds, not available for addon
usVATConfigstringNo

Request examples

cURL

curl -X POST "https://api.unibee.dev/merchant/plan/edit" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "addonIds": [],
  "amount": 0,
  "cancelAtTrialEnd": 0,
  "currency": "",
  "description": "",
  "externalPlanId": "id_example",
  "gasPayer": "",
  "homeUrl": "https://example.com",
  "imageUrl": "https://example.com",
  "internalName": "",
  "intervalCount": 0,
  "intervalUnit": "",
  "metadata": {},
  "metricLimits": [],
  "metricMeteredCharge": [],
  "metricRecurringCharge": [],
  "multiCurrencies": [],
  "onetimeAddonIds": 0,
  "planId": 0,
  "planName": "",
  "productDescription": "",
  "productId": 0,
  "productName": "",
  "trialAmount": 0,
  "trialDemand": "",
  "trialDurationTime": 0,
  "usVATConfig": ""
}'

Sandbox

curl -X POST "https://api-sandbox.unibee.top/merchant/plan/edit" \
  -H "Authorization: Bearer YOUR_SANDBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "addonIds": [],
  "amount": 0,
  "cancelAtTrialEnd": 0,
  "currency": "",
  "description": "",
  "externalPlanId": "id_example",
  "gasPayer": "",
  "homeUrl": "https://example.com",
  "imageUrl": "https://example.com",
  "internalName": "",
  "intervalCount": 0,
  "intervalUnit": "",
  "metadata": {},
  "metricLimits": [],
  "metricMeteredCharge": [],
  "metricRecurringCharge": [],
  "multiCurrencies": [],
  "onetimeAddonIds": 0,
  "planId": 0,
  "planName": "",
  "productDescription": "",
  "productId": 0,
  "productName": "",
  "trialAmount": 0,
  "trialDemand": "",
  "trialDurationTime": 0,
  "usVATConfig": ""
}'

Response

Success responses return a JSON envelope with code, data, message, redirect, and requestId. code 0 indicates success.
FieldTypeDescription
codeintegerResponse code. 0 = success
dataobjectResponse payload
data.planobject
messagestringHuman-readable message
requestIdstringRequest ID for support

Error handling

HTTP statusMeaning
400Bad request — invalid or missing parameters. Check message in the body.
401Unauthorized — missing or invalid API key.
404Not found — invalid path or resource.
500Server error — retry with backoff.
When code in the response body is non-zero, check message for details. Use requestId when contacting support.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Edit exist plan, amount|currency|intervalUnit|intervalCount is not editable when plan is active

planId
integer<int64>
required

Id of plan

addonIds
integer<int64>[]

Plan Ids Of Recurring Addon Type

amount
integer<*int64>

CaptureAmount of plan, not editable when plan is active

cancelAtTrialEnd
integer<*int>

whether cancel at subscription first trial end,0-false | 1-true, will pass to cancelAtPeriodEnd of subscription

currency
string<*string>

Currency of plan, not editable when plan is active

description
string<*string>

Description of plan

externalPlanId
string<*string>

ExternalPlanId

gasPayer
string<*string>

who pay the gas for crypto payment, merchant|user

homeUrl
string<*string>

HomeUrl,Start With: http

imageUrl
string<*string>

ImageUrl,Start With: http

internalName
string<*string>
intervalCount
integer<*int>

Number,intervalUnit of plan, not editable when plan is active

intervalUnit
string<*string>

Interval unit of plan,em: day|month|year|week, not editable when plan is active

metadata
object

Metadata,Map

metricLimits
object[][]

Plan's MetricLimit List, nil means no change, empty array means delete all, array with data means full replace

metricMeteredCharge
object[][]

Plan's MetricMeteredCharge

metricRecurringCharge
object[][]

Plan's MetricRecurringCharge

multiCurrencies
object[][]

Plan's MultiCurrencies

onetimeAddonIds
integer<int64>[]

Plan Ids Of Onetime Addon Type

planName
string<*string>

Name of plan

productDescription
string<*string>

ProductDescription of plan, Default copy description

productId
integer<*int64>

Id of product which plan to linked

productName
string<*string>

ProductName of plan, Default copy planName

trialAmount
integer<*int64>

price of trial period, not available for addon

trialDemand
string<*string>

demand of trial, not available for addon, example, paymentMethod, payment method will ask for subscription trial start

trialDurationTime
integer<*int64>

duration of trial,seconds, not available for addon

usVATConfig
object

Response

200 - application/json
code
integer<int>
data
object
merchantId
integer<int64>
message
string<string>
redirect
string<string>
requestId
string<string>