Billing Options
The billingOptions field is part of the manifest.json file of an app and is used to define all the necessary metadata for distributing an app on the VTEX ecosystem. The billingOptions field allows you to charge for an app, make it public, and determine its pricing settings.
Please notice that apps without billingOptions in the manifest.json file are private, meaning that they are only visible and available for installation in the account where they were published.
Setting your app's billing model is a necessary step to distribute your app on the VTEX ecosystem. Without the
billingOptionsdefinition, the visibility of your app is restricted to the account where it was published. Learn how to configure thebillingOptionsfield in Setting your app's billing model according to your scenario.
Refer to the following sections to find more details on the properties that comprise the billingOptions field.
Properties
| Property | Type | Description | Valid example |
|---|---|---|---|
type | enum | Defines how the app is charged. Possible values are: free (app is free of charge), billable (app charges according to one of its plans) or sponsored (app is meant to be used only by a Sponsor account and its children). | free |
support | object | Provides a support request channel between the app’s user and its vendor. To know more, check out the support object section below. | undefined |
availableCountries | array | Defines the countries ID (ISO) where the app can be installed and where support is ensured by the vendor. | ["BRA", "USA", "GBR"] or ["*"] (meaning that the app is available in any country) |
plans | array | Optional property. Defines (in an object array) a predefined subscription plan. To know more, check out the plans array section below. | undefined |
support object:
| Property | Type | Description | Valid example |
|---|---|---|---|
email | string | Email address where users can request support. | example@example.com |
url | string | Optional property. URL where users can request support. | example.com/support |
phone | string | Optional property. Phone number (in full international format) where users can request support. | +5521988887777 |
Valid example of the object:
_10"support": {_10 "url": "https://example.com/support",_10 "email": "example@example.com",_10 "phone": "+5521988887777"_10},
plans array:
| Property | Type | Description | Valid example |
|---|---|---|---|
id | string | Unique plan identifier containing one or more letters or numbers from the english alphabet. | BRAplan23, planShipping |
currency | string | A valid ISO 4217 currency code to be used for the app’s subscription value. Currently, only BRL and USD are supported. | BRL, USD |
price | object | Contains subscription pricing values for the billable app. All values follow the same unit set in the currency prop. For more info, check out the price object section below. | undefined |
Valid example of the object:
_10"plans": [{_10 "id": "BRAplan23",_10 "currency": "BRL",_10 "price": {...}_10}]
priceobject:
| Property | Type | Description | Valid example |
|---|---|---|---|
subscription | number | The subscription’s monthly price. This property accepts values with or without cents. Examples: 10 (10 dollars), 60.25 (60 dollars and 25 cents), 0.9 (90 cents). | 19.99 |
metrics | array | Defines (in an object array) the criteria on which the variable fee will be based on, according to the app’s use. Only use this property if you also want to charge your app users according to the app usage (in addition to the subscription fee). To know more, check out the metrics array section below. | undefined |
Valid example of the object:
_10"price" {_10 "subscription": 50,_10 "metrics": [{...}]_10}
metrics array:
| Property | Type | Description | Valid example |
|---|---|---|---|
id | string | Unique metric identifier (across all metrics within the plan) containing one or more letters or numbers from the english alphabet. | CreditMetric23 |
ranges | array | Defines (in an object array) the range used to calculate the app’s use and the variable fee that users should be charged. To know more, check out the ranges array section below. | undefined |
customURL | string | Reliable URL address containing information on how to get the metric value. | mycredit.com/app/3/metric-value |
Valid example of the object:
_10{_10 "id": "notificationSent",_10 "ranges": [{...}],_10 "customUrl": "https://metrics.com/_v/metric/billing/info"_10}
ranges array:
| Property | Type | Description | Valid example |
|---|---|---|---|
multiplier | number | A positive number that is going to be multiplied by the metric value to calculate the price that will be charged. | 0.07, 1.99, 5 |
exclusiveFrom | number | A number that denotes the start of the range (but doesn't include that number itself in the range). | 0, 100, 33.33 |
inclusiveTo | number | A number that denotes the end of the range (including that number itself). | 100, 500, 999.99 |
Valid example of the object:
_10"ranges": [{_10 "exclusiveFrom": 0,_10 "multiplier": 0.08_10}]