# Cards

## Support Bins

```
POST /merchant/core/mcb/card/v2/cardTypes
```

**Request**

| Param | Type | Require | Remark |
| ----- | ---- | ------- | ------ |
|       |      |         |        |

**Response**

<table><thead><tr><th width="243">Param</th><th width="119">Type</th><th width="99">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td></tr><tr><td>organization</td><td>String</td><td>true</td><td>Card organization.<br><code>Visa</code> <code>MasterCard</code> <code>Discover</code></td></tr><tr><td>country</td><td>String</td><td>true</td><td>Issue country. example: US</td></tr><tr><td>mode</td><td>String</td><td>true</td><td>Card model. <br><code>PREPAID_CARD</code> prepaid card mode; <code>BUDGET_CARD</code> shared card mode</td></tr><tr><td>bankCardBin</td><td>String</td><td>true</td><td>Card Bin. example: 531993</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Card type. <br><code>Virtual</code> <code>Physical</code></td></tr><tr><td>category</td><td>String</td><td>true</td><td>Card category.<br><code>GIFT</code> <code>PURCHASE</code> <code>SUBSCRIPTION</code> <code>PHYSICAL</code></td></tr><tr><td>cardName</td><td>String</td><td>true</td><td>Card name</td></tr><tr><td>cardDesc</td><td>String</td><td>true</td><td>Card desc</td></tr><tr><td>cardPrice</td><td>BigDecimal</td><td>true</td><td>Card fee. example: 5</td></tr><tr><td>cardPriceCurrency</td><td>String</td><td>true</td><td>Card fee currency. example: USD</td></tr><tr><td>support</td><td>List</td><td>true</td><td>Supporting merchant. For reference only</td></tr><tr><td>risk</td><td>List</td><td>true</td><td>High risk merchant. Consumption in this scenario will trigger card cancellation risk control</td></tr><tr><td>needCardHolder</td><td>Boolean</td><td>true</td><td>Cardholder is required. If it is equal to true, Need to call the [<a href="../card-holder#cardholder-create-v2"><strong>cardholder create -v2</strong></a>] interface and create cardholder</td></tr><tr><td>supportHolderRegin</td><td>List</td><td>true</td><td>Nationality. country/region code of the cardholder supported.<br>ISO 3166-1 alpha-<em>2</em></td></tr><tr><td>supportHolderAreaCode</td><td>List</td><td>true</td><td>Mobile area code supported by the cardholder</td></tr><tr><td>needDepositForActiveCard</td><td>Boolean</td><td>true</td><td>An initial deposit is required when create the card. <br><code>true</code>: Initial deposit is required.<br><code>false</code>: Initial deposit is not supported; </td></tr><tr><td>depositAmountMinQuotaForActiveCard</td><td>BigDecimal</td><td>true</td><td>Minimum inital deposit amount when create card</td></tr><tr><td>depositAmountMaxQuotaForActiveCard</td><td>BigDecimal</td><td>true</td><td>Maximum inital deposit amount when create card</td></tr><tr><td>fiatCurrency</td><td>String</td><td>true</td><td>Card currency. example: USD</td></tr><tr><td>balanceRetentionQuota</td><td>BigDecimal</td><td>true</td><td>Minimum balance to retain when calling the withdrawal API</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>online</code> <code>offline</code></td></tr><tr><td>rechargeCurrency</td><td>String</td><td>true</td><td>Deposit currency</td></tr><tr><td>rechargeMinQuota</td><td>BigDecimal</td><td>true</td><td>Minimum deposit amount</td></tr><tr><td>rechargeMaxQuota</td><td>BigDecimal</td><td>true</td><td>Maximum deposit amount</td></tr><tr><td>rechargeFeeRate</td><td>BigDecimal</td><td>true</td><td>Deposit fee rate. 1=1%</td></tr><tr><td>rechargeFixedFee</td><td>BigDecimal</td><td>true</td><td>Fixed deposit fee</td></tr><tr><td>rechargeDigital</td><td>Integer</td><td>true</td><td>The length of the decimal point of the amount when deposit</td></tr><tr><td>enableActiveCard</td><td>Boolean</td><td>true</td><td>Enable the create card function</td></tr><tr><td>enableDeposit</td><td>Boolean</td><td>true</td><td>Enable the deposit card function</td></tr><tr><td>enableFreeze</td><td>Boolean</td><td>true</td><td>Enable the freeze card function</td></tr><tr><td>enableUnFreeze</td><td>Boolean</td><td>true</td><td>Enable the unfreeze card function</td></tr><tr><td>metadata</td><td>Object</td><td>true</td><td>Meta data</td></tr><tr><td>metadata.cardHolderMaxCardLimit</td><td>Integer</td><td>true</td><td><strong>First</strong> <strong>needCardHolder equal true:</strong> Maximum number of cards a cardholder can own</td></tr><tr><td>metadata.cardHolderModel</td><td>String</td><td>true</td><td><p>Cardholder model.<br><code>B2B</code>  <code>B2C</code></p><p><strong>First</strong> <strong>needCardHolder equal true:</strong> cardholder needs to be created, and different cardholder parameters need to be passed according to B2B or B2C.</p><p></p><p>call the [<a href="../card-holder#cardholder-create-v2"><strong>cardholder create -v2</strong></a>] interface and create cardholder<br><br>The value is merely an internally defined code identifier. It has no relation to company or individual.</p></td></tr><tr><td>metadata.supportSettingNoPinPaymentAmount</td><td>Boolean</td><td>false</td><td>Set the amount limit for password-free payment (Physical card)</td></tr><tr><td>metadata.defaultNoPinPaymentAmount</td><td>BigDecimal</td><td>false</td><td>Default amount for password-free payment(Physical card)</td></tr><tr><td>metadata.noPinPaymentAmountMinQuota</td><td>BigDecimal</td><td>false</td><td>Minimum amount for password-free payment(Physical card)</td></tr><tr><td>metadata.noPinPaymentAmountMaxQuota</td><td>BigDecimal</td><td>false</td><td>Maximum amount for password-free payment(Physical card)</td></tr><tr><td>metadata.spendingControls</td><td>List</td><td>false</td><td>Spending controls</td></tr><tr><td>metadata.spendingControls[0].interval</td><td>String</td><td>true</td><td>Spending interval.<br><code>PER_TRANSACTION</code></td></tr><tr><td>metadata.spendingControls[0].amount</td><td>BigDecimal</td><td>true</td><td>Spending amount</td></tr><tr><td>metadata.spendingControls[0].supportSetting</td><td>Boolean</td><td>true</td><td>Support set spending<br><code>true</code>  <code>false</code></td></tr><tr><td>metadata.supportSettingMcc</td><td>Boolean</td><td>true</td><td>Support setting allowed mcc or blocked mcc<br><code>true</code>  <code>false</code></td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    [
        {
            "cardTypeId": 111002,
            "organization": "Visa",
            "country": "US",
            "bankCardBin": "531993",
            "type": "Virtual",
            "category": "SUBSCRIPTION",
            "cardName": "531993",
            "cardDesc": "Adobe,Aliexpress,Amazon.（Not support PayPal, Grab, ONLYFANS, Patreon, Etsy商户消费，否则会立刻销卡并冻结；需要Apple服务可选择5319卡片；）",
            "cardPrice": "10",
            "cardPriceCurrency": "USD",
            "support":
            [
                "Adobe",
                "Aliexpress"
            ],
            "risk":
            [
                "BOLT.EU",
                "shenzhenshifenqil"
            ],
            "supportHolderRegin":
            [
                "US"
            ],
            "supportHolderAreaCode":
            [
                "+60",
                "+1"
            ],
            "needCardHolder": false,
            "needDepositForActiveCard": true,
            "depositAmountMinQuotaForActiveCard": "10",
            "depositAmountMaxQuotaForActiveCard": "100000",
            "fiatCurrency": "USD",
            "balanceRetentionQuota": 5,
            "status": "online",
            "rechargeCurrency": "USD",
            "rechargeMinQuota": 20,
            "rechargeMaxQuota": 100000,
            "rechargeFeeRate": 1,
            "rechargeFixedFee": 0,
            "rechargeDigital": 2,
            "enableActiveCard": true,
            "enableDeposit": true,
            "enableFreeze": true,
            "enableUnFreeze": true,
            "metadata":
            {
                "cardHolderMaxCardLimit": 500,
                "cardHolderModel": "B2B",
                "supportSettingNoPinPaymentAmount": false,
                "defaultNoPinPaymentAmount": 500,
                "noPinPaymentAmountMinQuota": 0,
                "noPinPaymentAmountMaxQuota": 2000,
                "spendingControls":
                [
                    {
                        "interval": "PER_TRANSACTION",
                        "amount": "20000",
                        "supportSetting": true
                    }
                ],
                "supportSettingMcc": true
            }
        }
    ]
}
```

## Create Card-Deprecated

{% hint style="info" %}
CardNo will be returned only when the card is successfully opened (status=success)
{% endhint %}

```
POST /merchant/core/mcb/card/openCard
```

**Request**

<table><thead><tr><th width="188">Param</th><th width="120">Type</th><th width="99">Required</th><th>Remark</th></tr></thead><tbody><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>holderId</td><td>Long</td><td>false</td><td>Cardholder id</td></tr><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td></tr><tr><td>amount</td><td>BigDecimal</td><td>false</td><td><p>The deposit amount of when create the card. </p><p></p><p>If not passed, the default value is equal to depositAmountMinQuotaForActiveCard (if the card BIN requires a first deposit) Value range: /merchant/core/mcb/card/v2/cardTypes interface <br><br>1. needDepositForActiveCard = true<br>2. depositAmountMinQuotaForActiveCard &#x3C;= amount &#x3C;= depositAmountMaxQuotaForActiveCard</p></td></tr><tr><td>cardNumber</td><td>String</td><td>false</td><td>Card number. Required when create physical card</td></tr><tr><td>accountId</td><td>Long</td><td>false</td><td>Account ID (All payments will be deducted from this account ID; please refer to the <a href="../../account#assets"><strong>account list interface</strong></a> to obtain it)</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="135">Type</th><th width="115">Required</th><th>Rmark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>true</td><td>Received Amount</td></tr><tr><td>receivedCurrency</td><td>String</td><td>true</td><td>Received Currency</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type.</p><p><code>create</code>: Create Card</p></td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; </p><p><code>success</code>: success; </p><p><code>fail</code>: failure</p></td></tr><tr><td>remark</td><td>String</td><td>true</td><td>Remark</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    [
        {
            "orderNo": "1852379830190366720",
            "merchantOrderNo": "T1852379826671345664",
            "cardNo": null,
            "currency": "USD",
            "amount": "15",
            "fee": "0",
            "receivedAmount": "0",
            "receivedCurrency": "USD",
            "type": "create",
            "status": "processing",
            "remark": null,
            "transactionTime": 1730476741729
        }
    ]
}
```

