MPChatMPChat/Docs

Withdrawals

Withdrawals let you move USDT from your merchant balance to an external blockchain address. Withdrawals go through a review process before being broadcast on-chain.

Withdrawal statuses

StatusDescription
PENDINGSubmitted, awaiting review
PENDING_REVIEWQueued for approval
LEVEL1_APPROVEDFirst approver approved — awaiting second
APPROVEDFully approved — queued for broadcast
PROCESSINGBeing broadcast to the blockchain
COMPLETEDConfirmed on-chain. tx_hash is set.
FAILEDBroadcast failed. Funds returned to balance.
CANCELLEDCancelled before processing.
REJECTEDRejected by reviewer. Funds returned to balance.

Create a withdrawal

POST
/v1/withdrawals

Request a USDT withdrawal to an external address

ℹ️Withdrawals require manual review. You will receive a withdrawal.completed webhook event when the transfer is confirmed on-chain.

Body parameters

amountstringrequired

Withdrawal amount in USDT as a decimal string. Must be positive and not exceed available balance.

destination_addressstringrequired

Destination blockchain address. Must be valid for the specified network.

networkstringrequired

Blockchain network.One of: TRC20, ERC20

Returns Returns the Withdrawal object. The amount is immediately frozen from your available balance.

Request

bash
curl -X POST https://api.mpchat.com/v1/withdrawals \
  -H "Authorization: Bearer mk_live_abc:{ts}:{sig}" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "500.00",
    "destination_address": "TXyz1234567890abcdefghijklmnopqrst",
    "network": "TRC20"
  }'

Response 201

JSON
{
  "id": "wd_01HQ8ZTXV...",
  "merchant_id": "a1b2c3d4-...",
  "amount": "500.00",
  "fee": "1.00",
  "status": "PENDING",
  "destination_address": "TXyz1234567890abcdefghijklmnopqrst",
  "network": "TRC20",
  "tx_hash": null,
  "created_at": "2024-01-15T10:00:00Z",
  "updated_at": "2024-01-15T10:00:00Z"
}

List withdrawals

GET
/v1/withdrawals

Return a paginated list of withdrawals

Query parameters

limitintegeroptionaldefault: 20

Maximum withdrawals to return. Max 100.

offsetintegeroptionaldefault: 0

Number of withdrawals to skip.

Returns Returns an object with a withdrawals array and total count.

Request

bash
curl "https://api.mpchat.com/v1/withdrawals?limit=20" \
  -H "Authorization: Bearer mk_live_abc:{ts}:{sig}"

Response 200

JSON
{
  "withdrawals": [
    {
      "id": "wd_01HQ8ZTXV...",
      "amount": "500.00",
      "fee": "1.00",
      "status": "COMPLETED",
      "destination_address": "TXyz...",
      "network": "TRC20",
      "tx_hash": "abc123def456...",
      "created_at": "2024-01-15T10:00:00Z",
      "updated_at": "2024-01-15T14:30:00Z"
    }
  ],
  "total": 5
}

Retrieve a withdrawal

GET
/v1/withdrawals/{id}

Retrieve a single withdrawal by ID

Path parameters

idstringrequired

The withdrawal UUID.

Returns Returns the Withdrawal object. Returns 404 if not found.

Request

bash
curl https://api.mpchat.com/v1/withdrawals/wd_01HQ8ZTXV... \
  -H "Authorization: Bearer mk_live_abc:{ts}:{sig}"

Response 200

JSON
{
  "id": "wd_01HQ8ZTXV...",
  "merchant_id": "a1b2c3d4-...",
  "amount": "500.00",
  "fee": "1.00",
  "status": "COMPLETED",
  "destination_address": "TXyz1234567890abcdefghijklmnopqrst",
  "network": "TRC20",
  "tx_hash": "abc123def456789...",
  "created_at": "2024-01-15T10:00:00Z",
  "updated_at": "2024-01-15T14:30:00Z"
}

Next: Balance & Ledger API