# Transactions

Bellow you can find endpoints for managing users' transactions. These endpoints are available only for users which kyc status set to verified.

# Estimate transaction's cost

Returns the information regarding transaction's cost

Endpoint

POST /api/transactions/estimate

Payload attributes

Parameter Default Description
type none Required. "sell" or "buy"
cryptoCurrency none Required. One of the supported cryptocurrencies
method none Optional. One of the supported methods
currency none Optional. Fiat Currency. Either this field or method must be specified
fiat none Optional. Either fiat or crypto must be specified
crypto none Optional. Either fiat or crypto must be specified

Response

Parameter Description
crypto Amount of crypto after conversion(without service charge)
fiat Amount of fiat after conversion(without service charge)
serviceCharge Service charge in crypto
total Final amount after service charge. Crypto for buying transaction & fiat for selling.
currency Fiat currency
cryptoPrice Price of the cryptocurrency in local currency
cryptoPriceUsd Price of the cryptocurrency in USD

Request Example

curl -H "Content-Type: application/json" 
-X POST "https://xanpool.com/api/transactions/estimate" 
-d '{"type": "buy", "crypto": 0.007, "method": "paynow", "cryptoCurrency": "BTC"}'

Response

{
  "crypto":0.007,
  "fiat":69.62,
  "cryptoPrice":9946.058850000001,
  "cryptoPriceUsd":7371,
  "total":0.00686,
  "serviceCharge":0.00014,
  "referralDiscount":0,
  "referralDiscountInXlp":0,
  "referralDiscountInUsd":0,
  "payoutServiceCharge":0,
  "earnedXlp":3.9198910024610143,
  "processingTime":"5-30 minutes",
  "currency":"SGD"
}

# Create a buying transaction

Creates a purchasing crypto transaction.

Endpoint

POST /api/users/{userId}/transactions

Payload attributes

Parameter Default Description
type none Should be "buy"
fiat none Amount in local currency
method none One of the supported methods
cryptoCurrency none One of the supported cryptocurrencies
wallet none Destination wallet
chain Optional This parameter is required for currencies which are supported by multiple chains, either zilliqa, ethereum, tron or binance_smart_chain
miningPlan Optional Either slow, moderate or fast

Response

Response contains a transaction object

Request Example

curl "https://xanpool.com/api/users/{userId}/transactions"
  -X POST
  -H "Content-Type: application/json"  
  -u {API_KEY}:{API_SECRET} or # -H "Authorization: Bearer ${TOKEN}"  
  -d '{"type": "buy", "fiat": 100, "method": "paynow", "cryptoCurrency": "BTC", "wallet": "1GJR22e15dDSTF3M3c4uwchY1wAoyt5Tm8"}'

Response

{
    "id": "5e1fcb31632fcd001206cbd5",
    "type": "buy",
    "status": "pending",
    "method": "paynow",
    "crypto": 0.008583,
    "fiat": 100,
    "total": 0.008411,
    "currency": "SGD",
    "cryptoCurrency": "BTC",
    "serviceCharge": 0.000172,
    "cryptoPrice": 11650.87038,
    "cryptoPriceUsd": 8655.6,
    "nonce": "yard",
    "partnerData": "user111".
    "walet": "1GJR22e15dDSTF3M3c4uwchY1wAoyt5Tm8",
    "qrCode: "00020101021126380009SG.PAYNOW010100211877671920301052040000530370254040.015802SG5902NA6009Singapore62110107hallway6304E484",
    "peer": {
        "account": "+6586667192"
    }
}

# Create a selling transaction

Creates a selling crypto transaction

Endpoint

POST /api/users/{userId}/transactions

Payload attributes

Parameter Default Description
type none Should be "sell"
crypto none Amount of crypto being sold
method none One of the supported methods
cryptoCurrency none One of the supported cryptocurrencies
destination none Fiat's destination, please check Destination attributes

Response

Response contains a transaction object

Request Example

curl "https://xanpool.com/api/users/{userId}/transactions"
  -X POST
  -H "Content-Type: application/json"  
  -u {API_KEY}:{API_SECRET} or # -H "Authorization: Bearer ${TOKEN}"  
  -d '{"type": "sell", "crypto": 0.1, "method": "paynow", "cryptoCurrency": "BTC", "destination" : {"phone": {{"phone": "87761111", "code": "+65"}}}  '

Response

{
    "id": "5e1fca5adf1be500129ffbe0",
    "type": "sell",
    "status": "pending",
    "method": "paynow",
    "crypto": 0.1,
    "fiat": 1164.33,
    "total": 1129.4,
    "currency": "SGD",
    "cryptoCurrency": "BTC",
    "serviceCharge": 0.003,
    "cryptoPrice": 11643.3325,
    "cryptoPriceUsd": 8650,
    "depositWallets": {
        "bitcoin": "bc1q394vqe6he7jrv8ad35vhgeu2vnzs606ykmx4c4",
        "legacyBitcoin": "1KgXh9aRWnxZpAwqQqM8n9KDrZw2Aju2sa"
    }
}