## Create Card-V2

```
POST /merchant/core/mcb/card/v2/createCard
```

**Request**

<table><thead><tr><th width="188">Param</th><th width="120">Type</th><th width="99">Required</th><th>Remark</th></tr></thead><tbody><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>holderId</td><td>Long</td><td>false</td><td>Cardholder id</td></tr><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>The deposit amount of  when create the card. depositAmountMinQuotaForActiveCard (if the card BIN requires a first deposit) Value range: /merchant/core/mcb/card/v2/cardTypes interface <br><br>1. needDepositForActiveCard = true<br>2. depositAmountMinQuotaForActiveCard &#x3C;= amount &#x3C;= depositAmountMaxQuotaForActiveCard</td></tr><tr><td>cardNumber</td><td>String</td><td>false</td><td>Card number. Required when create physical card</td></tr><tr><td>accountId</td><td>Long</td><td>false</td><td>Account ID (In shared card mode, the default wallet account ID is not transmitted. please refer to the <a href="../../account#assets"><strong>account list interface</strong></a> to obtain it)</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="163.87066650390625">Param</th><th width="123.528564453125">Type</th><th width="108.0208740234375">Required</th><th>Rmark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount. Initial deposit amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee. Initial deposit amount fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Received Amount. Initial deposit amount</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>Received Currency</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type.</p><p><code>create</code>: Create Card</p></td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; </p><p><code>success</code>: success; </p><p><code>fail</code>: failure</p></td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark. equal description, will remove</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "WB2025103119841257038691924352",
        "currency": "USD",
        "amount": 20,
        "fee": 0.1,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "create",
        "status": "wait_process",
        "description": null
        "remark": null,
        "transactionTime": 1730476741729
    }
}
```

## Card Info

```
POST /merchant/core/mcb/card/info
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>onlySimpleInfo</td><td>Boolean</td><td>false</td><td>Whether to return only the basic information of the card. Does not include the balance. Default is true</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="234">Param</th><th width="122">Type</th><th width="88">Required</th><th>Remark</th><th></th></tr></thead><tbody><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td><td></td></tr><tr><td>cardBankBin</td><td>String</td><td>true</td><td>Bank bin</td><td></td></tr><tr><td>holderId</td><td>Long</td><td>false</td><td>Cardholder id</td><td></td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td><td></td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>pending</code>: Pending</p><p><code>un_activated</code>: Waiting for activation; <br><code>Normal</code>: Normal; <br><code>Freeze</code>: Freeze; <br><code>Freezing</code>: Freezing;</p><p><code>UnFreezing</code>: Unfreezing</p><p><code>canceling</code>: Canceling<br><code>cancel</code>: Canceled<br><code>fail</code>: Fail. create card fail</p></td><td></td></tr><tr><td>blocked</td><td>Boolean</td><td>true</td><td><code>true</code> or <code>false</code>. Card be blocked</td><td></td></tr><tr><td>bindTime</td><td>Long</td><td>true</td><td>Card create time. Millisecond timestamp</td><td></td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark</td><td></td></tr><tr><td>balanceInfo</td><td>Object</td><td>false</td><td>Card balance information</td><td></td></tr><tr><td>balanceInfo.cardNo</td><td>String</td><td>true</td><td>Card id</td><td></td></tr><tr><td>balanceInfo.amount</td><td>BigDecimal</td><td>true</td><td>Available balance</td><td></td></tr><tr><td>balanceInfo.usedAmount</td><td>BigDecimal</td><td>false</td><td>Amount used. some cards bin not support</td><td></td></tr><tr><td>balanceInfo.currency</td><td>String</td><td>true</td><td>Currency</td><td></td></tr><tr><td>noPinPaymentAmount</td><td>BigDecimal</td><td>true</td><td>Physical card password-free payment amount limit</td><td></td></tr><tr><td>spendingControls</td><td>List</td><td>false</td><td>Spending controls</td><td></td></tr><tr><td>spendingControls[0].interval</td><td>String</td><td>true</td><td>Spending interval.<br><code>PER_TRANSACTION</code></td><td></td></tr><tr><td>spendingControls[0].amount</td><td>BigDecimal</td><td>true</td><td>Spending amount</td><td></td></tr><tr><td>riskControls</td><td>Object</td><td>false</td><td>Risk controls</td><td></td></tr><tr><td>riskControls.allowedMcc</td><td>List</td><td>false</td><td>Allowed MCC</td><td></td></tr><tr><td>riskControls.blockedMcc</td><td>List</td><td>false</td><td>Blocked MCC</td><td></td></tr><tr><td>customCategory</td><td>String</td><td>false</td><td>Purpose</td><td></td></tr><tr><td>holderInfo</td><td>Object</td><td>false</td><td>Cardholder Information</td><td></td></tr><tr><td>holderInfo.firstName</td><td>String</td><td>false</td><td>name</td><td></td></tr><tr><td>holderInfo.lastName</td><td>String</td><td>false</td><td>Surname</td><td></td></tr><tr><td>holderInfo.country</td><td>String</td><td>false</td><td>Country</td><td></td></tr><tr><td>holderInfo.state</td><td>String</td><td>false</td><td>State</td><td></td></tr><tr><td>holderInfo.town</td><td>String</td><td>false</td><td>Town</td><td></td></tr><tr><td>holderInfo.address</td><td>String</td><td>false</td><td>Address</td><td></td></tr><tr><td>holderInfo.addressLine2</td><td>String</td><td>false</td><td>AddressLine2</td><td></td></tr><tr><td>holderInfo.postCode</td><td>String</td><td>false</td><td>Post Code</td><td></td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "cardTypeId": 111040,
        "cardBankBin": "493724",
        "holderId": 10090,
        "cardNo": "WA202408181555232422322004",
        "status": "cancel",
        "blocked": false,
        "bindTime": 1723997214000,
        "remark": null,
        "noPinPaymentAmount": 500,
        "balanceInfo":
        {
            "cardNo": "WA202408181555232422322004",
            "amount": 10,
            "usedAmount": 1,
            "currency": "USD"
        },
        "customCategory":"XXXX",
        "holderInfo":
        {
            "firstName": "John",
            "lastName": "Zhang",
            "country": "The United States",
            "state": "Florida",
            "town": "Panama City Beach",
            "address": "301 Argonaut Street",
            "addressLine2": "XXXX XX",
            "postCode": "32413"
        },
        "spendingControls":
        [
            {
                "interval": "PER_TRANSACTION",
                "amount": 20000,
                "supportSetting": true
            }
        ],
        "riskControls":
        {
            "allowedMcc":
            [
                "6012",
                "7311"
            ]
        }
    }
}
```

## Card Info For Sensitive

```
POST /merchant/core/mcb/card/sensitive
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="131.09197998046875">Param</th><th width="85.18572998046875">Type</th><th width="106.532958984375">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNumber</td><td>String</td><td>true</td><td>Card number.The user's public key is encrypted and returned, and the merchant's private key is used to decrypt.<br><strong>Gift card not return.</strong></td></tr><tr><td>cvv</td><td>String</td><td>true</td><td>CVV. The user's public key is encrypted and returned, and the merchant's private key is used to decrypt.<br><strong>Gift card not return.</strong></td></tr><tr><td>expireDate</td><td>String</td><td>true</td><td>Expire date. The user's public key is encrypted and returned, and the merchant's private key is used to decrypt.<br><strong>Gift card not return.</strong></td></tr><tr><td>activateUrl</td><td>String</td><td>false</td><td>Card url. The user's public key is encrypted and returned, and the merchant's private key is used to decrypt.<br><strong>Gift card will return.</strong></td></tr></tbody></table>

