Payouts
Send money to registered beneficiaries using supported payment rails. Generate a payout quote first to determine the applicable fees and exchange rate, then execute the payout using the valid quote.
Payout Quote
Generates a quote for a payout, including applicable fees and the FX rate when currency conversion is required.
{{baseUrl}}/hashdt/banking/api/v1/payouts/quote
Description
This API is used to calculate the expected payout cost before executing a payout. The quote includes applicable fees and, when the payout currency differs from the funding currency, the exchange rate and conversion details. The quote remains valid for approximately 75 seconds and should be used promptly for payout execution.
📩 Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
📦 Request Body
companyCode string required
beneficiaryId string required
destinationRail string required
sourceAssetCode string required
destinationAssetCode string
sourceAccountId string required
amount double required
side string required
amount represents the source amount or the destination amount. Allowed values: SOURCE or TARGET.- 🧩 Examples
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request POST \
--url '{{baseUrl}}/hashdt/banking/api/v1/payouts/quote' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"companyCode": "{{Shared Company Code}}",
"beneficiaryId": "{{BeneficiaryID}}",
"destinationRail": "SWIFT",
"sourceAssetCode": "USD",
"sourceAccountId": "ACC_1234567890",
"amount": 10,
"side": "SOURCE"
}'
import requests
import json
url = "{{baseUrl}}/hashdt/banking/api/v1/payouts/quote"
payload = json.dumps({
"companyCode": "{{Shared Company Code}}",
"beneficiaryId": "{{BeneficiaryID}}",
"destinationRail": "SWIFT",
"sourceAssetCode": "USD",
"sourceAccountId": "ACC_1234567890",
"amount": 10,
"side": "SOURCE"
})
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"companyCode\": \"{{Shared Company Code}}\",\r\n \"beneficiaryId\": \"{{BeneficiaryID}}\",\r\n \"destinationRail\": \"SWIFT\",\r\n \"sourceAssetCode\": \"USD\",\r\n \"sourceAccountId\": \"ACC_1234567890\",\r\n \"amount\": 10,\r\n \"side\": \"SOURCE\"\r\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/hashdt/banking/api/v1/payouts/quote")
.method("POST", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"companyCode": "{{Shared Company Code}}",
"beneficiaryId": "{{BeneficiaryID}}",
"destinationRail": "SWIFT",
"sourceAssetCode": "USD",
"sourceAccountId": "ACC_1234567890",
"amount": 10,
"side": "SOURCE"
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{{baseUrl}}/hashdt/banking/api/v1/payouts/quote',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200
- 400
{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"quoteId": "7dbf1ca7-7c44-4cbf-b806-169a8bdbc9e3",
"sourceAssetCode": "USD",
"destinationAssetCode": "USD",
"sourceAmount": 10,
"destinationAmount": 10,
"fxRate": 1,
"processingFee": null,
"networkFee": null,
"feeAssetCode": "USD",
"platformFee": 36.00000,
"totalDebitAmount": 46.00000,
"expiresAt": "2026-08-25T07:38:29.323014969Z"
}
}
{
"code": 400,
"status": "error",
"message": "Error Message"
}
Create Payout
Executes a payout to a registered beneficiary.
{{baseUrl}}/hashdt/banking/api/v1/payouts
Description
This API is used to initiate a payout to a registered beneficiary. A successful request returns 202 Accepted, indicating that the payout has been accepted for processing but is not yet settled. Use the returned payoutId with the Payout Status API to track the payout outcome.
📩 Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
📦 Request Body
companyCode string required
quoteId string required
purposeCode string required
Purpose of the payout. Must be one of:
- AUDIO_VISUAL_SERVICES - Audiovisual services.
- BILL_PAYMENT - Bill payment.
- BUSINESS_EXPENSES - Business expenses.
- CONSTRUCTION - Construction.
- DONATION_CHARITABLE_CONTRIBUTION - Donation/charitable contribution.
- EDUCATION_TRAINING - Education/training.
- FAMILY_SUPPORT - Family support.
- FREIGHT - Freight.
- GOODS_PURCHASED - Goods purchased.
- INVESTMENT_CAPITAL - Investment capital.
- INVESTMENT_PROCEEDS - Investment proceeds.
- LIVING_EXPENSES - Living expenses.
- LOAN_CREDIT_REPAYMENT - Loan/credit repayment.
- MEDICAL_SERVICES - Medical services.
- PENSION - Pension.
- PERSONAL_REMITTANCE - Personal remittance.
- PROFESSIONAL_BUSINESS_SERVICES - Professional/business services.
- REAL_ESTATE - Real estate.
- TAXES - Taxes.
- TECHNICAL_SERVICES - Technical services.
- TRANSFER_TO_OWN_ACCOUNT - Transfer to own account.
- TRAVEL - Travel.
- WAGES_SALARY - Wages/salary.
reference string
clientReference string
- 🧩 Examples
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request POST \
--url '{{baseUrl}}/hashdt/banking/api/v1/payouts' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"companyCode": "{{Shared Company Code}}",
"quoteId": "payout-quote-id",
"purposeCode": "PERSONAL_REMITTANCE",
"reference": "PAYOUT-20260819-001",
"clientReference": "ORDER-001"
}'
import requests
import json
url = "{{baseUrl}}/hashdt/banking/api/v1/payouts"
payload = json.dumps({
"companyCode": "{{Shared Company Code}}",
"quoteId": "payout-quote-id",
"purposeCode": "PERSONAL_REMITTANCE",
"reference": "PAYOUT-20260819-001",
"clientReference": "ORDER-001"
})
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"companyCode\": \"{{Shared Company Code}}\",\r\n \"quoteId\": \"payout-quote-id\",\r\n \"purposeCode\": \"PERSONAL_REMITTANCE\",\r\n \"reference\": \"PAYOUT-20260819-001\",\r\n \"clientReference\": \"ORDER-001\"\r\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/hashdt/banking/api/v1/payouts")
.method("POST", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"companyCode": "{{Shared Company Code}}",
"quoteId": "payout-quote-id",
"purposeCode": "PERSONAL_REMITTANCE",
"reference": "PAYOUT-20260819-001",
"clientReference": "ORDER-001"
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{{baseUrl}}/hashdt/banking/api/v1/payouts',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 202
- 400
{
"code": 202,
"status": "SUCCESS",
"message": "Accepted",
"data": {
"payoutId": "7f2a7c91-3d64-4b18-9e52-71c5a8d04f36",
"externalReference": "c1e9b472-6a35-4d87-bf20-93e5c7a14862",
"status": "PENDING"
}
}
{
"code": 400,
"status": "error",
"message": "Error Message"
}
Payout Status
Retrieves the current details of an initiated payout.
{{baseUrl}}/hashdt/banking/api/v1/payouts/:payoutID
Description
This API is used to retrieve the latest information for a payout using its payoutID. The response provides the payout details and its current processing information.
🔗 Path Parameters
payoutID string required
📩 Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
- 🧩 Examples
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request GET \
--url '{{baseUrl}}/hashdt/banking/api/v1/payouts/:payoutID' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
import requests
import json
url = "{{baseUrl}}/hashdt/banking/api/v1/payouts/:payoutID"
payload = {}
headers = {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/hashdt/banking/api/v1/payouts/:payoutID")
.method("GET", body)
.addHeader("x-api-key", "{{Shared X-API key}}")
.addHeader("x-product-id", "{{Shared ProductID}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{{baseUrl}}/hashdt/banking/api/v1/payouts/:payoutID',
headers: {
'x-api-key': '{{Shared X-API key}}',
'x-product-id': '{{Shared ProductID}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200
- 400
{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"payoutId": "7f2a7c91-3d64-4b18-9e52-71c5a8d04f36",
"externalReference": "c1e9b472-6a35-4d87-bf20-93e5c7a14862",
"status": "PENDING"
}
}
{
"code": 400,
"status": "error",
"message": "Error Message"
}