Swap between currencies within your Neutron wallet — BTC to fiat, fiat to USDT, BTC to USDT, and more. Both sides use "neutronpay" since funds stay inside Neutron.
Overview
Your BTC Wallet ──swap──► Your VND Wallet (BTC → Fiat)
Your BTC Wallet ──swap──► Your USDT Wallet (BTC → USDT)
Your USDT Wallet ──swap──► Your BTC Wallet (USDT → BTC)
Your VND Wallet ──swap──► Your BTC Wallet (Fiat → BTC)
All swaps use the same transaction endpoint — just change the ccy fields.
Create a Swap
BTC → Fiat Example
Convert BTC to 1,000,000 VND:
curl -X POST https://api.neutron.me/api/v2/transaction/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"sourceReq": {
"ccy": "BTC",
"method": "neutronpay",
"reqDetails": {}
},
"destReq": {
"ccy": "VND",
"amtRequested": 1000000,
"method": "neutronpay",
"reqDetails": {}
}
}'BTC → USDT Example
Convert 0.001 BTC to USDT:
curl -X POST https://api.neutron.me/api/v2/transaction/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"sourceReq": {
"ccy": "BTC",
"amtRequested": 0.001,
"method": "neutronpay",
"reqDetails": {}
},
"destReq": {
"ccy": "USDT",
"method": "neutronpay",
"reqDetails": {}
}
}'USDT → BTC Example
Convert 100 USDT to BTC:
curl -X POST https://api.neutron.me/api/v2/transaction/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"sourceReq": {
"ccy": "USDT",
"amtRequested": 100,
"method": "neutronpay",
"reqDetails": {}
},
"destReq": {
"ccy": "BTC",
"method": "neutronpay",
"reqDetails": {}
}
}'Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
sourceReq.ccy | string | ✅ | Source currency ("BTC", "USDT", "VND", etc.) |
sourceReq.method | string | ✅ | "neutronpay" (always — funds are in your wallet) |
sourceReq.amtRequested | number | ⚡ | Amount to convert FROM (set on source or dest, not both) |
destReq.ccy | string | ✅ | Destination currency |
destReq.method | string | ✅ | "neutronpay" (always — funds stay in your wallet) |
destReq.amtRequested | number | ⚡ | Amount to convert TO (set on source or dest, not both) |
extRefId | string | ❌ | Your own reference ID |
Set the amount on one side only. Setting it on the source means "convert this much". Setting it on the dest means "I want to receive this much".
Response
{
"txnId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"accountId": "ne01-abc123def456",
"txnState": "quoted",
"sourceReq": {
"ccy": "BTC",
"method": "neutronpay",
"amtRequested": 0.001,
"neutronpayFees": 0,
"reqStatus": "0"
},
"destReq": {
"ccy": "USDT",
"method": "neutronpay",
"amtRequested": 97.50,
"reqStatus": "0"
},
"fxRate": 97500.00,
"createdAt": 1770342000000
}The fxRate shows the exchange rate applied. Review it before confirming.
Confirm the Swap
curl -X PUT https://api.neutron.me/api/v2/transaction/a1b2c3d4-5678-90ab-cdef-1234567890ab/confirm \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Swaps between internal wallets settle instantly after confirmation.
Supported Currency Pairs
Swaps work between any currencies in your Neutron wallet:
| From | To | Example |
|---|---|---|
| BTC | USDT | Bitcoin to stablecoin |
| BTC | VND, USD, CAD, etc. | Bitcoin to fiat |
| USDT | BTC | Stablecoin to Bitcoin |
| VND | BTC | Fiat to Bitcoin |
| USDT | VND | Stablecoin to fiat |
Use the Exchange Rates endpoint to check current rates before swapping.
Transaction States
| State | Meaning |
|---|---|
quoted | Swap quoted — review the rate and confirm |
completed | Swap executed ✅ |
expired | Quote expired before confirmation |
usercanceled | Cancelled before confirmation |
Internal swaps complete instantly — no srccreated or destsent intermediate states.
Notes
- No KYC required for internal swaps. KYC is only needed for fiat payouts to external bank accounts.
- Swap quotes have an expiry time. Confirm promptly to lock the rate.
- Exchange rates fluctuate. Use
fxRatein the response to verify the rate before confirming. - No network fees for swaps — funds never leave Neutron.
Related
- Exchange Rates — Check current rates
- Send Stablecoin — Send USDT to an external TRON/ETH address
- Transaction Status Types — Complete state reference