**Example Response**

```json
{
  "success": true,
  "code": 200,
  "msg": "Success",
  "data": {
    "cardNumber": "bQoXms9ScNxy37b1JgyP1tJuFiAcGl6d+7jqn7LTZRzQMXjn00zaa/xKJp/8sotkcBjl/L/6LSImxhnF+yg6V3aDft+v1ikkYBdY9Wco042o/uPyUNtr0xW786ENyB8Z84teK3vWtLeU/TbixEygxrxl/ilE+COmJOItWCGE6bs=",
    // 689
    "cvv": "bQoXms9ScNxy37b1JgyP1tJuFiAcGl6d+7jqn7LTZRzQMXjn00zaa/xKJp/8sotkcBjl/L/6LSImxhnF+yg6V3aDft+v1ikkYBdY9Wco042o/uPyUNtr0xW786ENyB8Z84teK3vWtLeU/TbixEygxrxl/ilE+COmJOItWCGE6bs=",
    // 09/2028
    "expireDate": "gQldrvKSV3cWXuCbrUgtVF5EsCgxEAZQuivEuddeoo5M+5bF0AiJJbw8PWvvZZerRmcOmv/0dRv8uyeaSbUmCyQrDn6cploG60lCxGfnzSopv5pEO4UrK071tNzIa++mZ4IZ4tvtlMYlwo+y3d9JhIareLM21E1mH7aPn+WOk50=",
     // https://merchantdomain.com/card/jaognaogangoanwgawgawgagagagag
    "activateUrl": "gQldrvKSV3cWXuCbrUgtVF5EsCgxEAZQuivEuddeoo5M+5bF0AiJJbw8PWvvZZerRmcOmv/0dRv8uyeaSbUmCyQrDn6cploG60lCxGfnzSopv5pEO4UrK071tNzIa++mZ4IZ4tvtlMYlwo+y3d9JhIareLM21E1mH7aPn+WOk50="
  }
}
```

## Card Balance

```
POST /merchant/core/mcb/card/balanceInfo
```

**Reuqest**

