Skip to content
This translation is behind the English original, updated 2026-09-15. Read the English version for the current text.

GET /apiv2/pricing

Điểm cuối định giá tổng hợp trả về toàn bộ giá dịch vụ trong một phản hồi duy nhất với các khoảng thời gian động.

Giá có thể thay đổi trong quá trình thực hiện

Mức giá được trả về bởi điểm cuối này có thể thay đổi trong khi đơn hàng đang được xử lý. Nhà cung cấp energy có thể từ chối yêu cầu ủy quyền, trong trường hợp đó Netts sẽ tự động chuyển hướng đơn hàng đến nhà cung cấp khả dụng tiếp theo. Netts cam kết không chỉ cung cấp mức giá cạnh tranh nhất mà còn đảm bảo nguồn cung cấp energy đáng tin cậy — do đó đơn hàng có thể được thực hiện với mức giá cao hơn mức giá đã báo ban đầu. Điều này chỉ áp dụng cho các đơn hàng từ 300.000 đơn vị energy trở lên.

Khuyến nghị

Đây là điểm cuối định giá được khuyến nghị. Nó thay thế cho điểm cuối cũ /apiv2/prices sắp ngừng hoạt động.

URL điểm cuối

GET https://netts.io/apiv2/pricing

Tiêu đề yêu cầu

Tiêu đềBắt buộcMô tảGiá trị
X-API-KEYKhóa API của bạnstring
X-Real-IPĐịa chỉ IP từ danh sách trắngĐịa chỉ IP
X-FormatKhôngĐịnh dạng phản hồi (mặc định: JSON đầy đủ)now, compact, short, short1h, count

Tham số truy vấn

Tham sốLoạiMặc địnhMô tả
servicesstringallBộ lọc danh sách dịch vụ cần bao gồm, phân tách bằng dấu phẩy

Dịch vụ khả dụng

Dịch vụMô tả
energy_1hGiá ủy quyền energy 1 giờ
energy_5mGiá ủy quyền energy 5 phút
hostTỷ giá ủy quyền Host energy
amlGiá kiểm tra địa chỉ AML
bandwidthGiá thuê Bandwidth — tùy chọn (opt-in): chỉ được trả về khi được yêu cầu rõ ràng qua ?services=bandwidth (không nằm trong phản hồi mặc định)

Yêu cầu mẫu

cURL — Phản hồi đầy đủ

bash
curl -X GET https://netts.io/apiv2/pricing \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

cURL — Lọc theo dịch vụ

bash
# Only energy 1h prices
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

# Energy 1h + AML
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h,aml" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

# Host prices only
curl -X GET "https://netts.io/apiv2/pricing?services=host" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

# Bandwidth rental prices (opt-in — must be requested explicitly)
curl -X GET "https://netts.io/apiv2/pricing?services=bandwidth" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

Python

python
import requests

url = "https://netts.io/apiv2/pricing"
headers = {
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip"
}

response = requests.get(url, headers=headers)
data = response.json()

if data.get("success"):
    print(f"API version: {data['version']}")
    print(f"TRX/USD rate: {data['data']['trx_rate_usd']}")

    services = data["data"]["services"]

    for svc_name, svc_data in services.items():
        pricing_type = svc_data.get("pricing_type")
        print(f"\n--- {svc_name} ({pricing_type}) ---")

        if pricing_type == "periodic":
            for period in svc_data["periods"]:
                marker = " <-- current" if period["is_current"] else ""
                print(f"  {period['label']}: {period['price']} {svc_data['unit']}{marker}")

        elif pricing_type == "flat_rates":
            for rate, price in svc_data["rates"].items():
                print(f"  {rate}: {price} {svc_data['unit']}")

        elif pricing_type == "provider_based":
            for name, info in svc_data["providers"].items():
                status = "available" if info["available"] else "unavailable"
                print(f"  {name}: {info['price']} {svc_data['unit']} - {status}")

Python — Lọc dịch vụ

python
params = {"services": "energy_1h,aml"}
response = requests.get(url, headers=headers, params=params)

Cấu trúc phản hồi

