Wallet transfers
Move funds between your own stablecoin and fiat wallets
Overview
A wallet transfer moves funds between two wallets you own — for example, consolidating a collected USDC balance into your EUR target wallet on demand, without going through a payment or .
If the source and target wallets share a currency, Volt performs an internal ledger move (INTERNAL); if they differ, Volt converts the funds at the prevailing rate (CONVERSION) — you don't choose this explicitly.
Create the transfer
Requires an Idempotency-Key header (1–64 characters).
| Field | Type | Required | Description |
|---|---|---|---|
sourceWalletId | UUID | Yes | The to move funds from. |
targetWalletId | UUID | Yes | The to move funds to. |
amount | String | Yes | Positive decimal amount in major units — 2 decimal places for a fiat wallet, 6 for a crypto wallet. |
internalReference | String | No | Your own label for the transfer (up to 100 characters). Not used for deduplication — use Idempotency-Key for that. |
{
"sourceWalletId": "a1b2c3d4-1234-5678-9abc-def012345678",
"targetWalletId": "e5f6a7b8-9012-3456-7890-abcdef123456",
"amount": "100.00",
"internalReference": "monthly-sweep"
}{
"id": "f1e2d3c4-1234-5678-9abc-def012345678",
"status": "PENDING",
"type": "CONVERSION",
"internalReference": "monthly-sweep",
"source": {
"walletId": "a1b2c3d4-1234-5678-9abc-def012345678",
"currency": "USDC",
"amount": "100.00"
},
"target": {
"walletId": "e5f6a7b8-9012-3456-7890-abcdef123456",
"currency": "EUR",
"amount": null
},
"rate": null,
"failureReason": null,
"createdAt": "2026-04-08T10:12:04Z",
"updatedAt": "2026-04-08T10:12:04Z"
}A transfer is always created as PENDING — target.amount and rate are only populated once a CONVERSION transfer completes.
Wallet transfer statuses
| Status | Description |
|---|---|
PENDING | Transfer created, not yet processed. |
PROCESSING | Transfer is being executed. |
COMPLETED | Funds moved successfully. |
FAILED | Transfer failed — see failureReason. |
When a transfer ends in FAILED, failureReason explains why:
| Failure reason | Description |
|---|---|
INSUFFICIENT_FUNDS | The source wallet does not have enough funds. |
WALLET_NOT_FOUND | One of the specified wallets was not found. |
WALLET_MERCHANT_MISMATCH | One of the wallets does not belong to your account. |
REJECTED_BY_PROVIDER | The transfer was rejected by the provider. |
INTERNAL_ERROR | An internal error occurred. |
Reference
Full wallet transfers API reference can be found .
How is this guide?
Last updated on