<table><thead><tr><th width="151">Param</th><th width="119">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="151">Param</th><th width="122">Type</th><th width="94">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Available balance</td></tr><tr><td>usedAmount</td><td>BigDecimal</td><td>true</td><td>Amount used. some cards bin not support</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "cardNo": "FC202408181555232422322004",
        "amount": 10,
        "usedAmount": 1,
        "currency": "USD"
    }
}
```

## Card List

```
POST /merchant/core/mcb/card/list
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default is 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>status</td><td>String</td><td>false</td><td><p>Status. <br><code>pending</code>: Pending</p><p><code>un_activated</code>: Waiting for activation; <br><code>Normal</code>: Normal; <br><code>Freeze</code>: Freeze; <br><code>Freezing</code>: Freezing;</p><p><code>UnFreezing</code>: Unfreezing</p><p><code>canceling</code>: Canceling<br><code>cancel</code>: Canceled<br><code>fail</code>: Fail. create card fail</p></td></tr><tr><td>cardTypeId</td><td>Long</td><td>false</td><td>Card type id</td></tr><tr><td>holderId</td><td>Long</td><td>false</td><td>Cardholder id</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Card create time. Millisecond timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>Card create time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="234">Param</th><th width="122">Type</th><th width="88">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td></tr><tr><td>cardBankBin</td><td>String</td><td>true</td><td>Bank bin</td></tr><tr><td>holderId</td><td>Long</td><td>false</td><td>Cardholder id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>pending</code>: Pending</p><p><code>un_activated</code>: Waiting for activation; <br><code>Normal</code>: Normal; <br><code>Freeze</code>: Freeze; <br><code>Freezing</code>: Freezing;</p><p><code>UnFreezing</code>: Unfreezing</p><p><code>canceling</code>: Canceling<br><code>cancel</code>: Canceled<br><code>fail</code>: Fail. create card fail</p></td></tr><tr><td>blocked</td><td>Boolean</td><td>true</td><td><code>true</code> or <code>false</code>. Card be blocked</td></tr><tr><td>bindTime</td><td>Long</td><td>true</td><td>Card create time. Millisecond timestamp</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark</td></tr><tr><td>balanceInfo</td><td>Object</td><td>false</td><td>Card balance information</td></tr><tr><td>balanceInfo.cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>balanceInfo.amount</td><td>BigDecimal</td><td>true</td><td>Available balance</td></tr><tr><td>balanceInfo.usedAmount</td><td>BigDecimal</td><td>false</td><td>Amount used. some cards bin not support</td></tr><tr><td>balanceInfo.currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>noPinPaymentAmount</td><td>BigDecimal</td><td>true</td><td>Physical card password-free payment amount limit</td></tr><tr><td>spendingControls</td><td>List</td><td>false</td><td>Spending controls</td></tr><tr><td>spendingControls[0].interval</td><td>String</td><td>true</td><td>Spending interval.<br><code>PER_TRANSACTION</code></td></tr><tr><td>spendingControls[0].amount</td><td>BigDecimal</td><td>true</td><td>Spending amount</td></tr><tr><td>riskControls</td><td>Object</td><td>false</td><td>Risk controls</td></tr><tr><td>riskControls.allowedMcc</td><td>List</td><td>false</td><td>Allowed MCC</td></tr><tr><td>riskControls.blockedMcc</td><td>List</td><td>false</td><td>Blocked MCC</td></tr><tr><td>customCategory</td><td>String</td><td>false</td><td>Purpose</td></tr><tr><td>holderInfo</td><td>Object</td><td>false</td><td>Cardholder Information</td></tr><tr><td>holderInfo.firstName</td><td>String</td><td>false</td><td>Name</td></tr><tr><td>holderInfo.lastName</td><td>String</td><td>false</td><td>Surename</td></tr><tr><td>holderInfo.country</td><td>String</td><td>false</td><td>Country</td></tr><tr><td>holderInfo.state</td><td>String</td><td>false</td><td>State</td></tr><tr><td>holderInfo.town</td><td>String</td><td>false</td><td>Town</td></tr><tr><td>holderInfo.address</td><td>String</td><td>false</td><td>Address</td></tr><tr><td>holderInfo.addressLine2</td><td>String</td><td>false</td><td>Second row address</td></tr><tr><td>holderInfo.postCode</td><td>String</td><td>false</td><td>Post code</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "SUCCESS",
    "data":
    {
        "total": 45,
        "records":
        [
            {
                "cardTypeId": 111039,
                "cardBankBin":"493724",
                "cardNo": "WB202602102021097685055463424",
                "status": "Normal",
                "blocked": false,
                "bindTime": 1770702301000,
                "noPinPaymentAmount": "0",
                "balanceInfo":
                {
                    "cardNo": "WB202602102021097685055463424",
                    "amount": "23",
                    "currency": "USD"
                },
                "customCategory":"XXXX",
                "holderInfo":
                {
                    "firstName": "John",
                    "lastName": "Zhang",
                    "country": "The United States",
                    "state": "Florida",
                    "town": "Panama City Beach",
                    "address": "301 Argonaut Street",
                    "addressLine2": "XXXX XX",
                    "postCode": "32413"
                }
            },
            {
                "cardTypeId": 111028,
                "cardBankBin":"493724",
                "holderId": 62119,
                "cardNo": "WD202602102021093722503536640",
                "status": "Normal",
                "blocked": false,
                "bindTime": 1770701290000,
                "noPinPaymentAmount": "0",
                "spendingControls":
                [
                    {
                        "interval": "PER_TRANSACTION",
                        "amount": "10"
                    }
                ],
                "riskControls":
                {
                    "allowedMcc":
                    [
                        "7311"
                    ]
                },
                "balanceInfo":
                {
                    "cardNo": "WD202602102021093722503536640",
                    "amount": "40",
                    "currency": "USD"
                },
                "customCategory":"XXXX",
                "holderInfo":
                {
                    "firstName": "John",
                    "lastName": "Zhang",
                    "country": "The United States",
                    "state": "Florida",
                    "town": "Panama City Beach",
                    "address": "301 Argonaut Street",
                    "addressLine2": "XXXX XX",
                    "postCode": "32413"
                }
            }
        ]
    }
}
```

## Update Card

[**Webhook**](https://wsb.gitbook.io/wasabicard-doc/webhooks#card-operation-transaction-event)

```
POST /merchant/core/mcb/card/updateAttribute
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="119.5684814453125">Type</th><th width="93.5477294921875">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>clientRemark</td><td>String</td><td>false</td><td>Client remark. length[0...50]</td></tr><tr><td>noPinPaymentAmount</td><td>BigDecimal</td><td>false</td><td><p>Physical card password-free payment amount limit.<br><br>1. This parameter can be updated only when <strong>metadata.supportSettingNoPinPaymentAmount = true</strong> in the <a href="#support-bins"><strong>support bin</strong></a> interface.<br></p><p>2.Range: metadata.noPinPaymentAmountMinQuota &#x3C;= noPinPaymentAmount &#x3C;= metadata.noPinPaymentAmountMaxQuota</p></td></tr><tr><td>spendingControls</td><td>List</td><td>false</td><td>Spending controls. <br><br>This parameter can be updated only when <strong>metadata.spendingControls = true</strong> in the <a href="#support-bins"><strong>support bin</strong></a> interface and only <strong>supportSetting = true</strong></td></tr><tr><td>spendingControls[0].interval</td><td>String</td><td>true</td><td>Spending interval.<br><code>PER_TRANSACTION</code></td></tr><tr><td>spendingControls[0].amount</td><td>BigDecimal</td><td>true</td><td>Spending amount</td></tr><tr><td>riskControls</td><td>Object</td><td>false</td><td>Risk controls.<br>1. This parameter can be updated only when <strong>metadata.supportSettingMcc = true</strong> in the <a href="#support-bins"><strong>support bin</strong></a> interface.</td></tr><tr><td>riskControls.allowedMcc</td><td>List</td><td>false</td><td><p>Allowed MCC.<br>Specifies a whitelist of Merchant Category Codes (MCCs) that are permitted for transactions. All transactions under MCCs not listed here will be declined.</p><p><strong>Note:</strong> Only one of <code>allowedMcc</code> or <code>blockedMcc</code> can be configured per card. If neither is provided, transactions will follow the default risk control logic.<br><br>if you want to remove mcc, please Initialize an empty array</p></td></tr><tr><td>riskControls.blockedMcc</td><td>List</td><td>false</td><td><p>Blocked MCC.<br>Specifies a blacklist of Merchant Category Codes (MCCs) that are restricted for transactions. Transactions under these MCCs will be declined, while all other transactions will proceed through the standard UQPAY risk control evaluation.</p><p><strong>Note:</strong> Only one of <code>allowedMcc</code> or <code>blockedMcc</code> can be configured per card. If neither is provided, transactions will follow the default risk control logic.<br><br>if you want to remove mcc, please Initialize an empty array</p></td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="120">Type</th><th width="100">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Amount received. status=success returns</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>The currency of the account. status=success is returned</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Type.<br> <code>card_update</code>:  Update card</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Transaction Notes. equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 0,
        "fee": 0,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "card_update",
        "status": "success",
        "description": "update pin free amount from [200] to [2000];",
        "remark": "update pin free amount from [200] to [2000];",
        "transactionTime": 1730476742000
    }
}
```

## Update Note

```
POST /merchant/core/mcb/card/note
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>clientRemark</td><td>String</td><td>false</td><td>Client remark. length[0...50]</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="234">Param</th><th width="122">Type</th><th width="88">Required</th><th>Remark</th><th></th></tr></thead><tbody><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td><td></td></tr><tr><td>cardBankBin</td><td>String</td><td>true</td><td>Bank bin</td><td></td></tr><tr><td>holderId</td><td>Long</td><td>false</td><td>Cardholder id</td><td></td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td><td></td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>pending</code>: Pending</p><p><code>un_activated</code>: Waiting for activation; <br><code>Normal</code>: Normal; <br><code>Freeze</code>: Freeze; <br><code>Freezing</code>: Freezing;</p><p><code>UnFreezing</code>: Unfreezing</p><p><code>canceling</code>: Canceling<br><code>cancel</code>: Canceled<br><code>fail</code>: Fail. create card fail</p></td><td></td></tr><tr><td>blocked</td><td>Boolean</td><td>true</td><td><code>true</code> or <code>false</code>. Card be blocked</td><td></td></tr><tr><td>bindTime</td><td>Long</td><td>true</td><td>Card create time. Millisecond timestamp</td><td></td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark</td><td></td></tr><tr><td>balanceInfo</td><td>Object</td><td>false</td><td>Card balance information</td><td></td></tr><tr><td>balanceInfo.cardNo</td><td>String</td><td>true</td><td>Card id</td><td></td></tr><tr><td>balanceInfo.amount</td><td>BigDecimal</td><td>true</td><td>Available balance</td><td></td></tr><tr><td>balanceInfo.usedAmount</td><td>BigDecimal</td><td>false</td><td>Amount used. some cards bin not support</td><td></td></tr><tr><td>balanceInfo.currency</td><td>String</td><td>true</td><td>Currency</td><td></td></tr><tr><td>noPinPaymentAmount</td><td>BigDecimal</td><td>true</td><td>Physical card password-free payment amount limit</td><td></td></tr><tr><td>spendingControls</td><td>List</td><td>false</td><td>Spending controls</td><td></td></tr><tr><td>spendingControls[0].interval</td><td>String</td><td>true</td><td>Spending interval.<br><code>PER_TRANSACTION</code></td><td></td></tr><tr><td>spendingControls[0].amount</td><td>BigDecimal</td><td>true</td><td>Spending amount</td><td></td></tr><tr><td>riskControls</td><td>Object</td><td>false</td><td>Risk controls</td><td></td></tr><tr><td>riskControls.allowedMcc</td><td>List</td><td>false</td><td>Allowed MCC</td><td></td></tr><tr><td>riskControls.blockedMcc</td><td>List</td><td>false</td><td>Blocked MCC</td><td></td></tr><tr><td>customCategory</td><td>String</td><td>false</td><td>Purpose</td><td></td></tr><tr><td>holderInfo</td><td>Object</td><td>false</td><td>Cardholder Information</td><td></td></tr><tr><td>holderInfo.firstName</td><td>String</td><td>false</td><td>name</td><td></td></tr><tr><td>holderInfo.lastName</td><td>String</td><td>false</td><td>Surname</td><td></td></tr><tr><td>holderInfo.country</td><td>String</td><td>false</td><td>Country</td><td></td></tr><tr><td>holderInfo.state</td><td>String</td><td>false</td><td>State</td><td></td></tr><tr><td>holderInfo.town</td><td>String</td><td>false</td><td>Town</td><td></td></tr><tr><td>holderInfo.address</td><td>String</td><td>false</td><td>Address</td><td></td></tr><tr><td>holderInfo.addressLine2</td><td>String</td><td>false</td><td>AddressLine2</td><td></td></tr><tr><td>holderInfo.postCode</td><td>String</td><td>false</td><td>Post Code</td><td></td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "cardTypeId": 111040,
        "cardBankBin":"493724",
        "holderId": 10090,
        "cardNo": "WA202408181555232422322004",
        "status": "cancel",
        "blocked": false,
        "bindTime": 1723997214000,
        "remark": null,
        "noPinPaymentAmount": 500,
        "balanceInfo":
        {
            "cardNo": "WA202408181555232422322004",
            "amount": 10,
            "usedAmount": 1,
            "currency": "USD"
        },
        "customCategory":"XXXXX",
        "holderInfo":
        {
            "firstName": "John",
            "lastName": "Zhang",
            "country": "The United States",
            "state": "Florida",
            "town": "Panama City Beach",
            "address": "301 Argonaut Street",
            "addressLine2": "XXXX XX",
            "postCode": "32413"
        },
        "spendingControls":
        [
            {
                "interval": "PER_TRANSACTION",
                "amount": 20000,
                "supportSetting": true
            }
        ],
        "riskControls":
        {
            "allowedMcc":
            [
                "6012",
                "7311"
            ]
        }
    }
}
```

## Freeze Card-V2

```
POST /merchant/core/mcb/card/v2/freeze
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>clientRemark</td><td>String</td><td>false</td><td>Client remark. length[0...50]</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="120">Type</th><th width="100">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Amount received. status=success returns</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>The currency of the account. status=success is returned</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Type.<br> <code>Freeze</code>: Freeze</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Transaction Notes. equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 0,
        "fee": 0,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "Freeze",
        "status": "processing",
        "description": "Freeze",
        "remark": "Freeze",
        "transactionTime": 1730476742000
    }
}
```

## UnFreeze Card-V2

```
POST /merchant/core/mcb/card/v2/unfreeze
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>clientRemark</td><td>String</td><td>false</td><td>Client remark. length[0...50]</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="120">Type</th><th width="100">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Amount received. status=success returns</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>The currency of the account. status=success is returned</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Type. <br><code>UnFreeze</code>: UnFreeze</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Transaction Notes. equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 0,
        "fee": 0,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "UnFreeze",
        "status": "processing",
        "description": "UnFreeze",
        "remark": "UnFreeze",
        "transactionTime": 1730476742000
    }
}
```

## Deposit Card

```
POST /merchant/core/mcb/card/deposit
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="121">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card ID</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Deposit amount</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="120">Type</th><th width="100">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Amount received. status=success returns</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>The currency of the account. status=success is returned</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type. </p><p><code>deposit</code>: Deposit</p></td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Transaction Notes. equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 15,
        "fee": 0,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "deposit",
        "status": "processing",
        "description": "Deposit",
        "remark": "Card Deposit",
        "transactionTime": 1730476742000
    }
}
```

## Withdraw Card

```
POST /merchant/core/mcb/card/withdraw
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="121">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card ID</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount. ≥ 0.01</td></tr><tr><td>clientRemark</td><td>String</td><td>false</td><td>Remark.[0...50] length</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="120">Type</th><th width="100">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Amount received. status=success returns</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>The currency of the account. status=success is returned</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type. </p><p><code>withdraw</code>: Withdraw</p></td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Transaction Notes. equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 15,
        "fee": 0,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "withdraw",
        "status": "success",
        "remark": "withdraw",
        "transactionTime": 1730476742000
    }
}
```

## Cancel Card

```
POST /merchant/core/mcb/card/cancel
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="121">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card ID</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>clientRemark</td><td>String</td><td>false</td><td>Remark.[0...50] length</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="197">Param</th><th width="120">Type</th><th width="100">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Amount received.</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>The currency of the account.</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type. </p><p><code>cancel</code>: Cancel Card</p></td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Transaction Notes. equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 15,
        "fee": 0,
        "receivedAmount": 15,
        "receivedCurrency": "USD",
        "type": "cancel",
        "status": "success",
        "remark": null,
        "transactionTime": 1730476742000
    }
}
```

## Activate Card (physical)

```
POST /merchant/core/mcb/card/physicalCard/activeCard
```

**Request**

<table><thead><tr><th width="193.921875">Param</th><th width="113.40234375">Type</th><th width="105.4765625">Required</th><th>Remark</th></tr></thead><tbody><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>pin</td><td>String</td><td>true</td><td>Card password. 6 digits, User-defined</td></tr><tr><td>activeCode</td><td>String</td><td>true</td><td>Activation code</td></tr><tr><td>noPinPaymentAmount</td><td>BigDecimal</td><td>false</td><td>The amount of payment without PIN. 0~2000USD, default 500USD</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="183.5859375">Param</th><th width="98.44921875">Type</th><th width="115">Required</th><th>Remark</th></tr></thead><tbody><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Type<br><code>card_activated</code> : Activate Card</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; <br><code>success</code>: success; <br><code>fail</code>: failure</td></tr><tr><td>remark</td><td>String</td><td>true</td><td>Remark</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "merchantOrderNo": "35nigjaongaognaeorig",
        "cardNo": "jojaga3-35mg-35saga-3535dfg",
        "type": "card_activated",
        "status": "success",
        "remark": null
    }
}
```