Các trường cấp cao nhất

TrườngLoạiMô tả
successbooleantrue đối với các yêu cầu thành công
versionstringPhiên bản API (ví dụ: "2.1")
timestampstringThời gian máy chủ theo chuẩn ISO 8601 UTC
dataobjectDữ liệu phản hồi

Các trường dữ liệu

TrườngLoạiMô tả
data.trx_rate_usdnumberTỷ giá hối đoái TRX/USD hiện tại
data.units_metaobjectThông tin quy đổi đơn vị có thể đọc bằng máy
data.servicesobjectBản đồ các dịch vụ được yêu cầu kèm dữ liệu định giá

Thông tin meta về đơn vị

Cho phép máy khách chuyển đổi giữa các đơn vị theo lập trình:

json
{
    "units_meta": {
        "sun": {"base": "trx", "multiplier": 1000000},
        "trx": {"base": "trx", "multiplier": 1},
        "usdt": {"base": "usdt", "multiplier": 1}
    }
}

Để quy đổi từ SUN sang TRX: trx_price = sun_price / units_meta.sun.multiplier

Các trường chung của dịch vụ

Mỗi dịch vụ đều bao gồm các trường sau:

TrườngLoạiMô tả
unitstringĐơn vị giá (sun, trx, usdt)
pricing_typestringCách phân tích cú pháp dịch vụ này (xem bên dưới)
descriptionstringMô tả dễ đọc cho con người
cache_ttlintegerTần suất làm mới dữ liệu này (giây)

Các loại định giá

Trường pricing_type cho máy khách biết cách phân tích cú pháp từng dịch vụ:

LoạiCấu trúcĐược sử dụng bởi
periodicMảng periods[] với giá theo thời gianenergy_1h, energy_5m
flat_ratesĐối tượng rates{} với các khóa biểu phí được đặt tênhost
provider_basedĐối tượng providers{} chứa dữ liệu nhà cung cấpaml
tiered_by_amount_and_periodtiers[] theo phạm vi số lượng, mỗi tier có periods[]bandwidth

Dịch vụ: energy_1h / energy_5m

pricing_type: periodic

TrườngLoạiMô tả
current_periodstringSlug của khoảng thời gian đang hoạt động hiện tại
periods[]arrayTất cả các khoảng thời gian định giá (động, được tải từ DB)
periods[].idstringĐịnh danh duy nhất của khoảng thời gian (slug)
periods[].labelstringTên khoảng thời gian dễ đọc
periods[].startstringThời gian bắt đầu khoảng thời gian (HH:MM UTC)
periods[].endstringThời gian kết thúc khoảng thời gian (HH:MM UTC)
periods[].is_currentbooleanLiệu khoảng thời gian này có đang hoạt động hay không
periods[].priceintegerGiá cho mỗi đơn vị energy tính bằng SUN
periods[].tiersarray|nullCác bậc định giá theo khối lượng (xem Bậc giá)

Khoảng thời gian động

Số lượng khoảng thời gian, phạm vi thời gian, nhãn và giá đều mang tính động và được quản lý ở phía máy chủ. Không mã hóa cứng (hardcode) ID hoặc số lượng khoảng thời gian. Luôn lặp qua mảng periods.


Dịch vụ: host

pricing_type: flat_rates

TrườngLoạiMô tả
rates.standard_65knumberMức giá tiêu chuẩn cho 65k energy (TRX)
rates.standard_131k_initialnumberMức giá tiêu chuẩn cho 131k energy, kích hoạt ban đầu (TRX)
rates.frequent_65knumberMức giá thường xuyên cho 65k energy (TRX)
rates.frequent_131knumberMức giá thường xuyên cho 131k energy (TRX)

Dịch vụ: aml

pricing_type: provider_based

TrườngLoạiMô tả
providersobjectBản đồ các nhà cung cấp AML (động, có thể thay đổi)
providers[name].pricenumberGiá kiểm tra tính bằng USDT
providers[name].price_trxnumberGiá kiểm tra được quy đổi sang TRX theo tỷ giá hiện tại
providers[name].availablebooleanLiệu nhà cung cấp có hạn ngạch khả dụng hay không

