CreateSKUInAudit
Creates a new SKU for the given app and submits it for audit. The SKU is set as available and enabled for sale by default, but will not be visible to users until it passes the audit process.
Host: dip-cb.binanceapi.com
POST /mp-api/v1/apps/{appId}/skus
Header
| Parameter | Required | Description |
|---|---|---|
| X-Mp-Open-Api-Token | Yes | JWT token. Please refer to Description of External Interface Signature Authentication Algorithm |
Path Parameters
| Parameter | Description |
|---|---|
| appId | AppId of the mini program |
Body Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| category | string | Yes | Category of this SKU. See Valid Categories below. | "Games" |
| coverImageFileId | string | Yes | FileId for SKU cover image obtained via UploadFile | f7574adb-0ccb-4281-9ed6-943f11a1e85a |
| names | {[key:string]: string} | Yes | Name map for this SKU. en is required. Maximum length per name is 128 characters. Accepted language codes can be found in the Language Code section. | {"en": "PUBG 100 point"} |
| skuId | string | Yes | ID for the SKU. Must be unique within your app. Maximum length is 255 characters. | pubg_point_100 |
| originalPrice | number | No | Unit is USD. Must be a positive number. Sub-cent amounts are truncated (e.g., 9.9999 → 9.99). Not used when pricing_mode is "tiered". | 9.99 |
| sellingPrice | number | Required when pricing_mode is omitted or "flat" | Unit is USD. Must be a positive number. Sub-cent amounts are truncated (e.g., 9.9999 → 9.99). Not used when pricing_mode is "tiered". | 6 |
| discountPercentage | int | No | Discount percentage for display only. Valid range: 0–99. Not used when pricing_mode is "tiered". | 32 |
| countryWhitelist | Array<String> | No | Countries eligible to display this SKU. Use ISO 3166-1 alpha-2 codes. If not provided, SKU can be displayed in all countries. | ["JP"] |
| countryBlacklist | Array<String> | No | Countries restricted from displaying this SKU. Use ISO 3166-1 alpha-2 codes. | ["CN", "GB"] |
| path | string | Yes | Path to the SKU page. Maximum length is 1024 characters. Query string parameters (after ?) are parsed and stored separately. | /pages/index/index?foo=bar&baz=qux |
| description | string | No | Optional description for this SKU. | A virtual top-up item |
| pricing_mode | string | No | Pricing mode. "flat" (default) uses sellingPrice/originalPrice. "tiered" uses pricing_tiers and ignores flat price fields. | "tiered" |
| pricing_tiers | Array<PricingTier> | Required when pricing_mode is "tiered" | List of denomination options. Maximum 50 tiers. At most one tier may have tier_type = "custom". See PricingTier object below. | see example below |
Request Body — flat pricing (default)
{
"category": "Games",
"coverImageFileId": "f7574adb-0ccb-4281-9ed6-943f11a1e85a",
"names": {
"en": "PUBG 100 points",
"zh-TW": "PUBG 100 點",
},
"skuId": "pubg_point_100",
"originalPrice": 9.99,
"sellingPrice": 9,
"discountPercentage": 30,
"countryWhitelist": ["JP"],
"countryBlacklist": ["CN", "GB"],
"path": "/pages/index/index?foo=bar&baz=qux",
"description": "A virtual top-up item",
}
Request Body — tiered pricing
{
"category": "Games",
"coverImageFileId": "f7574adb-0ccb-4281-9ed6-943f11a1e85a",
"names": { "en": "JD.com CN Gift Card" },
"skuId": "jdcom-cn-giftcard",
"countryWhitelist": ["CN"],
"path": "/pages/index/index",
"pricing_mode": "tiered",
"pricing_tiers": [
{
"tier_id": "tier_jdcn_30cny",
"tier_type": "fixed",
"names": { "en": "JD.com CN 30 CNY" },
"original_price_usd_cent": 590,
"selling_price_usd_cent": 472
},
{
"tier_id": "tier_jdcn_custom",
"tier_type": "custom",
"names": { "en": "Custom amount" },
"description": "Enter any amount between $10 and $500",
"min_selling_price_usd_cent": 1000,
"max_selling_price_usd_cent": 50000
}
]
}
Response
HTTP 200
{
"code": "000000",
"message": null,
"data": {},
"success": true
}
| ErrorCode | Remark |
|---|---|
| 000000 | Success |
| 900001 | Invalid Parameter |
| 900002 | JWT Authentication Failed |
| 900003 | Unexpected Error |
| 900004 | Invalid FileId |
| 900260 | Invalid SkuId |
PricingTier Object
Each entry in pricing_tiers is a PricingTier object with the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
| tier_id | string | Yes | Stable merchant-assigned identifier for this tier. Must be unique within the SKU. Max 255 characters. |
| tier_type | string | No | "fixed" (default) for a single preset denomination; "custom" to let users enter any USD amount in a range. |
| names | {[key:string]: string} | Yes | Locale-keyed display name map. en is required. |
| description | string | No | Optional description for this tier. |
| original_price_usd_cent | int | Required for fixed tiers | List price in USD cents. Must be ≥ selling_price_usd_cent. |
| selling_price_usd_cent | int | Required for fixed tiers | Actual selling price in USD cents. Must be > 0 and ≤ original_price_usd_cent. |
| min_selling_price_usd_cent | int | Required for custom tiers | Minimum amount the user may enter, in USD cents. Must be > 0 and < max_selling_price_usd_cent. |
| max_selling_price_usd_cent | int | Required for custom tiers | Maximum amount the user may enter, in USD cents. |
Validation rules for pricing_tiers:
- At least one tier is required when
pricing_modeis"tiered". - Maximum 50 tiers per SKU.
tier_idmust be unique within the request.- At most one tier may have
tier_type = "custom". - When
pricing_modeis"flat",pricing_tiersmust be absent or empty.
Valid Categories
| Category |
|---|
| AI Tools |
| eSIM |
| Fashion & Beauty |
| Food & Grocery |
| Entertainment |
| Games |
| Shopping |
| Telecom & Utilities |
| Travel |