## Update PIN (physical)

Update physical card PIN

```
POST /merchant/core/mcb/card/physicalCard/updatePin
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="121">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>true</td><td>Client transaction id. length[15...65]</td></tr><tr><td>pin</td><td>String</td><td>true</td><td><p>PIN. 6 digits.</p><p>Rules:</p><ol><li>Must be a 6-digit number;</li><li>Cannot be 3 or more consecutive repeated digits;</li><li>Cannot be an entire string in ascending or descending order;</li><li>Cannot be repeated two- or three-digit number segments (e.g., 123123, 909090, 121212);</li></ol></td></tr></tbody></table>

**Response**

<table><thead><tr><th width="190">Param</th><th width="121">Type</th><th width="103">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Received Amount</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>Received Currency</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Type.<br><code>update_pin</code>: Update PIN</td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; </p><p><code>success</code>: success; </p><p><code>fail</code>: failure</p></td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark, equal description, will remove.</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**响应示例**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "orderNo": "1852379830190366720",
        "merchantOrderNo": "T1852379826671345664",
        "cardNo": "38928421021320391244",
        "currency": "USD",
        "amount": 0,
        "fee": 0,
        "receivedAmount": 0,
        "receivedCurrency": "USD",
        "type": "update_pin",
        "status": "processing",
        "description": "",
        "remark": "",
        "transactionTime": 1730476742000
    }
}
```

