Create Order

Create a new cryptocurrency exchange order with specified parameters

Endpoint

POST/v1/order/create

This endpoint requires authentication

Required Parameters

ParameterTypeDescription
fromStringSource currency code (e.g., BTC, USDT, BNB)
from_networkStringSource blockchain network (ERC20, TRC20, BEP20, or native)
toStringDestination currency code
to_networkStringDestination blockchain network
amountNumberAmount to exchange (must be within min/max limits)
rate_typeString"fixed" or "float" - rate type for the order
destinationStringDestination wallet address to receive exchanged funds

Optional Parameters

ParameterTypeDescription
destination_tagStringMemo/tag for currencies that require it (XRP, XLM, etc.)
refund_addressStringAddress to refund to if order fails (defaults to source)
callback_urlStringWebhook 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

FieldDescription
order_idUnique order identifier (format: MM followed by numbers)
statusCurrent order status (NEW, PENDING, EXCHANGE, etc.)
deposit_addressAddress where user should send funds
deposit_amountExact amount to deposit (may include network fees)
receive_amountAmount user will receive after exchange
rateExchange rate used for this order
expires_atOrder expiration time (ISO 8601). Payment must be sent before this time
qr_code_urlURL to QR code image for easy payment

Order Lifecycle

After creating an order, it follows this lifecycle:

  1. NEW - Order created, waiting for deposit
  2. PENDING - Deposit received, waiting for confirmations
  3. EXCHANGE - Funds being exchanged
  4. WITHDRAW - Sending funds to destination address
  5. DONE - Order completed successfully
  6. EXPIRED - Order expired without payment
  7. 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."
}