Create Order
Create a new cryptocurrency exchange order with specified parameters
Endpoint
POST
/v1/order/createThis endpoint requires authentication
Required Parameters
| Parameter | Type | Description |
|---|---|---|
| from | String | Source currency code (e.g., BTC, USDT, BNB) |
| from_network | String | Source blockchain network (ERC20, TRC20, BEP20, or native) |
| to | String | Destination currency code |
| to_network | String | Destination blockchain network |
| amount | Number | Amount to exchange (must be within min/max limits) |
| rate_type | String | "fixed" or "float" - rate type for the order |
| destination | String | Destination wallet address to receive exchanged funds |
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
| destination_tag | String | Memo/tag for currencies that require it (XRP, XLM, etc.) |
| refund_address | String | Address to refund to if order fails (defaults to source) |
| callback_url | String | Webhook URL to receive order status updates |
Address & Tag Handling
Some cryptocurrencies require additional information beyond the wallet address:
- •XRP (Ripple) - Requires destination_tag (also called memo or destination tag)
- •XLM (Stellar) - Requires destination_tag (memo)
- •EOS - Requires destination_tag (memo)
- •Other currencies - destination_tag is optional and ignored if provided
Important: If a tag is required but not provided, the order will fail. Always check currency requirements before creating orders.
Request Example
POST /v1/order/create
Content-Type: application/json
X-API-KEY: your_api_key
X-API-SIGN: generated_signature
X-API-TIMESTAMP: 1706284800
{
"from": "BNB",
"from_network": "BEP20",
"to": "USDT",
"to_network": "ERC20",
"amount": 1.202887,
"rate_type": "fixed",
"destination": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"refund_address": "0x1234567890123456789012345678901234567890",
"callback_url": "https://your-app.com/webhook"
}Response Example
{
"success": true,
"data": {
"order_id": "MM1234567890",
"status": "NEW",
"deposit_address": "0x9876543210987654321098765432109876543210",
"deposit_currency": "BNB",
"deposit_network": "BEP20",
"deposit_amount": 1.202887,
"receive_currency": "USDT",
"receive_network": "ERC20",
"receive_amount": 1000.00,
"rate": 831.34,
"rate_type": "fixed",
"fee": 10.00,
"destination": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"created_at": "2025-01-27T11:25:00Z",
"expires_at": "2025-01-27T11:40:00Z",
"qr_code_url": "https://api.mintmove.io/v1/order/MM1234567890/qr"
}
}Response Fields
| Field | Description |
|---|---|
| order_id | Unique order identifier (format: MM followed by numbers) |
| status | Current order status (NEW, PENDING, EXCHANGE, etc.) |
| deposit_address | Address where user should send funds |
| deposit_amount | Exact amount to deposit (may include network fees) |
| receive_amount | Amount user will receive after exchange |
| rate | Exchange rate used for this order |
| expires_at | Order expiration time (ISO 8601). Payment must be sent before this time |
| qr_code_url | URL to QR code image for easy payment |
Order Lifecycle
After creating an order, it follows this lifecycle:
- NEW - Order created, waiting for deposit
- PENDING - Deposit received, waiting for confirmations
- EXCHANGE - Funds being exchanged
- WITHDRAW - Sending funds to destination address
- DONE - Order completed successfully
- EXPIRED - Order expired without payment
- EMERGENCY - Requires user action
Validation Rules
- •Amount must be within min/max limits for the currency pair
- •Destination address must be valid for the destination network
- •Currency pair must be supported and enabled
- •Network compatibility must be valid (e.g., can't use TRC20 for BTC)
- •For fixed rate orders, the rate must not have expired
Error Responses
Invalid Address
{
"error": true,
"error_code": "INVALID_ADDRESS",
"message": "Destination address is invalid for network ERC20"
}Amount Out of Range
{
"error": true,
"error_code": "AMOUNT_OUT_OF_RANGE",
"message": "Amount must be between 0.01 and 1000.0",
"min_amount": 0.01,
"max_amount": 1000.0
}Rate Expired
{
"error": true,
"error_code": "RATE_EXPIRED",
"message": "Fixed rate has expired. Please request a new rate."
}