> For the complete documentation index, see [llms.txt](https://vnx.gitbook.io/vnx-global/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vnx.gitbook.io/vnx-global/developer/api/transfers.md).

# Transfers

*Mint and burn stablecoins, withdraw to a whitelisted address, and poll supply-change history for async status.*

## Before you begin

* A signed-request setup. See Authentication.
* For withdrawals: the destination must be a whitelisted address. See Balances.
* All endpoints are `POST` with `application/x-www-form-urlencoded` bodies.

## Endpoints

| Method | Path                          | Purpose                           |
| ------ | ----------------------------- | --------------------------------- |
| POST   | `/private/mintTokens`         | Issue stablecoins                 |
| POST   | `/private/burnTokens`         | Burn stablecoins                  |
| POST   | `/private/withdraw`           | Withdraw to a whitelisted address |
| POST   | `/private/querySupplyChanges` | Mint/burn history with status     |

## Mint

Body: `asset`, `blockchain`, `quantity`.

```
asset=VCHF&blockchain=ethereum&quantity=100000
```

```json
{  "timestamp": "2026-06-19T09:21:33Z",  "txid": "0xabc...",  "requestid": "req_01HV...",  "fee": "0.00",  "spent": "100000.00",  "spent_currency": "CHF"}
```

## Burn

Body: `asset`, `quantity`.

```
asset=VGBP&quantity=50000
```

```json
{  "timestamp": "2026-06-19T09:24:10Z",  "txid": "0xdef...",  "requestid": "req_01HW...",  "fee": "0.00",  "received": "50000.00",  "received_currency": "GBP"}
```

## Withdraw

Body: `asset`, `quantity`, `destination` (the whitelisted address label). Add `memo` for XLM or `dest_tag` for XRP where required.

```
asset=VCHF&quantity=1000&destination=treasury-eth
```

```json
{  "timestamp": "2026-06-19T09:30:00Z",  "txids": ["0x123..."],  "fee": "0.50"}
```

## Poll status

There are no webhooks. Poll `/private/querySupplyChanges` to follow mint and burn requests through their status lifecycle, matching on the `requestid` returned above.

## Verify

A successful mint/burn returns `200` with a `txid` and `requestid`. Confirm settlement by polling `/private/querySupplyChanges`.

## Common errors

| `code` / `status`     | Meaning                                  | Fix                         |
| --------------------- | ---------------------------------------- | --------------------------- |
| `400` invalid amount  | Below minimum or malformed               | Validate the `quantity`     |
| `403` not whitelisted | Withdrawal `destination` not whitelisted | Whitelist the address first |
| `429` rate limited    | Over 1 req/sec per key                   | Backoff                     |

Business-level failures may also surface as an `error` object inside a `200` response — always inspect the body.

## Next steps

* Trading
* Quotes and payment rails

## Related

* [API Overview](/vnx-global/developer/api/overview.md)
* [Balances](/vnx-global/developer/api/balances.md)
* [Minting and Redemption](/vnx-global/institutional/products/minting-and-redemption.md)
* [Glossary](/vnx-global/glossary.md)
