Exchange
Convert funds with the merged Exchange service, use vfx_token-based quote execution, configure FX markup, and track FX trades through settlement.
Exchange logic
Convert funds between wallets or into payout destinations with the merged Exchange service, then track each FX trade through settlement.
Multi-Mode ExecutionUse exchange flows for immediate execution or booked-rate settlement across the API-supported modes.
✅ Before you exchange funds
Complete these steps before you execute an FX trade:
- Make sure the source wallet exists and has enough available balance.
- Confirm the target currency and destination: another wallet or a beneficiary account.
- Decide whether the trade should use
immediateorlatersettlement pricing. - Request an FX rate, capture the returned
vfx_token, and create the trade before the token expires. - Store your
paymentIdand the returned FX tradereferencefor reconciliation.
Send Exchange requests to the sandbox host: https://api-exchange-now-sandbox.vertofx.com.
📑 Table of Contents
⚡ Execution Modes
Use paymentMode to choose the settlement option for the FX rate and trade.
immediate
immediateUse immediate when you intend to settle instantly. For wallet-funded trades, funds are deducted from the source wallet.
later
laterUse later when you intend to settle Verto later, up to 24 hours after requesting the rate.
Confirm your operational process can settle within the expected window before using later settlement pricing.
🚀 Workflow: Quote to Execution
To minimize slippage, follow the quote-lock-execute pattern.
- Fetch rate: Use Get FX rate to get the current rate for
currencyFrom,currencyTo, andpaymentMode. - Lock rate: Capture the returned
vfx_token; it expires after approximately 30 seconds. - Execute trade: Use Create FX trade before the token expires.
- Track status: Use Get FX trade details with the returned trade
referenceorpaymentId.
{
"paymentType": "convertWithinWallets",
"sourceWalletId": 11435,
"sourceAmount": 4800,
"vfx_Token": "uciebcjdencijwnciqnq832982jhbj3eduh3",
"targetWalletId": 23181,
"paymentId": "35448e78-8180-4ce5-8671-772c29ad658f"
}If the token expires, request a fresh rate before retrying the conversion. Do not create a new trade with an expired vfx_token.
Use Get bulk FX rates when you need to compare multiple currency pairs before choosing a trade route.
🔬 Atlas Pricing Nuances
| Integration Path | Pricing Logic |
|---|---|
| 🏦 Atlas for Fintech | Request rates, execute trades, and reconcile wallet or payout outcomes. |
| 🏢 Atlas for Platforms | Use markup configuration and stored trade references to support customer-facing FX flows. |
💹 FX Markup Functionality
Configure company-level FX markup rules for supported FX flows.
Use Set FX markup configuration to set a universal markup or a currency-pair-specific markup. Use Get FX markup configuration to inspect active markup rules.
The merged Exchange service supports these configuration types:
- Universal markup: Set a markup percentage that applies generally for the company.
- Currency-pair markup: Set a markup percentage for a specific
currencyFromandcurrencyTopair.
📋 Prerequisites
Before integrating the FX Markup endpoints, ensure you possess:
- A valid bearer token for the Exchange service.
- Permission to set or retrieve FX markup configuration for the company.
- The markup type you want to configure:
universalorcurrency_pair. - A
markupPercvalue between0and10.
🔧 Step-by-Step Implementation
All API requests require bearer authentication using your generated credentials.
Set a universal markup
Use markupType: "universal" when the markup should apply generally for the company.
curl --request POST \
--url https://api-exchange-now-sandbox.vertofx.com/fx/markup/config \
--header 'Authorization: Bearer <SECURE_REDACTED_API_TOKEN>' \
--header 'content-type: application/json' \
--data '{
"markupType": "universal",
"markupPerc": 1.5
}'Set a currency-pair markup
Use markupType: "currency_pair" when the markup should apply only to a specific source and target currency pair.
curl --request POST \
--url https://api-exchange-now-sandbox.vertofx.com/fx/markup/config \
--header 'Authorization: Bearer <SECURE_REDACTED_API_TOKEN>' \
--header 'content-type: application/json' \
--data '{
"markupType": "currency_pair",
"markupPerc": 2.5,
"currencyFrom": "USD",
"currencyTo": "NGN"
}'🔀 The Suggested Implementation Workflow
To ensure your customers see consistent pricing, use the quote-to-execution pattern:
- Configure markup: Set the universal or currency-pair markup with Set FX markup configuration.
- Verify configuration: Retrieve the current rule with Get FX markup configuration.
- Quote: Call Get FX rate to fetch the rate and
vfx_tokenfor the customer’s currency pair. - Execute: Create the trade with Create FX trade before the
vfx_tokenexpires.
⚡ Convert and pay out
Use paymentType: "convertWalletPayout" when you want to convert wallet funds and send the converted funds to a beneficiary account.
curl --request POST https://api-exchange-now-sandbox.vertofx.com/fx/payments \
-H "Authorization: Bearer <SECURE_REDACTED_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"paymentType": "convertWalletPayout",
"sourceWalletId": 11435,
"sourceAmount": 4800,
"purposeId": 45,
"vfx_Token": "<YOUR_VFX_TOKEN>",
"targetAccountId": 839,
"paymentId": "35448e78-8180-4ce5-8671-772c29ad658f"
}'Use paymentType: "convertWithinWallets" when you want to convert funds from one wallet into another wallet.
Track and reconcile trades
Store these values for reconciliation and support workflows:
| Value | Where it comes from | Why it matters |
|---|---|---|
paymentId | Your create-trade request | Helps identify duplicate or retried payment attempts. |
reference | Create-trade response | Use it to retrieve the FX trade later. |
state | Create, list, or get-trade response | Shows current settlement progress. |
inwardSettlementTime | Trade response | Shows when source-side settlement occurred. |
outwardSettlementTime | Trade response | Shows when destination-side settlement occurred. |
Use List FX trades for operational reporting and Get FX trade details when you need the latest state for one trade. **
🎯 Next Steps
| Send (Payouts) → Dispatch your converted capital. | Handle RFIs and Compliance Exceptions → Pause and resume review-blocked FX or payout workflows safely. |
Updated 10 days ago
