List Card Configs
Returns the packages available under a card header (fees, deposits, monthly fee, etc.). The client picks one based on cost.
Only packages the current account can actually apply with are returned: packages an account manager has closed for this account are omitted, and the header_id must be one returned by /card_headers/list — an account-manager-controlled header your account cannot apply for is rejected with 400 account_manager_bind_required / account_manager_unavailable / account_manager_open_disabled.
Endpoint
| Item | Value |
|---|---|
| Method | POST |
| Path | /api/v1/openapi/card_configs/list |
| Auth | HMAC |
| Idempotency | Not required |
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
header_id | string | ✅ | hdr_<id> format (from List Card Headers) |
Example Request
json
{ "header_id": "hdr_5" }Response Fields
Each item in data.list[]:
| Field | Type | Description |
|---|---|---|
package_id | string | pkg_<id> format (used in apply) |
name | object | i18n name |
currency | string | Card currency (ISO 4217) |
open_card_fee | string (decimal) | Card-open fee |
open_card_fee_asset | string | Asset symbol for the fee (e.g. USDT) |
initial_deposit | string (decimal) | Initial deposit base — credited 1:1 with no fee at open; also the default first deposit when first_deposit_amount is omitted |
min_first_deposit | string (decimal) | Effective minimum total first deposit (max(initial_deposit, package/header minimum)), base included. first_deposit_amount on apply must be ≥ this; when it exceeds initial_deposit, apply must send first_deposit_amount explicitly |
min_recharge | string (decimal) | Min single recharge |
max_recharge | string (decimal) | Max single recharge |
monthly_fee | string (decimal) | Monthly fee |
monthly_fee_asset | string | Monthly fee asset symbol |
recharge_fee | FeeSpec | Recharge fee |
close_fee | FeeSpec | Close fee |
authorization_fee | FeeSpec | Authorization transaction fee |
cross_border_fee | FeeSpec | Cross-border fee |
refund_fee | FeeSpec | Refund fee |
is_default | bool | Recommended default package |
description | object | i18n description |
kyc_requirement | object | The effective platform KYC requirement for opening a card on this package (header > package > card-type three-level merge — the exact rules apply validates against). Same shape as kyc_requirement on the header list; when require_kyc=true and the account does not meet it, apply returns 400 kyc_required |
FeeSpec
| Field | Type | Description |
|---|---|---|
type | string | fixed / percent / fixed_plus_percent / unknown |
rate | string (decimal) | Percentage rate (when type=percent / fixed_plus_percent) |
fixed | string (decimal) | Fixed fee (when type=fixed / fixed_plus_percent) |
asset_symbol | string | Fee asset symbol (e.g. USDT) |
Default package selection
- Prefer
is_default == true - Otherwise sort by
(open_card_fee ASC, min_recharge ASC)and take the first
Example Response
json
{
"code": 200,
"message": "OK",
"data": {
"list": [
{
"package_id": "pkg_12",
"name": { "zh-CN": "基础套餐", "en-US": "Basic" },
"currency": "USD",
"open_card_fee": "5.00",
"open_card_fee_asset": "USDT",
"initial_deposit": "10.00",
"min_first_deposit": "10.00",
"min_recharge": "10.00",
"max_recharge": "10000.00",
"monthly_fee": "0",
"monthly_fee_asset": "USDT",
"recharge_fee": {
"type": "percent",
"rate": "0.02",
"fixed": "0",
"asset_symbol": "USDT"
},
"close_fee": {
"type": "fixed", "rate": "0", "fixed": "1.00", "asset_symbol": "USDT"
},
"authorization_fee": {
"type": "fixed", "rate": "0", "fixed": "0.20", "asset_symbol": "USDT"
},
"cross_border_fee": {
"type": "percent", "rate": "0.015", "fixed": "0", "asset_symbol": "USDT"
},
"refund_fee": {
"type": "fixed", "rate": "0", "fixed": "0", "asset_symbol": "USDT"
},
"is_default": true,
"description": {
"zh-CN": "适合个人小额消费",
"en-US": "For personal small spending"
},
"kyc_requirement": {
"require_kyc": true,
"kyc_type": "personal",
"kyc_level": "l2"
}
}
],
"total": 3,
"page": 1,
"page_size": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}Common Errors
| HTTP | message_key | Description |
|---|---|---|
| 400 | openapi_invalid_header_id | header_id format error or not found |
| 400 | openapi_card_type_not_supported | Header's card type not in the virtual range |
| 400 | account_manager_bind_required | Account-manager-controlled header and your account has no account manager bound |
| 400 | account_manager_unavailable | The account manager bound to your account is no longer active; contact platform support |
| 400 | account_manager_open_disabled | Your account manager has not opened this header for your account (such headers are not listed by /card_headers/list) |
| 401 | openapi_invalid_credentials | Auth failure |
| 500 | openapi_list_card_configs_failed | Server error |