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 for accepted values. | "Games" |
| coverImageFileId | string | Yes | Cover image for this SKU. Must be a file ID returned by UploadFile. The file must have passed safety checks before use. | f7574adb-0ccb-4281-9ed6-943f11a1e85a |
| names | {[key:string]: string} | Yes | Locale-keyed display name map for this SKU. Rules: en key is required. Maximum 128 characters per value.See the Language Code section for accepted keys. | {"en": "PUBG 100 point"} |
| skuId | string | Yes | Merchant-assigned identifier for this SKU. Rules: Must be unique within your app. Maximum 255 characters. | pubg_point_100 |
| originalPrice | number | Required when pricing_mode is "flat" | List price in USD."flat" mode: Required. Must be > 0. Must be ≥ sellingPrice. Sub-cent amounts are truncated (e.g., 9.9999 → 9.99)."tiered" mode: Ignored if provided — auto-calculated from pricing_tiers as the maximum original_price_usd_cent across all tiers."custom" mode: Optional. Saved as-is if provided; otherwise back-calculated from discountPercentage. | 9.99 |
| sellingPrice | number | Required when pricing_mode is "flat" | Actual selling price in USD."flat" mode: Required. Must be > 0. Must be ≤ originalPrice. Sub-cent amounts are truncated (e.g., 9.9999 → 9.99)."tiered" mode: Ignored if provided — auto-calculated from pricing_tiers as the minimum selling_price_usd_cent across all tiers."custom" mode: Optional. Saved as-is if provided; otherwise set to min_selling_price_usd_cent. | 6 |
| discountPercentage | int | Required when pricing_mode is "custom" | Discount percentage shown to buyers. Values: 1–99. "custom" mode: Required. Used to back-calculate originalPrice from min_selling_price_usd_cent (formula: original = min / (1 − discount/100))."flat" / "tiered" mode: Optional. Displayed as the price reduction badge; if omitted, computed automatically from the price difference. | 32 |
| countryWhitelist | Array<String> | No | Countries where this SKU is eligible to be displayed. Values: ISO 3166-1 alpha-2 country codes. If omitted, the SKU is available in all countries. | ["JP"] |
| countryBlacklist | Array<String> | No | Countries where this SKU must not be displayed. Values: ISO 3166-1 alpha-2 country codes. | ["CN", "GB"] |
| path | string | No | Mini-program page path to open when the SKU is tapped. Rules: Must start with /. Maximum 1024 characters. Query parameters (after ?) are parsed and stored separately.Defaults to /pages/index/index when omitted. | /pages/index/index?foo=bar&baz=qux |
| description | string | Yes | Description for this SKU. | A virtual top-up item |
| stocks | int | No | Merchant-provided inventory quantity. | 100 |
| autoDelivery | bool | No | Whether the SKU supports automatic delivery after purchase. | true |
| pricing_mode | string | No | Determines how the SKU is priced. Defaults to "flat" when omitted.Values: - "flat" — single fixed price defined by sellingPrice / originalPrice.- "tiered" — multiple fixed denominations defined by pricing_tiers.- "custom" — buyer enters any amount within the range defined by min_selling_price_usd_cent / max_selling_price_usd_cent. | "tiered" |
| pricing_tiers | Array<PricingTier> | Required when pricing_mode is "tiered" | List of fixed denomination options for this SKU. Rules: 1–50 tiers. Each tier must have a unique tier_id."tiered" mode: Required."flat" / "custom" mode: Must be absent or empty.See PricingTier Object below. | see example below |
| min_selling_price_usd_cent | int | Required when pricing_mode is "custom" | Minimum amount the buyer may enter, in USD cents. Rules: Must be > 0. Must be < max_selling_price_usd_cent.Only applies when pricing_mode is "custom". | 1000 |
| max_selling_price_usd_cent | int | Required when pricing_mode is "custom" | Maximum amount the buyer may enter, in USD cents. Rules: Must be > min_selling_price_usd_cent.Only applies when pricing_mode is "custom". | 50000 |
| custom_price_options_usd_cent | Array<int> | No | Preset quick-select amounts shown to the buyer, in USD cents. Rules: Maximum 5 entries. Each value must be > 0 and within [ min_selling_price_usd_cent, max_selling_price_usd_cent].Only applies when pricing_mode is "custom". When omitted, 5 evenly-spaced values between min and max are generated automatically. | [1000, 2500, 5000] |
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",
"stocks": 100,
"autoDelivery": true,
}
Request Body — tiered pricing
{
"category": "Shopping",
"coverImageFileId": "f7574adb-0ccb-4281-9ed6-943f11a1e85a",
"names": { "en": "JD.com CN Gift Card" },
"skuId": "jdcom-cn-giftcard",
"description": "JD.com gift card redeemable in China",
"countryWhitelist": ["CN"],
"path": "/pages/index/index",
"stocks": 500,
"autoDelivery": true,
"pricing_mode": "tiered",
"pricing_tiers": [
{
"tier_id": "tier_jdcn_30cny",
"names": { "en": "JD.com CN 30 CNY" },
"original_price_usd_cent": 590,
"selling_price_usd_cent": 472
},
{
"tier_id": "tier_jdcn_50cny",
"names": { "en": "JD.com CN 50 CNY" },
"original_price_usd_cent": 980,
"selling_price_usd_cent": 784
}
]
}
Request Body — custom pricing
{
"category": "Games",
"coverImageFileId": "f7574adb-0ccb-4281-9ed6-943f11a1e85a",
"names": { "en": "Custom Top-up" },
"skuId": "custom-topup",
"description": "Top up any amount between $10 and $500",
"countryWhitelist": ["JP"],
"path": "/pages/topup/index",
"pricing_mode": "custom",
"discountPercentage": 20,
"min_selling_price_usd_cent": 1000,
"max_selling_price_usd_cent": 50000,
"custom_price_options_usd_cent": [1000, 2500, 5000]
}
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 |
Pricing Tier Object
Each entry in pricing_tiers is a PricingTier object with the following fields. pricing_tiers is only used when pricing_mode is "tiered".
| Field | Type | Required | Description |
|---|---|---|---|
| tier_id | string | Yes | Stable merchant-assigned identifier for this tier. Must be unique within the SKU. Max 255 characters. |
| 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 | Yes | List price in USD cents. Must be ≥ selling_price_usd_cent. |
| selling_price_usd_cent | int | Yes | Actual selling price in USD cents. Must be > 0 and ≤ original_price_usd_cent. |
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.pricing_tiersmust be absent or empty whenpricing_modeis"flat"or"custom".
Valid Categories
| Category |
|---|
| AI Tools |
| eSIM |
| Fashion & Beauty |
| Food & Grocery |
| Entertainment |
| Games |
| Shopping |
| Telecom & Utilities |
| Travel |