Set FX Markup Configuration (Atlas)
Overview
The POST /banking/ibans/v2/fx/markup/config endpoint allows organizations to define custom FX markup percentages applied to conversions.
Markups can be configured at multiple scopes:
universal: A global spread percentage applied across all currency pairs for the company.currency_pair: A corridor-specific spread percentage (e.g. only onUSDtoEUR).sub_client/partner_refereel: Markups applied to transactions originating from specific platform sub-accounts.
Resource Access
- HTTP Method:
POST - Endpoint:
/banking/ibans/v2/fx/markup/config - Authentication: Bearer token required (
Client:At Ahrvo Rate:write,Admin:Exchange Now:write)
Request Headers
| Header | Value | Required | Description |
|---|---|---|---|
Authorization | Bearer {access_token} | Yes | JWT Bearer access token |
Content-Type | application/json | Yes | Request payload format |
Accept | application/json | Yes | Response payload format |
Request Body
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
markupPerc | number | Yes | Percentage markup to apply (e.g. 1.5, min 0, max 10). |
markupType | string | Yes | Configuration scope: universal, currency_pair, sub_client, partner_refereel. |
currencyFrom | string | Conditional | Source currency (required when markupType is currency_pair). |
currencyTo | string | Conditional | Target currency (required when markupType is currency_pair). |
Request Examples
1. Currency Pair Markup
{
"markupType": "currency_pair",
"markupPerc": 1.25,
"currencyFrom": "USD",
"currencyTo": "EUR"
}
2. Universal Company Markup
{
"markupType": "universal",
"markupPerc": 0.75
}
Response
Success Response (200 OK)
{
"success": true
}
Error Responses
- 400 Bad Request: Invalid markup percentage (exceeds 10% maximum or negative) or invalid currency code.
- 401 Unauthorized: Missing or expired Bearer token.
- 403 Forbidden: Insufficient administrative permissions to set markup configurations.
- 500 Internal Server Error: Internal platform error.
Code Examples
cURL
curl -X POST "https://gateway.ahrvo.network/banking/ibans/v2/fx/markup/config" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"markupType": "currency_pair",
"markupPerc": 1.25,
"currencyFrom": "USD",
"currencyTo": "EUR"
}'
Python
import requests
url = "https://gateway.ahrvo.network/banking/ibans/v2/fx/markup/config"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
"Accept": "application/json"
}
payload = {
"markupType": "currency_pair",
"markupPerc": 1.25,
"currencyFrom": "USD",
"currencyTo": "EUR"
}
response = requests.post(url, json=payload, headers=headers)
print("Markup Configured:", response.json().get("success"))
JavaScript (Node.js)
const axios = require('axios');
const url = 'https://gateway.ahrvo.network/banking/ibans/v2/fx/markup/config';
const headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
};
const payload = {
markupType: 'currency_pair',
markupPerc: 1.25,
currencyFrom: 'USD',
currencyTo: 'EUR'
};
axios.post(url, payload, { headers })
.then(res => console.log('Success:', res.data.success))
.catch(err => console.error(err.response ? err.response.data : err.message));