# Cancel a transaction

Cancel a single pending transaction.

Endpoint

POST /api/users/{id}/transactions/{id}/cancel

Response

Response contains a transaction object

Request Example

curl "https://xanpool.com/api/users/{id}/transactions/{id}/cancel"
 -H "Content-Type: application/json"
 -H "Authorization: Bearer ${TOKEN}"  or # -H "Authorization: Bearer ${TOKEN}"

Response

{
    "id": "5e1fca5adf1be500129ffbe0",
    "status": "cancelled",
    "method": "paynow",
    "type": "buy",
    "crypto": 0.1,
    "fiat": 1164.33,
    "total": 1129.4,
    "currency": "SGD",
    "cryptoCurrency": "BTC",
    "cryptoPrice": 11643.3325,
    "cryptoPriceUsd": 8650,
    "userId": "7c089db6018ed51324c020cd",
    "userCountry": "SG"
    "partnerData": "user111"
    "peer": {"account": "95496922"}
}

# Get transactions with filters v2

Returns the list of all partner's transactions with pagination and filtering.

Endpoint

GET /api/v2/transactions

Query attributes

Parameter Default Description
page none For page based pagination. Should start with 0 (required)
pageSize none Size of the page (required)
status none One of valid transaction status, please refer to statuses
from none Filter transactions from creation date and onwards
to none Filter transactions to creation date

Response

Response contains an object with list of transaction objects and total transactions count.

Request Example

curl "https://xanpool.com/api/v2/transactions"
 -H "Content-Type: application/json" 
 -u {API_KEY}:{API_SECRET}

Response

{
    data: [{
        "id": "5e1fca5adf1be500129ffbe0",
        "status": "pending",
        "method": "paynow",
        "type": "sell",
        "crypto": 0.1,
        "fiat": 1164.33,
        "total": 1129.4,
        "currency": "SGD",
        "cryptoCurrency": "BTC",
        "serviceCharge": 0.003,
        "cryptoPrice": 11643.3325,
        "cryptoPriceUsd": 8650,
        "userId": "7c089db6018ed51324c020cd",
        "userCountry": "SG",
        "depositWallets": {
            "bitcoin": "bc1q394vqe6he7jrv8ad35vhgeu2vnzs606ykmx4c4",
            "legacyBitcoin": "1KgXh9aRWnxZpAwqQqM8n9KDrZw2Aju2sa"
        }
    }],
    total: 20
}

# Get transactions

Returns the list of all partner's transactions

Endpoint

GET /api/transactions

Response

Response contains a list of transaction objects

Request Example

curl "https://xanpool.com/api/transactions"
 -H "Content-Type: application/json" 
 -u {API_KEY}:{API_SECRET}

Response

[{
    "id": "5e1fca5adf1be500129ffbe0",
    "status": "pending",
    "method": "paynow",
    "type": "sell",
    "crypto": 0.1,
    "fiat": 1164.33,
    "total": 1129.4,
    "currency": "SGD",
    "cryptoCurrency": "BTC",
    "serviceCharge": 0.003,
    "cryptoPrice": 11643.3325,
    "cryptoPriceUsd": 8650,
    "userId": "7c089db6018ed51324c020cd",
    "userCountry": "SG",
    "depositWallets": {
        "bitcoin": "bc1q394vqe6he7jrv8ad35vhgeu2vnzs606ykmx4c4",
        "legacyBitcoin": "1KgXh9aRWnxZpAwqQqM8n9KDrZw2Aju2sa"
    }
}]

# Get transaction

Returns a single transaction.

Endpoint

GET /api/transactions/{id}

Response

Response contains a transaction object

Request Example

curl "https://xanpool.com/api/transactions/{id}"
 -H "Content-Type: application/json"
 -H "Authorization: Bearer ${TOKEN}"  or # -H "Authorization: Bearer ${TOKEN}"

Response

{
    "id": "5e1fca5adf1be500129ffbe0",
    "status": "pending",
    "method": "paynow",
    "type": "sell",
    "crypto": 0.1,
    "fiat": 1164.33,
    "total": 1129.4,
    "currency": "SGD",
    "cryptoCurrency": "BTC",
    "serviceCharge": 0.003,
    "cryptoPrice": 11643.3325,
    "cryptoPriceUsd": 8650,
    "userId": "7c089db6018ed51324c020cd",
    "userCountry": "SG",
    "depositWallets": {
        "bitcoin": "bc1q394vqe6he7jrv8ad35vhgeu2vnzs606ykmx4c4",
        "legacyBitcoin": "1KgXh9aRWnxZpAwqQqM8n9KDrZw2Aju2sa"
    }
}

# Update Transaction Status [Available only on Sandbox]

Updates the transaction status to the specified value.

This endpoint only supports "fiat_received" as status update currently.

Endpoint

POST /api/transactions/{id}

Response

Response contains a transaction object

