POST /transfer/create
Initiates a USDT settlement from your reserve to a recipient gateway. Vonos debits your balance, credits theirs, and returns a signed proof you can use to complete the payment on the recipient’s side.
Prerequisites
- Both you and the recipient must have active Vonos accounts.
- The recipient must be in your recipients list (Settings in the Vonos dashboard).
- Vonos’ OCID must be in the recipient gateway’s
accepts list.
Request
{
"from": {
"ocid": 200,
"reference": "internal_ref_001"
},
"to": {
"ocid": 500,
"reference": "gateway_txid_from_payment_create"
},
"amount": "10.00",
"currency": "USDT"
}
| Field | Type | Description |
|---|
from.ocid | number | Your OCID |
from.reference | string | Your internal reference for this transfer |
to.ocid | number | Recipient gateway’s OCID |
to.reference | string | The txid you received from the recipient’s /payment/create |
amount | string | Settlement amount |
currency | string | Must be USDT |
Response
{
"status": "completed",
"txid": "vonos_tx_abc123",
"proof": {
"txid": "vonos_tx_abc123",
"issuer": 100,
"from": { "ocid": 200, "reference": "internal_ref_001" },
"to": { "ocid": 500, "reference": "gateway_txid_from_payment_create" },
"amount": "10.00",
"currency": "USDT",
"timestamp": 1706500500
},
"signature": "a1b2c3d4..."
}
| Field | Description |
|---|
status | completed on success |
txid | Vonos transaction ID — use with /verify if you need to confirm later |
proof | The signed transfer proof — pass this to the recipient’s /payment/settle |
signature | Vonos’ signature over the proof. The recipient uses this to verify |
Example
const response = await fetch('https://api.vonos.io/transfer/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
...createAuthHeaders(YOUR_OCID, YOUR_PRIVATE_KEY)
},
body: JSON.stringify({
from: { ocid: YOUR_OCID, reference: `order_${orderId}` },
to: { ocid: recipientOcid, reference: recipientTxid },
amount: order.amount,
currency: 'USDT'
})
});
const { proof, signature, txid } = await response.json();
// Complete the payment on the recipient's side
await fetch(`${recipientEndpoint}/payment/settle`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
...createAuthHeaders(YOUR_OCID, YOUR_PRIVATE_KEY)
},
body: JSON.stringify({ txid: recipientTxid, proof, signature })
});
Vonos also notifies the recipient gateway on their /transfer/webhook with the same proof automatically. Calling /payment/settle yourself is still recommended — it gives you an explicit confirmation that the recipient received and accepted the settlement.