FX Conversion Guide

Get a live FX rate, create a trade with a fresh vfx_token, and reconcile completion before using converted funds in payout or treasury flows.

Mastering FX Conversions

Get a live FX quote, lock the rate with a vfx_token, and convert funds between supported wallets before you continue into payout or treasury flows.

✅ Before you convert funds

Complete these steps before you request a quote:

  1. Make sure the source wallet exists and holds the funds you want to convert.
  2. Confirm the target currency and destination wallet or downstream flow.
  3. Decide whether you need immediate settlement or a later deal structure.
  4. Prepare to execute quickly after you fetch the quote because the token expires fast.
stateDiagram-v2
    [*] --> Fetch_Quote
    Fetch_Quote --> Lock_Rate: Logic Check
    Lock_Rate --> Execute: Confirm
    Execute --> Settling: Rail In-Transit
    Settling --> [*]: Funds Hit Wallet

⚡ Step 1: Get a live FX rate

Use Get Rates (New) to retrieve the current FX rate for a currency pair. The rate request uses currencyFrom, currencyTo, and paymentMode to describe the conversion you intend to create.

Capture the returned vfx_token immediately because it expires after 30 seconds and is required when you create the FX trade.



🔒 Rate Locking & The VFX Token

Verto's liquidity rail uses a "Loc-Rate" mechanism. When you fetch a quote, the response includes a vfx_token.

[!IMPORTANT] 30-Second Window The vfx_token locks the mid-market rate and your partner markup for exactly 30 seconds. If the token expires, you must fetch a new quote before executing the conversion.


📅 Step 2: Create the FX trade

ModeTimingNote
NowImmediateInstant liquidity swap.
Deal24-48 HoursLocks rate for future settlement.

To execute, pass the fresh rate token into Create FX Trade (New). The trade payload uses paymentType to define whether you are converting between wallets or converting and paying out.

{
  "paymentType": "convertWithinWallets",
  "sourceWalletId": 11435,
  "sourceAmount": 4800,
  "vfx_Token": "uciebcjdencijwnijnciqnq832982jhbj3eduh3",
  "targetWalletId": 23181,
  "paymentId": "35448e78-8180-4ce5-8671-772c29ad658f"
}

If the token has expired, do not retry the conversion with the old token. Request a fresh rate and execute again with the new vfx_token.


🔔 Webhook Feedback Loop

Once the conversion is booked, monitor your webhooks for the following granular states:

  • inward_remittance_confirmed: Your source wallet has been successfully debited.
  • outward_remittance_complete: The conversion is finished and funds have hit the target wallet or beneficiary.

Use these events to update balances, unlock downstream payout steps, and reconcile the conversion result against your internal ledger.

📘 Documented FX lifecycle statuses

The following FX lifecycle statuses are currently documented in v1.1:

StatusWhat it meansHow to use it
inward_remittance_confirmedThe source wallet has been successfully debited for the conversion flow.Use this as confirmation that the debit side of the FX flow has been applied. Do not treat it alone as final settlement of the full conversion.
outward_remittance_completeThe conversion is finished and funds have reached the target wallet or beneficiary.Use this as the completion signal for the documented FX lifecycle in v1.1. After reconciliation, downstream wallet usage or payout-dependent actions can continue.

If your application also reads trade status fields from Get an FX Trade (New), reconcile them against the FX conversion completion webhook before you treat the conversion as final in your own system.


🛑 Step 3: Cutoff & Settlement Times

Currency PairSettlementCutoff (GMT)
GBP / EURInstant24/7
GBP / USDT + 016:00
USD / NGNT + 114:00

Treat these timings as operational guidance when planning downstream payout or treasury actions.


💡 Yield Optimization

  • Early Booking: Conversions executed before 14:00 GMT often settle same-day for major corridors.
  • Liquidity Check: For exotic pairs (e.g. KES, GHS), execution may require manual desk approval for amounts >$250k.

Troubleshooting

IssueWhat to check
Quote expires before executionRequest a new quote and use the new vfx_token; do not reuse the expired token.
Conversion does not settle as expectedCheck webhook events and corridor settlement expectations before triggering the next step.
Source wallet is not debitedConfirm the wallet has enough balance and that the requested mode and currency pair are supported.
Downstream payout starts too earlyWait for the conversion completion event before using the converted funds.