Request Example

 curl "https://xanpool.com/api/transactions/5e1fca5adf1be500129ffbe0"
  -X POST
  -H "Content-Type: application/json"  
  -u {API_KEY}:{API_SECRET} or # -H "Authorization: Bearer ${TOKEN}"  
  -d '{"status": "fiat_received"}'

Response

{
    "id": "5e1fca5adf1be500129ffbe0",
    "status": "fiat_received",
    "method": "paynow",
    "type": "sell",
    "crypto": 0.1,
    "fiat": 1164.33,
    "total": 1129.4,
    "currency": "SGD",
    "cryptoCurrency": "BTC",
    "serviceCharge": 0.003,
    "cryptoPrice": 11643.3325,
    "cryptoPriceUsd": 8650,
    "userId": "7c089db6018ed51324c020cd",
    "userCountry": "SG",
    "partnerId": "63f742639813246f989e4f32",
    "depositWallets": {
        "bitcoin": "bc1q394vqe6he7jrv8ad35vhgeu2vnzs606ykmx4c4",
        "legacyBitcoin": "1KgXh9aRWnxZpAwqQqM8n9KDrZw2Aju2sa"
    }
}

# Webhook

If you would like to receive all transactions related updates on your server without constantly triggering REST API, you can set up a webhook in partner's dashboard. Webhook is an http endpoint that receives notifications.

Notification format

Parameter Description
message Type of message, currently only TRANSACTION_UPDATED is supported
timestamp Timestamp of the update
payload Payload, in case of TRANSACTION_UPDATED it will be transaction object

Example of notification

{
  "message": "TRANSACTION_UPDATED", 
  "timestamp": 1588654478993, 
  "payload": {
      "id": "5eb0f18e8a0aeb001902614c", 
      "type": "buy", 
      "status": "pending", 
      "method": "fps", 
      "crypto": 0.004101, 
      "fiat": 273.11, 
      "total": 0.003998, 
      "currency": "HKD", 
      "cryptoCurrency": "BTC", 
      "serviceCharge": 0.000102, 
      "cryptoPrice": 66590.2221864985, 
      "cryptoPriceUsd": 8622.474300000002, 
      "nonce": "spoon", 
      "userCountry": "HK", 
      "userId": "5e75c2912032e5001389cfa1",
      "partnerData": "user111",
      "wallet": "bc1qjl8uwezzlech723lpnyuza0h2cdkvxvh54v3dn", 
      "peer": {"account": "9549692"}
  }
}

# Transaction Object

Parameter Description
id Unique ID of the transaction
status Current status of the transaction, please refer to statuses
method Method used in the transaction, please refer to supported methods
type sell or buy
crypto Amount of crypto after conversion(without service charge)
fiat Amount of fiat after conversion(without service charge)
serviceCharge Service charge in crypto
total Final of crypto user is getting for buying transaction, or fiat for selling.
currency Fiat currency
cryptoCurrency Crypto currency
cryptoPrice Price of the crypto in local currency
cryptoPriceUsd Price of the crypto in USD
userId Id of the user
userCountry User's country
partnerData A string that could help a partner to track/identify a transaction
blockchainTxId Blockchain transaction id for successful transactions
internalTxId Internal transaction id if internalAddress was used
wallet Blockchain wallet for buying transaction
depositWallets Deposit wallets for a selling transaction. An object containing bitcoin, legacyBitcoin, ethereum addresses.

# Destination attributes

Destination is an object containing some of the following fields - phone, code, bank, account, accountName. Each method requires a certain set of the fields that you can find below.

Methods Required Fields Description
Paynow, AliPayHK, PromptPay, Viettel Pay, Go Jek phone, code Phone & country code
Bank Transfers, InstaPay bank, account, accountName Bank account information
UPI, FPS accountName Account name for an UPI account

# Transaction statuses

Status Description
pending Pending payment from the user(either crypto or fiat)
processing For buying, crypto tx has been initiated to user on blockchain and is being mined
completed The final successful state, either crypto or fiat has been sent(not mined) to the user
fiat_received Received fiat from the user during purchasing crypto
btc_in_mempool Crypto has reached the mempool during selling
btc_received Reached enough confirmations for releasing fiat during selling
expired_fiat_not_received Fiat hasn't been received during purchasing crypto in 1 hour.
expired_btc_not_in_mempool Crypto hasn't been received during selling crypto in 3 hours.
payout_failed Couldn't send fiat/crypto to user. Transaction will be moderated
refunded Transaction has been refunded
cancelled Transaction was cancelled by a user

# Currencies' Precision

Below you can find precision for each currency used on XanPool during transactions, this precision doesn't apply to pairs' prices, for instance, USDT/SGD could be shown as 1.442 for user's convenience.

Currency Fraction part
BTC 6 digits
ETH 4 digits
ZIL 2 digits
USDT 2 digits
XSGD 2 digits
NEM 2 digits
IDR no fraction part
VND no fraction part
SGD 2 digits
HKD 2 digits
THB 2 digits
INR 2 digits
MYR 2 digits
PHP 2 digits