Foreign Exchange
Verto offers an automated FX solution where you can trade over 50 currencies directly against each other, all via API. FX trades can be executed 24/7, 365 days a year and settled to one of your Verto wallets or directly to an external beneficiary.
Within the B2B collect use case it is expected the funds will be transfered between the parent accounts wallets, after having been previously swept from the sub-accounts.
To execute an FX trade its a simple two step process with the ability to request the live transaction status once it's initiated.
How to make an FX Trade
Retrieve an FX Quote
To execute an FX trade, initially you need to input the two currencies you wish to exchange to retrieve an FX quote. All of Verto’s currencies can be traded directly against each other and a live FX rate between any two currencies offered by Verto can be requested via the Get an FX Rate. The rate quoted is the exchange rate at which Verto will purchase one currency for the other for a period of 30 seconds after the FX rate has been quoted.
There are three components to the Get Rates API:
- Selecting the intended funding method, either:
- ‘Immediate’, which means you intend to settle us instantly (sufficient funds must be available in your Verto wallet at the point of trade) - this is the only supported method for B2B Collections Use case - all funds must be held on account prior to FX conversion
- Selecting the inward currency (the currency you will sell)
- Selecting the outward currency (the currency you will buy)
Once the quote has been requested, you will receive a unique token called the VFX Token which has an expiry of 30 seconds to reflect the quote expiry time. The VFX Token is unique per FX rate request and defines the inward and outward currency, the live rate, and the funding method of the trade.
{
"paymentMode": "later",
"currencyFrom": {
"currencyName": "NGN"
},
"currencyTo": {
"currencyName": "USD"
}
}{
"rate": 0.00167025,
"vfx_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjdXJyZW5jeUZyb20iOiJOR04iLCJjdXJyZW5jeUZyb21JZCI6bnVsbCwiY3VycmVuY3lUbyI6IlVTRCIsImN1cnJlbmN5VG9JZCI6bnVsbCwiYnlwYXNzQ2hlY2tzIjpmYWxzZSwiY29tcGFueUlkIjoiNTI1IiwicmF0ZSI6MC4wMDE2NzE3Mzc1LCJzcHJlYWQiOjAuMDAwMDI4MjYyNSwicGF5bWVudE1vZGUiOiJsYXRlciIsImlhdCI6MTcxNTMzNjU0MCwiZXhwIjoxNzE1MzM2NTcwfQ.cDeISzitUdSLeheJE3VYSdCrPoJWJz-eUcwxFWQkNU8",
"expiry": "2024-05-10T10:22:49.994Z",
"success": true
}You are not obliged to make a trade when you receive the VFX Token, therefore you can use the Get Rates API to request a live rate whenever you want. For example, this API can be used to livestream rates onto your platform.
Create an FX Trade
If you wish to execute an FX Trade, you must use the Create an FX Trade API alongside the VFX Token you have generated via the Get Rates API. The VFX Token must be used within 30 seconds of the generation of the VFX Token for it to be valid to execute an FX trade at that rate.
FX trades can be settled between your Verto wallets or directly to a beneficiary outside Verto - different inputs are required depending upon the outward settlement option.
To make an FX trade the following fields must be input:
- VFX Token: Is generated using the Get Rates API and has a validity for 30 seconds.
- Source Wallet: The desired wallet to fund the trade must be selected, with the inward currency required to match the currency of the selected source wallet.
Best practice setup of B2B collect use case, the source wallet and target wallet will always be at the parent account level
- Inward Currency Amount: The amount of the inward currency desired to be exchanged. For ‘immediate’ funded trades, sufficient funds must be available in the source wallet at the time of the FX trade request.
- Outward Settlement Option: The choice to settle funds either to one of your Verto wallets or directly to a beneficiary (an external bank account).
Best practice setup for B2B collect use case the outward settlement will always be to a parent wallet
- Custom Payment Reference: A unique reference included in the transaction and stored by Verto.
- Unique Payment ID: A unique identifier in UUID format used to ensure idempotency and prevent duplicate requests.
- Settlement Wallet: The ID of the wallet where outward currency funds will be settled. The currency of the chosen wallet must match the outward currency of the FX trade.
{
"paymentType": "convertWalletPayout",
"sourceWalletId": 11435,
"sourceAmount": 4800,
"purposeId": 14,
"vfxToken": "{{vfx_token}}",
"customPaymentReference": null,
"targetAccountId": 23181,
"paymentId": "a7c01c2d-f677-41d8-a11c-4d66804669f4"
}{
"statusCode": 200,
"id": "20088",
"reference": "EN-05062024-055",
"userId": "2289",
"companyId": "2233",
"currencyFrom": "USD",
"amountFrom": 4800,
"currencyTo": "NGN",
"amountTo": 4936560,
"rate": 1028.4456,
"pricing": {
"overageFee": 0,
"usageId": "6660409cc733e0fac55eb97f",
"subscriptionId": "664b3fc0e8e52032427e0b70"
},
"state": "inwardSettlementDone",
"source": "wallet",
"sourceId": 11435,
"target": "account",
"targetId": 32655,
"description": null,
"inwardSettlementTime": "2024-06-05T10:40:44.000Z",
"outwardSettlementTime": null,
"purpose": "Professional fees payment(i.e. legal, accountant)",
"scheduledAt": null,
"expiredAt": null,
"createdAt": "2024-06-05T10:40:29.000Z",
"updatedAt": "2024-06-05T10:40:51.000Z",
"transaction": {
"receiver": {
"accountNumber": "5401662301",
"bankName": "Providus Bank",
"name": "crest ",
"bankCode": "000023"
},
"shortURL": "https://pay.vertofx.com/n3hjz2v"
}
}Funding and Settlement Schedule
For FX trades with ‘immediate’ funding selected, the source wallet will be debited at the point of trade and the target wallet will be credited during FX hours (for most currencies 24 hours per day Mon-Fri - please talk to your Account Manager for more details). Outside of this it will be credited on the next working day at 7am UK Time.
Confirm the completion of the trade
To confirm the completion of your FX trade or to check its status, you can use the Get an FX Trade. This will retrieve the FX order details including the transaction status. All you need to do is add the Verto Transaction ID or your own Unique Payment ID (such as ‘EN-05062024-055’) to the end of the below URL:
<https://api-exchange-now-sandbox.vertofx.com/fx/:reference>
Example:
<https://api-exchange-now-sandbox.vertofx.com/fx/en-05062024-055>{
"id": "20088",
"reference": "EN-05062024-055",
"userId": "2289",
"companyId": "2233",
"currencyFrom": "USD",
"amountFrom": 4800,
"currencyTo": "NGN",
"amountTo": 4936560,
"rate": 1028.4456,
"pricing": {
"overageFee": 0,
"usageId": "6660409cc733e0fac55eb97f",
"subscriptionId": "664b3fc0e8e52032427e0b70"
},
"state": "inwardSettlementDone",
"source": "wallet",
"sourceId": 11435,
"target": "account",
"targetId": 32655,
"description": null,
"inwardSettlementTime": "2024-06-05T10:40:44.000Z",
"outwardSettlementTime": null,
"purpose": "Professional fees payment(i.e. legal, accountant)",
"scheduledAt": null,
"expiredAt": null,
"createdAt": "2024-06-05T10:40:29.000Z",
"updatedAt": "2024-06-05T10:40:51.000Z",
"transaction": {
"receiver": {
"accountNumber": "5401662301",
"bankName": "Providus Bank",
"name": "crest ",
"bankCode": "000023"
},
"shortURL": "https://pay.vertofx.com/n3hjz2v"
},
"paymentId": "88ba34cd-7074-46f4-a006-4fd8c7a5e1e8"
}This API can be used to retrieve the following information regarding a single FX order:
- Inward currency
- Inward currency amount
- Outward currency
- Outward currency amount
- Exchange rate
- Transaction status
Possible transaction statuses which are output from the state field include:
- Confirmed: The FX trade has been booked but yet to be funded by the client, which is often in the case of open ‘later’ funded trades.
- Inward Settlement Done: The order has been created, funded, and confirmed by Verto but with the outward currency yet to be settled.
- Outward Settlement Done: The order has been created, funded, and confirmed by Verto as well as the outward currency settled to the Verto target wallet or beneficiary and thus successfully completed.
- Archived: The order was created and cancelled either funded or not - if funded then the transaction will be refunded in the outward currency.
An 'Outward Settlement Done' status confirms the FX trade has been successfully completed.
Updated over 1 year ago