Nhà cung cấp động

Các nhà cung cấp AML được tải từ cơ sở dữ liệu. Các nhà cung cấp mới có thể xuất hiện hoặc các nhà cung cấp hiện có có thể ngừng khả dụng. Luôn lặp qua đối tượng providers.


Dịch vụ: bandwidth

pricing_type: tiered_by_amount_and_period

Tùy chọn & quyền truy cập

Giá Bandwidth chỉ được trả về khi được yêu cầu rõ ràng qua ?services=bandwidth — nó không phải là một phần của phản hồi mặc định. Bản thân điểm cuối thuê Bandwidth khả dụng theo yêu cầu; hãy liên hệ bộ phận hỗ trợ để được cấp quyền truy cập. Xem Thuê Bandwidth.

Giá thuê Bandwidth phụ thuộc vào số lượng đặt hàng (bậc đơn vị), thời hạn thuê (ví dụ: 5m / 1h), khung giờ trong ngày (UTC) và ngày trong tuần. Giá cơ sở tính bằng SUN trên mỗi đơn vị; ngoài mức giá cơ sở, các khoản phụ phí cố định (bằng TRX) có thể được áp dụng — tất cả các giá trị đều được trả về trong phản hồi.

Phản hồi cung cấp cả chế độ xem thuận tiện (tiers — giá cho khung giờ/ngày hiện tại) và lưới biểu phí đầy đủ (windows + schedule — mọi khung giờ trên tất cả các ngày trong tuần).

Định dạng thích ứng — không mã hóa cứng

Lưới định giá hoàn toàn hướng dữ liệu và có thể thay đổi bất kỳ lúc nào: số lượng khung thời gian, nhãn của chúng, thời gian bắt đầu/kết thúc, tập hợp các thời hạn thuê (các thời hạn mới có thể được thêm vào hoặc loại bỏ), các bậc số lượng, phân chia theo ngày trong tuần và chính bản thân mức giá. Máy khách phải lặp qua các mảng được trả về (windows, schedule, tiers, periods) và khớp theo giá trị — tuyệt đối không giả định số lượng cố định, nhãn cố định, thời gian cố định hoặc id thời hạn cố định. Mã được viết theo cách này sẽ tiếp tục hoạt động khi lịch trình thay đổi.

TrườngLoạiMô tả
unitstringsun_per_unit
windowstringNhãn khung giờ trong ngày hiện tại (UTC)
current_day_of_weekintegerNgày trong tuần hiện tại, ISO 1=Thứ Hai … 7=Chủ Nhật (UTC)
tiers[]arrayCác bậc số lượng cho khung giờ/ngày hiện tại (thuận tiện; cùng cấu trúc như bên trong schedule)
windows[]arrayDanh mục tất cả các khung giờ trong ngày (có thể tăng/giảm/dịch chuyển)
windows[].labelstringNhãn khung giờ
windows[].start / .endstringThời gian bắt đầu/kết thúc khung giờ HH:MM UTC (một khung giờ có thể qua nửa đêm, nghĩa là start > end)
schedule[]arrayLưới biểu phí đầy đủ — một mục cho mỗi kết hợp (ngày trong tuần × khung giờ)
schedule[].day_of_weekintegerNgày trong tuần theo chuẩn ISO 17
schedule[].windowstringNhãn khung giờ (khớp với một windows[].label)
schedule[].period_start / .period_endstringHH:MM UTC
schedule[].is_currentbooleantrue đối với phân đoạn đang hoạt động ngay lúc này
schedule[].tiers[]arrayCác bậc số lượng cho phân đoạn này
tiers[].amount_minintegerGiới hạn dưới của bậc (bao gồm)
tiers[].amount_maxinteger|nullGiới hạn trên của bậc (không bao gồm). null = không giới hạn
tiers[].periods[]arrayGiá theo từng thời hạn thuê trong bậc
tiers[].periods[].idstringID thời hạn thuê (ví dụ: 5m, 1h) — có thể thay đổi/mở rộng
tiers[].periods[].rental_secondsintegerĐộ dài thời hạn tính bằng giây
tiers[].periods[].priceintegerGiá cho mỗi đơn vị Bandwidth tính bằng SUN
surchargesobjectCác khoản phụ phí cố định cộng thêm vào giá của khách hàng (TRX) — xem bên dưới
limitsobjectGiới hạn đơn hàng: min_units, max_units

