Skip to main content

Create a Wallet-to-Wallet Transfer (New)

Overview

The wallet-to-wallet transfer API enables seamless, instant movement of funds between two wallets holding the same currency within your account. This is ideal for internal balance rebalancing, allocating funds to dedicated operational wallets, or segregating merchant pools without incurring foreign exchange conversion costs.

Resource Access

  • HTTP Method: POST
  • Endpoint: /banking/ibans/v2/transfer
  • Authentication: Bearer token required

Request Headers

HeaderValueRequiredDescription
AuthorizationBearer {access_token}YesJWT Bearer access token
Content-Typeapplication/jsonYesRequest payload format
Acceptapplication/jsonYesResponse payload format
x-api-keystringNoOptional API key

Request Body

Request Fields

FieldTypeRequiredDescription
amountnumberYesThe amount you intend to deduct from the source wallet (e.g. 200).
currencystringYes3-character ISO currency code of both wallets (e.g. USD). Must match both source and target wallets.
sourceWalletIdnumberYesThe wallet ID from which funds are deducted (e.g. 8599).
targetWalletIdnumberYesThe wallet ID to be funded (e.g. 90033).
descriptionstringNoOptional description or purpose for the transfer (e.g. Internal funds movement).
externalUniqueRefstringNoClient-supplied idempotency key or unique reference identifier.

Request Example

{
"amount": 200,
"currency": "USD",
"sourceWalletId": 8599,
"targetWalletId": 90033,
"description": "Internal rebalancing to operational wallet",
"externalUniqueRef": "71467f6d-58ed-400f-89b6-20db028fb498"
}

Response

Success Response (200 OK)

{
"result": {
"amount": 200,
"currency": "USD",
"reference": "T0-28052024-046",
"description": "Internal rebalancing to operational wallet",
"sourceWalletId": 8599,
"targetWalletId": 90033,
"state": "completed",
"externalUniqueRef": "71467f6d-58ed-400f-89b6-20db028fb498"
}
}

Response Fields

FieldTypeDescription
result.amountnumberAmount transferred.
result.currencystringISO currency code.
result.referencestringUnique transaction reference identifying the transfer.
result.sourceWalletIdnumberSource wallet identifier.
result.targetWalletIdnumberTarget wallet identifier.
result.descriptionstringDescription associated with the transaction.
result.statestringExecution state (completed or failed).
result.externalUniqueRefstringClient-provided external identifier.

Error Responses

  • 400 Bad Request: Mismatched currencies between wallets, invalid wallet IDs, or insufficient source funds.
  • 401 Unauthorized: Missing or invalid Bearer authentication token.
  • 403 Forbidden: Insufficient account permissions to access one or both wallets.
  • 404 Not Found: Source or target wallet does not exist.
  • 500 Internal Server Error: Internal processing failure.

Code Examples

Base URL

Production: https://api.ahrvo.network
Staging: https://gateway.ahrvo.network

cURL

curl -X POST \
'https://gateway.ahrvo.network/banking/ibans/v2/transfer' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"amount": 200,
"currency": "USD",
"sourceWalletId": 8599,
"targetWalletId": 90033,
"description": "Internal rebalancing",
"externalUniqueRef": "71467f6d-58ed-400f-89b6-20db028fb498"
}'

Python

import requests

url = "https://gateway.ahrvo.network/banking/ibans/v2/transfer"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
payload = {
"amount": 200,
"currency": "USD",
"sourceWalletId": 8599,
"targetWalletId": 90033,
"description": "Internal rebalancing",
"externalUniqueRef": "71467f6d-58ed-400f-89b6-20db028fb498"
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code, response.json())

JavaScript (Node.js)

const axios = require('axios');

const url = 'https://gateway.ahrvo.network/banking/ibans/v2/transfer';
const headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
};

const payload = {
amount: 200,
currency: 'USD',
sourceWalletId: 8599,
targetWalletId: 90033,
description: 'Internal rebalancing',
externalUniqueRef: '71467f6d-58ed-400f-89b6-20db028fb498'
};

axios.post(url, payload, { headers })
.then(res => console.log(res.data))
.catch(err => console.error(err.response ? err.response.data : err.message));

Interactive API Explorer