## Card Purchase Transaction

Card purchase transactions. Returns records related to card fees and initial deposit amounts. This interface does not support webhooks.

```
POST /merchant/core/mcb/card/purchaseTransaction
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default is 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>orderNo</td><td>String</td><td>false</td><td>Transaction id</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Start trading time. Milliseconds timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>End trading time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="190">Param</th><th width="121">Type</th><th width="103">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>cardTypeId</td><td>Long</td><td>true</td><td>Card type id</td></tr><tr><td>cardType</td><td>String</td><td>true</td><td><code>Virtual</code>  <code>Physical</code></td></tr><tr><td>organization</td><td>String</td><td>true</td><td><code>Visa</code>  <code>MasterCard</code>  <code>Discover</code></td></tr><tr><td>bankCardBin</td><td>String</td><td>true</td><td>Card Bin. Example: 531993</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>cardFee</td><td>BigDecimal</td><td>true</td><td>Card fee</td></tr><tr><td>depositAmount</td><td>BigDecimal</td><td>true</td><td>Initial deposit amount</td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; </p><p><code>success</code>: success; </p><p><code>fail</code>: failure</p></td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "total": 1,
        "records":
        [
            {
                "orderNo": "1852379830190366720",
                "merchantOrderNo": "T1852379826671345664",
                "cardTypeId": 111001,
                "cardType": "Virtual",
                "organization": "Visa",
                "bankCardBin": "531993",
                "currency": "USD",
                "cardFee": 5,
                "depositAmount": 20,
                "status": "success",
                "transactionTime": 1730476742000
            }
        ]
    }
}
```

## Card Operation Transaction