Phụ phí

TrườngLoạiMô tả
surcharges.small_order_threshold_unitsintegerCác đơn hàng có amount dưới giá trị này sẽ chịu phụ phí đơn hàng nhỏ
surcharges.small_order_surcharge_trxnumberCộng thêm (TRX) cho các đơn hàng ủy quyền nhỏ — bù đắp cho việc ủy quyền + thu hồi trên chuỗi
surcharges.trx_send_surcharge_trxnumberCộng thêm (TRX) khi đơn hàng được thực hiện bằng cách gửi TRX — bù đắp cho phí chuyển khoản TRX

Phản hồi mẫu

json
{
    "bandwidth": {
        "unit": "sun_per_unit",
        "pricing_type": "tiered_by_amount_and_period",
        "description": "Bandwidth delegation rental",
        "cache_ttl": 30,

        "window": "<current window label>",
        "current_day_of_week": 7,
        "tiers": [
            {
                "amount_min": 400,
                "amount_max": 1000,
                "periods": [
                    {"id": "5m", "rental_seconds": 300,  "price": "<price_sun>"},
                    {"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
                ]
            },
            {"amount_min": 1000, "amount_max": 3000, "periods": ["..."]},
            {"amount_min": 3000, "amount_max": null,  "periods": ["..."]}
        ],

        "windows": [
            {"label": "<window label>", "start": "01:00", "end": "09:00"},
            {"label": "<window label>", "start": "14:00", "end": "00:00"}
        ],
        "schedule": [
            {
                "day_of_week": 1,
                "window": "<window label>",
                "period_start": "01:00",
                "period_end": "09:00",
                "is_current": false,
                "tiers": [
                    {"amount_min": 400, "amount_max": 1000, "periods": [
                        {"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
                        {"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
                    ]}
                ]
            }
        ],

        "surcharges": {
            "small_order_threshold_units": 1000,
            "small_order_surcharge_trx": "<trx>",
            "trx_send_surcharge_trx": "<trx>"
        },
        "limits": {"min_units": 400, "max_units": 5000}
    }
}

schedule chứa một mục cho mọi kết hợp (ngày trong tuần × khung giờ) — hãy lặp qua nó để hiển thị một lịch giá đầy đủ. Chính xác một mục có is_current: true.

Logic máy khách (tính giá đơn hàng)

Sử dụng tiers để lấy "mức giá ngay lúc này". Để tra cứu giá cho một thời điểm khác, hãy chọn mục schedule phù hợp theo ngày trong tuần + khung giờ có khoảng [period_start, period_end) chứa thời gian đó (lưu ý rằng một khung giờ có thể qua nửa đêm khi start > end), sau đó sử dụng tiers của mục đó.

# price for the current moment:
for tier in bandwidth.tiers:
    if tier.amount_min <= amount < (tier.amount_max or infinity):
        for p in tier.periods:
            if p.id == requested_period:        # match by value, not by index
                base_trx = (p.price / units_meta.sun.multiplier) * amount
if amount < surcharges.small_order_threshold_units:
    base_trx += surcharges.small_order_surcharge_trx      # delegation orders
# TRX-send fulfillment branch instead:
#   trx_branch_trx = base_trx_for_smallest_tier_shortest_period + surcharges.trx_send_surcharge_trx

# price for an arbitrary weekday/time: same logic, but first select the schedule[] entry
# where day_of_week matches and the time falls in [period_start, period_end).

Tập trung & mang tính động

Giá Bandwidth, khung giờ, phân chia theo ngày trong tuần và phụ phí đều được quản lý ở phía máy chủ (DB) và có thể thay đổi. Luôn lặp qua windows, schedule, tiersperiods từ phản hồi và so khớp theo giá trị — không mã hóa cứng số lượng, nhãn, thời gian hoặc id thời hạn. Phí cộng thêm cho người dùng SUB không áp dụng cho Bandwidth.


Bậc giá

Hiện tại tiersnull đối với tất cả các khoảng thời gian. Khi định giá theo khối lượng được kích hoạt, trường này sẽ chứa một mảng các đối tượng bậc giá:

json
{
    "tiers": [
        {
            "min_energy": 0,
            "max_energy": 64999,
            "price": "<price_sun>",
            "label": "standard"
        },
        {
            "min_energy": 65000,
            "max_energy": 130999,
            "price": "<price_sun>",
            "label": "65k"
        },
        {
            "min_energy": 131000,
            "max_energy": 131000,
            "price": "<price_sun>",
            "label": "131k"
        },
        {
            "min_energy": 131001,
            "max_energy": null,
            "price": "<price_sun>",
            "label": "bulk"
        }
    ]
}

Lược đồ bậc giá

TrườngLoạiMô tả
min_energyintegerSố lượng energy tối thiểu cho bậc này (bao gồm)
max_energyinteger|nullSố lượng energy tối đa cho bậc này (bao gồm). null = không giới hạn
priceintegerGiá cho mỗi đơn vị energy tính bằng SUN cho bậc này
labelstringĐịnh danh của bậc

Logic máy khách

if tiers != null:
    find the tier where min_energy <= order_amount <= max_energy
    use that tier's price
else:
    use the flat price field for all order amounts

Định dạng phản hồi rút gọn

Sử dụng tiêu đề X-Format để nhận các phản hồi văn bản rút gọn. Các phản hồi này trả về giá của khoảng thời gian đang hoạt động hiện tại từ energy_1h.

X-Format: now / compact / short

bash
curl -H "X-API-KEY: your_key" -H "X-Format: now" https://netts.io/apiv2/pricing
text
<Period>: price=<N> sun, 65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)

X-Format: short1h

Tương tự nhưng không có nhãn khoảng thời gian và giá trên mỗi đơn vị.

bash
curl -H "X-API-KEY: your_key" -H "X-Format: short1h" https://netts.io/apiv2/pricing
text
65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)

X-Format: count

Định giá đơn hàng số lượng lớn cho 1, 2, 3, 5, 10, 20 đơn hàng.

bash
curl -H "X-API-KEY: your_key" -H "X-Format: count" https://netts.io/apiv2/pricing
text
1-<X.XXX> TRX (<X.XX>$), 2-<X.XXX> TRX (<X.XX>$), ...

Công thức tính toán

TRX cost = (price_sun / units_meta.sun.multiplier) x energy_amount
USD cost = TRX_cost x trx_rate_usd

Phí cộng thêm cho người dùng SUB

Người dùng SUB sẽ tự động nhận được giá đã áp dụng mức phí cộng thêm của tài khoản cha. API luôn trả về mức giá cuối cùng cho người dùng đã xác thực — không cần tính toán phía máy khách.

Phản hồi lỗi

Lỗi có thể bắt nguồn từ hai tầng với các định dạng khác nhau. Ứng dụng phía máy khách của bạn nên xử lý cả hai.

Lỗi ứng dụng (từ API)

Các lỗi cấp độ ứng dụng sử dụng định dạng success/error tiêu chuẩn:

Dịch vụ không hợp lệ (400)

json
{
    "success": false,
    "error": {
        "code": 4002,
        "message": "Unknown services: invalid_service"
    }
}

Lỗi xác thực (401)

Được trả về bởi ứng dụng khi thiếu khóa API hoặc IP không nằm trong danh sách trắng:

json
{
    "detail": {
        "code": -1,
        "msg": "Invalid API key or IP not in whitelist"
    }
}

Định dạng khác biệt

Lỗi xác thực sử dụng định dạng detail nguyên bản của FastAPI chứ không phải cấu trúc success/error. Điều này là do lỗi được kích hoạt trước khi yêu cầu đến được logic ứng dụng.

Không tìm thấy người dùng (404)

json
{
    "detail": {
        "code": -1,
        "msg": "User not found"
    }
}

Lỗi máy chủ nội bộ (500)

json
{
    "success": false,
    "error": {
        "code": 5001,
        "message": "Failed to retrieve pricing data"
    }
}

Lỗi Gateway (từ Kong)

Các lỗi này được trả về bởi API gateway trước khi yêu cầu đến được ứng dụng. Chúng sử dụng định dạng riêng của Kong:

Vượt quá giới hạn tỷ lệ yêu cầu (429)

json
{
    "message": "API rate limit exceeded"
}

Hết thời gian chờ Gateway (504)

json
{
    "message": "An invalid response was received from the upstream server"
}

Tham chiếu mã lỗi

Mô tảTrạng thái HTTPNguồn
-1Khóa API không được cung cấp401Ứng dụng
-1Khóa API không hợp lệ hoặc IP không nằm trong danh sách trắng401Ứng dụng
-1Không tìm thấy người dùng404Ứng dụng
4002Dịch vụ không xác định trong tham số ?services=400Ứng dụng
5000Lỗi máy chủ nội bộ500Ứng dụng
5001Không thể truy xuất dữ liệu định giá500Ứng dụng
5002Dữ liệu giá không khả dụng cho định dạng rút gọn500Ứng dụng
-Vượt quá giới hạn tỷ lệ yêu cầu API429Kong

Xử lý lỗi khuyến nghị cho máy khách

python
response = requests.get(url, headers=headers)
data = response.json()

if response.status_code == 200 and data.get("success"):
    # Success — process data
    services = data["data"]["services"]
elif response.status_code == 429:
    # Kong rate limit — back off and retry
    retry_after = response.headers.get("Retry-After", "60")
    time.sleep(int(retry_after))
elif "detail" in data:
    # FastAPI auth/validation error
    detail = data["detail"]
    if isinstance(detail, dict):
        print(f"Error {detail.get('code')}: {detail.get('msg')}")
    else:
        print(f"Error: {detail}")
elif "error" in data:
    # Application error
    err = data["error"]
    print(f"Error {err.get('code')}: {err.get('message')}")
else:
    print(f"Unexpected response: {response.status_code}")

Di chuyển từ /apiv2/prices

Khía cạnh/apiv2/prices (cũ)/apiv2/pricing (mới)
Khoảng thời gian5 cố địnhĐộng từ DB
Bậc giá3 được mã hóa cứngGiá đơn lẻ + tiers trong tương lai
Các biến thể thời lượngKhông khả dụngenergy_5m
Giá AMLĐiểm cuối riêng biệtĐược bao gồm thông qua ?services=aml
Giá HostTrộn lẫn trong phản hồiDịch vụ host riêng biệt
Lọc dịch vụKhông khả dụngTham số ?services=
Chuyển đổi đơn vịKhông có tài liệuunits_meta trong phản hồi
Thông tin bộ nhớ đệmKhông có tài liệucache_ttl cho mỗi dịch vụ
Định dạng phản hồi{"status": "success", ...}{"success": true, "version": "2.1", "data": {...}}

Giới hạn tỷ lệ yêu cầu

Áp dụng cùng giới hạn tỷ lệ yêu cầu như /apiv2/prices (được cấu hình trong Kong gateway).

Ghi chú

  • Tất cả giá energy đều tính bằng SUN — sử dụng units_meta để chuyển đổi
  • Giá Host tính bằng TRX
  • Giá AML tính bằng USDT kèm theo giá trị chuyển đổi TRX
  • Tất cả thời gian đều tính theo UTC
  • Sử dụng cache_ttl cho mỗi dịch vụ để biết tần suất làm mới dữ liệu
  • Sử dụng pricing_type để xác định cách phân tích cú pháp từng dịch vụ
  • Các khoảng thời gian, nhà cung cấp, tỷ giá và tất cả giá trị đều mang tính động — không mã hóa cứng chúng
  • Định giá Bandwidth là tùy chọn (opt-in) (?services=bandwidth), sử dụng tiered_by_amount_and_period kèm theo surcharges, và không chịu phí cộng thêm cho người dùng SUB