Skip to main content

Create Payment

Overview

Make a payment to a bank account or to another Ahrvo account. The required parameters vary based on:

  • Payment destination (bank account vs Ahrvo account)
  • Currency requirements (same currency vs currency conversion needed)
  • POBO (Pay On Behalf Of) requirements

Resource Access

  • HTTP Method: POST
  • Endpoint: /banking/iban/api/payout/v2/create
  • Authentication: Bearer token required

Request Headers

HeaderValueRequiredDescription
Acceptapplication/jsonYesContent type for the response
AuthorizationBearer {access_token}YesBearer token for authentication
Content-Typeapplication/jsonYesRequest body content type
on-behalf-ofstringNoCustomer ID for on-behalf-of operations

Request Body

{
"biz_id": "VA202501142006502111",
"payout_type": "PAYOUT",
"purpose_code": "1001",
"origin_currency": "USD",
"target_currency": "INR",
"target_amount": 123.45,
"rate_id": "202501092053115499258",
"partner_order_id": "2024834713M3STH",
"partner_user_id": "2024834713M3STH",
"reference": "Invoice payment",
"to_account_id": "R202412311029369694",
"use_pobo": "Y",
"pobo_id": "M2023498278424",
"clearing_network": "SWIFT",
"payment_method": "CROSS-BORDER",
"fee_bear": "OUR"
}

Request Fields

FieldTypeRequiredDescription
biz_idstringYesVirtual account ID to debit from
payout_typestringYesType of payout: PAYOUT or REFUND
purpose_codestringYesPurpose code for the payment
origin_currencystringYesSource currency code
target_currencystringYesDestination currency code
target_amountnumberYesAmount to send
rate_idstringConditionalExchange rate ID (required for FX)
partner_order_idstringYesYour unique payment identifier
partner_user_idstringNoYour user identifier
referencestringNoPayment reference/description
to_account_idstringYesRecipient account ID
use_pobostringNoUse Pay On Behalf Of: Y or N
pobo_idstringConditionalPOBO ID (required if use_pobo is Y)
clearing_networkstringNoClearing network: SWIFT, LOCAL, SEPA
payment_methodstringNoPayment method
fee_bearstringNoFee bearing party: OUR, SHA, BEN

Response

Success Response (201 Created)

{
"order_id": "202501092053115499258",
"partner_order_id": "2024834713M3STH",
"status": "PROCESSING",
"biz_id": "VA202501142006502111",
"origin_currency": "USD",
"origin_amount": 100.00,
"target_currency": "INR",
"target_amount": 123.45,
"exchange_rate": 83.25,
"fee": 5.00,
"created_at": "2026-01-14T10:00:00.000Z",
"estimated_arrival": "2026-01-15T10:00:00.000Z"
}

Response Fields

FieldTypeDescription
order_idstringUnique payment order ID
partner_order_idstringYour payment identifier
statusstringPayment status
biz_idstringVirtual account ID
origin_currencystringSource currency
origin_amountnumberAmount debited
target_currencystringDestination currency
target_amountnumberAmount credited
exchange_ratenumberApplied exchange rate
feenumberTransaction fee
created_atstring (date-time)Creation timestamp
estimated_arrivalstring (date-time)Estimated delivery time

Payment Status Values

  • PROCESSING: Payment submitted and being processed
  • COMPLETED: Payment successfully delivered
  • FAILED: Payment failed
  • CANCELLED: Payment cancelled

Error Responses

  • 400 Bad Request: Invalid input data
  • 401 Unauthorized: Invalid or missing authentication token
  • 402 Insufficient Balance: Insufficient funds in virtual account
  • 404 Not Found: Recipient or virtual account not found
  • 422 Unprocessable Entity: Validation errors

Code Examples

cURL

curl -X POST \
'https://gateway.ahrvo.network/banking/iban/api/payout/v2/create' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"biz_id": "VA202501142006502111",
"payout_type": "PAYOUT",
"purpose_code": "1001",
"origin_currency": "USD",
"target_currency": "INR",
"target_amount": 123.45,
"partner_order_id": "2024834713M3STH",
"to_account_id": "R202412311029369694",
"fee_bear": "OUR"
}'

Python

import requests

url = "https://gateway.ahrvo.network/banking/iban/api/payout/v2/create"
headers = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"biz_id": "VA202501142006502111",
"payout_type": "PAYOUT",
"purpose_code": "1001",
"origin_currency": "USD",
"target_currency": "INR",
"target_amount": 123.45,
"partner_order_id": "2024834713M3STH",
"to_account_id": "R202412311029369694",
"fee_bear": "OUR"
}

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

JavaScript (Node.js)

const axios = require('axios');

const url = 'https://gateway.ahrvo.network/banking/iban/api/payout/v2/create';
const headers = {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
};
const data = {
biz_id: 'VA202501142006502111',
payout_type: 'PAYOUT',
purpose_code: '1001',
origin_currency: 'USD',
target_currency: 'INR',
target_amount: 123.45,
partner_order_id: '2024834713M3STH',
to_account_id: 'R202412311029369694',
fee_bear: 'OUR'
};

axios.post(url, data, { headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error.response.data);
});

Usage Notes

  • Ensure sufficient balance in the source virtual account
  • Recipient must have AVAILABLE status
  • Use unique partner_order_id for idempotency
  • Store the order_id for tracking and queries
  • Monitor payment status via webhooks or polling
  • FX payments require a valid rate_id
  • Fee bearer determines who pays transaction fees

Fee Bearer Options

  • OUR: Sender pays all fees
  • SHA: Fees shared between sender and recipient
  • BEN: Recipient pays all fees

Interactive API Explorer