[**Webhook link**](https://wsb.gitbook.io/wasabicard-doc/webhooks#card-operation-transaction-event)

* **Type**
  * **blocked:** The highest level of freezing. It is unilaterally initiated by the card issuing bank or card group, and can only be unfrozen through manual application.
  * **overdraft\_statement:** Card overdraft statemen&#x74;**.** if the card balance is less than 0, it means the card is overdrawn. At this time, Wasabi will push the overdraft statement and transfer funds from the merchants's account to the Wasabi system account to make up for it.   ***Example:  when card balance equal -80USD after card be cancelled.  then the transaction will be: amount = 80, and merchants's account  will transfer 80USD to wasabi system account.***

```
POST /merchant/core/mcb/card/transaction
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default is 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type.</p><p><code>create</code>: Create Card； </p><p><code>deposit</code>: Deposit Card;<br><code>cancel</code>: Cancel Card;<br><code>Freeze</code>: Freeze Card;<br><code>UnFreeze</code>: UnFreeze Card;<br><code>withdraw</code>: Withdraw Card;<br><code>update_pin</code>: Update PIN<br><code>blocked</code>: Block Card<br><code>card_update</code>: Update Card<br><code>overdraft_statement</code>: Card overdraft statement. </p></td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>orderNo</td><td>String</td><td>false</td><td>Transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Start trading time. Milliseconds timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>End trading time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="190">Param</th><th width="121">Type</th><th width="103">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>originOrderNo</td><td>String</td><td>false</td><td>Origin Transaction order number</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Received Amount</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>Received Currency</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type.</p><p><code>create</code>: Create Card； </p><p><code>deposit</code>: Deposit Card;<br><code>cancel</code>: Cancel Card. The card cannot be reactivated; it is completely destroyed.<br><code>Freeze</code>: Freeze Card;<br><code>UnFreeze</code>: UnFreeze Card;<br><code>withdraw</code>: Withdraw Card;<br><code>update_pin</code>: Update PIN;<br><code>blocked</code>: Block Card;<br><code>card_update</code>: Update Card;<br><code>overdraft_statement</code>: Card overdraft statement. </p></td></tr><tr><td>subType</td><td>String</td><td>false</td><td>Sub type.<br><code>DEFAULT</code>: Default<br><code>REFUND</code>: Card balance refund.This generally refers to a refund initiated by the merchant after the card is cancelled. Because the card is cancelled, the balance cannot be refunded to the card itself and needs to be withdrawn to the customer's wallet.</td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; </p><p><code>success</code>: success; </p><p><code>fail</code>: failure</p></td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark, equal description. will remark</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "total": 1,
        "records":
        [
            {
                "orderNo": "1852379830190366720",
                "merchantOrderNo": "T1852379826671345664",
                "cardNo": "AA2025032942035903249258024",
                "currency": "USD",
                "amount": 15,
                "fee": 1.5,
                "receivedAmount": 15,
                "receivedCurrency": "USD",
                "type": "deposit",
                "status": "success",
                "description": null,
                "remark": null,
                "transactionTime": 1730476742000
            }
        ]
    }
}
```

## Card Operation Transaction-V2

If you create card using the /merchant/core/mcb/card/openCard interface, there will be no create record in this interface (it has been moved to the Card Purchase Transaction interface).

[**Webhook link**](https://wsb.gitbook.io/wasabicard-doc/webhooks#card-operation-transaction-event)

**Type**

* **blocked:** The highest level of freezing. It is unilaterally initiated by the card issuing bank or card group, and can only be unfrozen through manual application.
* **overdraft\_statement:** Card overdraft statemen&#x74;**.** if the card balance is less than 0, it means the card is overdrawn. At this time, Wasabi will push the overdraft statement and transfer funds from the merchants's account to the Wasabi system account to make up for it.   ***Example:  when card balance equal -80USD after card be cancelled.  then the transaction will be: amount = 80, and merchants's account  will transfer 80USD to wasabi system account.***

```
POST /merchant/core/mcb/card/v2/transaction
```

**Request**

<table><thead><tr><th width="197">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default is 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>type</td><td>String</td><td>false</td><td><p>Type.</p><p><code>create</code>: Create Card； </p><p><code>deposit</code>: Deposit Card;<br><code>cancel</code>: Cancel Card;<br><code>Freeze</code>: Freeze Card;<br><code>UnFreeze</code>: UnFreeze Card;<br><code>withdraw</code>: Withdraw Card;<br><code>update_pin</code>: Update PIN;<br><code>blocked</code>: Block Card;<br><code>card_update</code>: Update Card;<br><code>overdraft_statement</code>: Card overdraft statement. </p></td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>orderNo</td><td>String</td><td>false</td><td>Transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Start trading time. Milliseconds timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>End trading time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="190">Param</th><th width="121">Type</th><th width="103">Required</th><th>Remark</th></tr></thead><tbody><tr><td>orderNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>originOrderNo</td><td>String</td><td>false</td><td>Origin Transaction No</td></tr><tr><td>merchantOrderNo</td><td>String</td><td>false</td><td>Client transaction id</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Amount</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Fee</td></tr><tr><td>receivedAmount</td><td>BigDecimal</td><td>false</td><td>Received Amount</td></tr><tr><td>receivedCurrency</td><td>String</td><td>false</td><td>Received Currency</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type.</p><p><code>create</code>: Create Card； </p><p><code>deposit</code>: Deposit Card;<br><code>cancel</code>: Cancel Card;<br><code>Freeze</code>: Freeze Card;<br><code>UnFreeze</code>: UnFreeze Card;<br><code>withdraw</code>: Withdraw Card;<br><code>update_pin</code>: Update PIN;<br><code>blocked</code>: Block Card;<br><code>card_update</code>: Update Card;<br><code>overdraft_statement</code>: Card overdraft statement. </p></td></tr><tr><td>subType</td><td>String</td><td>false</td><td>Sub type.<br><code>DEFAULT</code>: Default<br><code>REFUND</code>: Card balance refund.This generally refers to a refund initiated by the merchant after the card is cancelled. Because the card is cancelled, the balance cannot be refunded to the card itself and needs to be withdrawn to the customer's wallet.</td></tr><tr><td>status</td><td>String</td><td>true</td><td><p>Status. <br><code>wait_process</code>: pending; <br><code>processing</code>: processing; </p><p><code>success</code>: success; </p><p><code>fail</code>: failure</p></td></tr><tr><td>description</td><td>String</td><td>false</td><td>Description</td></tr><tr><td>remark</td><td>String</td><td>false</td><td>Remark, equal description. will remove</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "total": 1,
        "records":
        [
            {
                "orderNo": "1852379830190366720",
                "merchantOrderNo": "T1852379826671345664",
                "cardNo": "WB2025103119841257038691924352",
                "currency": "USD",
                "amount": 20,
                "fee": 0.1,
                "receivedAmount": 20,
                "receivedCurrency": "USD",
                "type": "create",
                "status": "wait_process",
                "description": null
                "remark": null,
                "transactionTime": 1730476741729
            },
            {
                "orderNo": "1852379830190366720",
                "merchantOrderNo": "T1852379826671345664",
                "cardNo": "WB2025103119841257038691924352",
                "currency": "USD",
                "amount": 15,
                "fee": 1.5,
                "receivedAmount": 15,
                "receivedCurrency": "USD",
                "type": "deposit",
                "status": "success",
                "description": null,
                "remark": null,
                "transactionTime": 1730476742000
            }
        ]
    }
}
```

## Card Authorization Transaction (Consumption Bill)

[**Webhook link**](https://wsb.gitbook.io/wasabicard-doc/webhooks#card-authorization-transaction-event)

* **Type**
  * **verification**: Card binding verification. Example, when you bind a card to Alipay for consume, a card binding transaction record will be generated.
  * **auth**: Authorization (also known as consumption). such as when you subscribe to a GPT monthly membership, will generate a consumption record.
  * **Void**: Reversal. When user initiates a **auth** transaction, but a refund is issued before the acquiring bank and issuing bank have settled the transaction, this is called a reversal.
  * **refund**: When user initiates a **auth** transaction, and the acquiring bank and issuing bank have already settled the transaction, the user then initiates a refund.
  * **maintain\_fee**: Card fee. Example monthly fee, annual fee, ATM withdraw fee...
* **Status**
  * **authorized**: The transaction is still being processed and has not yet been settled.
  * **failed:** The transaction failed.
  * **succeed**: The transaction has been completed.

```
POST /merchant/core/mcb/card/authTransaction
```

**Request**

<table><thead><tr><th width="154">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default is 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>type</td><td>String</td><td>false</td><td>Transaction type of card. <br><code>auth</code>: Authorization<br><code>refund</code>: Refund<br><code>verification</code>: Verification<br><code>Void</code>: Reversal<br><code>maintain_fee</code>: Card fee (monthly fee, annual fee, ATM withdraw fee...)</td></tr><tr><td>tradeNo</td><td>String</td><td>false</td><td>Transaction serial number</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Start trading time. Milliseconds timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>End trading time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="226">Param</th><th width="120">Type</th><th width="97">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>tradeNo</td><td>String</td><td>true</td><td>Transaction serial number</td></tr><tr><td>originTradeNo</td><td>String</td><td>false</td><td>Origin transaction serial number</td></tr><tr><td>currency</td><td>String</td><td>false</td><td>Currency. example: SGD</td></tr><tr><td>amount</td><td>BigDecimal</td><td>false</td><td>Amount. example: 125.24</td></tr><tr><td>authorizedAmount</td><td>BigDecimal</td><td>true</td><td>Authorized amount. example: 56</td></tr><tr><td>authorizedCurrency</td><td>String</td><td>true</td><td>Authorized currency. example: USD</td></tr><tr><td>fee</td><td>BigDecimal</td><td>true</td><td>Authorization fee</td></tr><tr><td>feeCurrency</td><td>String</td><td>false</td><td>Authorization fee currency</td></tr><tr><td>crossBoardFee</td><td>BigDecimal</td><td>true</td><td>Cross board fee</td></tr><tr><td>crossBoardFeeCurrency</td><td>String</td><td>false</td><td>Cross board fee currency</td></tr><tr><td>settleAmount</td><td>BigDecimal</td><td>false</td><td>Settlement amount. Pushed after receiving settlement information</td></tr><tr><td>settleCurrency</td><td>String</td><td>false</td><td>Settlement currency. Pushed after receiving settlement information</td></tr><tr><td>settleDate</td><td>Long</td><td>false</td><td>Settlement date. Millisecond timestamp</td></tr><tr><td>authorizationCode</td><td>String</td><td>false</td><td>Authorization code</td></tr><tr><td>merchantName</td><td>String</td><td>false</td><td>Merchant name</td></tr><tr><td>merchantData</td><td>Object</td><td>false</td><td>Merchant info</td></tr><tr><td>merchantData.name</td><td>String</td><td>false</td><td>Merchant name</td></tr><tr><td>merchantData.categoryCode</td><td>String</td><td>false</td><td>Merchant Category Code (MCC)</td></tr><tr><td>merchantData.category</td><td>String</td><td>false</td><td>MCC category</td></tr><tr><td>merchantData.country</td><td>String</td><td>false</td><td>Merchant country. ISO 3166-1 alpha-2 or ISO 3166-1 alpha-3</td></tr><tr><td>merchantData.state</td><td>String</td><td>false</td><td>Merchant state</td></tr><tr><td>merchantData.city</td><td>String</td><td>false</td><td>Merchant city</td></tr><tr><td>merchantData.zipCode</td><td>String</td><td>false</td><td>Merchant ZIP/postal code</td></tr><tr><td>merchantData.mid</td><td>String</td><td>false</td><td>Merchant ID (MID)</td></tr><tr><td>merchantData.walletType</td><td>String</td><td>false</td><td>Digital wallet was used for the transaction</td></tr><tr><td>type</td><td>String</td><td>true</td><td>Transaction type of card. <br><code>auth</code>: Authorization<br><code>refund</code>: Refund<br><code>verification</code>: Verification<br><code>Void</code>: Reversal<br><code>maintain_fee</code>: Card fee (monthly fee, annual fee, ATM withdraw fee...)</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Transaction status of card.<br><code>authorized</code>: Authorized; <br><code>failed</code>: Fail; <br><code>succeed</code>: Success</td></tr><tr><td>description</td><td>String</td><td>true</td><td>Transaction Description</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "total": 1563,
        "records":
        [
            {
                "cardNo": "1242352328671924231",
                "tradeNo": "trans1232435363435463432",
                "originTradeNo": null,
                "currency": "SGD",
                "amount": 16.96,
                "authorizedAmount": 2.45,
                "authorizedCurrency": "USD",
                "fee": 0.3,
                "feeCurrency": "USD",
                "crossBoardFee": 0.2,
                "crossBoardFeeCurrency": "USD",
                "settleAmount": 0,
                "settleCurrency": null,
                "settleDate": null,
                "authorizationCode": "478198",
                "merchantName": "HUQQABAZ RESTAURANTS B DUBAI ARE",
                "merchantData":
                {
                    "name": "HUQQABAZ RESTAURANTS B DUBAI ARE",
                    "categoryCode": "5811",
                    "category": "",
                    "country": "ARE",
                    "state": "",
                    "city": "",
                    "zipCode": "",
                    "mid": 213028402482045,
                    "walletType": "ApplePay"
                },
                "type": "auth",
                "status": "authorized",
                "description": "Auth",
                "transactionTime": 1729422898000
            }
        ]
    }
}
```

## Card Authorization Fee Transaction

[**Webhook link**](https://wsb.gitbook.io/wasabicard-doc/webhooks#card-authorization-fee-transaction-event)

```
POST /merchant/core/mcb/card/authFeeTransaction
```

{% hint style="info" %}
If the user's bank card balance is insufficient to cover the authorization fee, the bank will deducting Wasabi's  funds to offset the fee. Therefore, if the user's bank card balance is insufficient, Wasabi will debit the merchant's reserve account on the platform to offset the fee.

Fee Collection Process

1. Bank debits the card balance (deduction fails due to insufficient card balance)
2. Bank debits Wasabi's reserve funds to offset the fee. The bill is sent to Wasabi.
3. Wasabi verifies the card balance and debits the card balance to offset the fee (deduction fails due to insufficient card balance)
4. Wasabi debits the merchant's reserve account on the platform to offset the fee. \[A fee record will be generated after this link is executed.]
   {% endhint %}

**Request**

<table><thead><tr><th width="154">Param</th><th width="94">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default is 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>tradeType</td><td>String</td><td>false</td><td>Transaction type of card. <br><code>card_patch_fee</code>: Authorization fee<br><code>card_patch_cross_border</code>: Cross border fee</td></tr><tr><td>tradeNo</td><td>String</td><td>false</td><td>Transaction id</td></tr><tr><td>originTradeNo</td><td>String</td><td>false</td><td>Origin authorization Transaction serial number</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card id</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Start trading time. Milliseconds timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>End trading time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="225">Param</th><th width="120">Type</th><th width="140">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card id</td></tr><tr><td>tradeNo</td><td>String</td><td>true</td><td>Transaction id</td></tr><tr><td>originTradeNo</td><td>String</td><td>true</td><td>Origin Trade No , Authorization transaction in tradeNo</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>Fee currency. example: USD</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>Fee amount</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p><code>card_patch_fee</code><strong>:</strong> auth fee;</p><p><code>card_patch_cross_border</code><strong>:</strong> cross-border fee; </p></td></tr><tr><td>deductionSourceFunds</td><td>String</td><td>true</td><td>Source of fund deduction.<br><code>wallet</code><strong>:</strong> wallet. User master account</td></tr><tr><td>status</td><td>String</td><td>true</td><td>Status<br><code>success</code><strong>:</strong> success</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time (unit: milliseconds)</td></tr></tbody></table>

**Response Example**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data":
    {
        "total": 1563,
        "records":
        [
            {
                "cardNo": "1242352328671924231",
                "tradeNo": "CAF1232435363435463432",
                "originTradeNo": "trans1232435363435463432",
                "currency": "USD",
                "amount": 0.5,
                "type": "card_patch_fee",
                "deductionSourceFunds": "wallet",
                "status": "success",
                "transactionTime": 1729422898000
            }
        ]
    }
}
```

## Card 3DS Transaction

[Webhook link](#card-authorization-fee-transaction)

<pre><code><strong>POST /merchant/core/mcb/card/third3dsTransaction
</strong></code></pre>

**Request**

<table><thead><tr><th width="126">Param</th><th width="90">Type</th><th width="106">Required</th><th>Remark</th></tr></thead><tbody><tr><td>pageNum</td><td>Integer</td><td>true</td><td>Current page. Default 1</td></tr><tr><td>pageSize</td><td>Integer</td><td>true</td><td>Number of pages per page. Default 10, maximum 100</td></tr><tr><td>type</td><td>String</td><td>false</td><td><p>Type</p><p><code>third_3ds_otp:</code> otp;</p><p><code>auth_url:</code>Transaction authorization response url<br><code>activation_code</code>: activation code (physical card)</p></td></tr><tr><td>tradeNo</td><td>String</td><td>false</td><td>Transaction serial number</td></tr><tr><td>cardNo</td><td>String</td><td>false</td><td>Card ID</td></tr><tr><td>startTime</td><td>Long</td><td>false</td><td>Start trading time. Milliseconds timestamp</td></tr><tr><td>endTime</td><td>Long</td><td>false</td><td>End trading time. Millisecond timestamp</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="169">Param</th><th width="117">Type</th><th width="99">Required</th><th>Remark</th></tr></thead><tbody><tr><td>cardNo</td><td>String</td><td>true</td><td>Card ID</td></tr><tr><td>tradeNo</td><td>String</td><td>true</td><td>Transaction serial number</td></tr><tr><td>originTradeNo</td><td>String</td><td>false</td><td>Origin Transaction serial number</td></tr><tr><td>currency</td><td>String</td><td>true</td><td>currency</td></tr><tr><td>amount</td><td>BigDecimal</td><td>true</td><td>amount</td></tr><tr><td>merchantName</td><td>String</td><td>true</td><td>Merchant Name (Transaction Scenario)</td></tr><tr><td>values</td><td>String</td><td>true</td><td>value. The merchant's public key is encrypted and returned, and the merchant's private key decrypt.</td></tr><tr><td>type</td><td>String</td><td>true</td><td><p>Type</p><p><code>third_3ds_otp:</code>3ds otp;</p><p><code>auth_url:</code>Transaction authorization response url<br><code>activation_code</code>: activation code (physical card)</p></td></tr><tr><td>description</td><td>String</td><td>false</td><td>Transaction Description</td></tr><tr><td>transactionTime</td><td>Long</td><td>true</td><td>Transaction time. Millisecond timestamp</td></tr><tr><td>expirationTime</td><td>Long</td><td>false</td><td>Expiration time. Millisecond timestamp</td></tr></tbody></table>

**Example Response**

{% tabs %}
{% tab title="third\_3ds\_otp" %}

```json
{
    "cardNo": "1242352328671924231",
    "tradeNo": "trans1232435363435463432",
    "originTradeNo": null,
    "currency": "CNY",
    "amount": "16.96",
    "merchantName": "ULTRA MOBILE",
    "values": "ajfon34nNOIN24nafaiw4onnfn0iw32ngfn0IF0Q34NFQFOFAW", //Plain text example: 204566
    "type": "third_3ds_otp",
    "transactionTime": 1729422898000,
    "description": null
}
```

{% endtab %}

{% tab title="auth\_url" %}

```json
{
    "cardNo": "1242352328671924231",
    "tradeNo": "trans1232435363435463432",
    "originTradeNo": null,
    "currency": "CNY",
    "amount": "16.96",
    "merchantName": "ULTRA MOBILE",
    "values": "ajfon34nNOIN24nafaiw4onnfn0iw32ngfn0IF0Q34NFQFOFAW",//Plain text example: https://www.google.com
    "type": "auth_url",
    "transactionTime": 1729422898000,
    "description": null,
    "expirationTime": 1729422899000
}
```

{% endtab %}

{% tab title="activation\_code" %}

```json
{
    "cardNo": "1242352328671924231",
    "tradeNo": "trans1232435363435463432",
    "originTradeNo": null,
    "currency": null,
    "amount": "0",
    "merchantName": null,
    "values": "ajfon34nNOIN24nafaiw4onnfn0iw32ngfn0IF0Q34NFQFOFAW", //明文示例：20834698
    "type": "activation_code",
    "description": null,
    "transactionTime": 1729422898000
}
```

{% endtab %}
{% endtabs %}
