Instant Settlement

Instant FX

Convert funds between wallets immediately using a pre-funded balance. This is the standard flow for automated payment workflows and Global Clearing payouts where funds are already on balance.


How it works

  1. Get a live quote for your currency pair
  2. Book the trade using the returned vfxToken — funds are debited from your wallet instantly at the locked rate

Step 1 — Get a quote

Call the Get FX Rate endpoint with paymentMode set to immediate. You must specify the amount, amount currency, and currencies.

{
  "paymentMode": "immediate",
  "currencyFrom": {
    "currencyName": "USD"
  },
  "currencyTo": {
    "currencyName": "KES"
  },
  "amount": 5000,
  "amountCurrency": "USD"
}
FieldDescriptionMandatory
paymentModeMust be immediate for Instant FXYes
currencyFrom.currencyNameThe currency you are sellingYes
currencyTo.currencyNameThe currency you are buyingYes
amountThe amount to convertYes
amountCurrencyThe currency the amount refers to — either currencyFrom or currencyToYes

The response returns a rate, an expiry time, and a vfxToken that locks the quote.

{
  "rate": 0.00167025,
  "vfxToken": "eyJhbGci...",
  "expiry": "2024-05-10T10:22:49.994Z",
  "success": true
}
⚠️

Quote expiry

Instant FX quotes are valid for 30 seconds. You must book the trade within this window or the quote will expire and a new one must be requested.

This can be extended in specific situations up to 120 seconds, reach out for more information.


Step 2 — Book the trade

Call the Create FX Trade endpoint with the vfxToken from Step 1. Your sourceWalletId must hold sufficient balance in the currencyFrom currency before booking.

{
  "paymentType": "convertWalletPayout",
  "sourceWalletId": 11435,
  "sourceAmount": 5000,
  "purposeId": 14,
  "vfxToken": "eyJhbGci...",
  "customPaymentReference": "your-reference",
  "targetAccountId": 23181,
  "paymentId": "a7c01c2d-f677-41d8-a11c-4d66804669f4"
}
FieldDescriptionMandatory
paymentTypeMust be convertWalletPayoutYes
sourceWalletIdWallet ID to debit in currencyFromYes
sourceAmountAmount to convert — must match the amount from Step 1Yes
purposeIdPurpose of payment codeYes
vfxTokenToken returned from Step 1Yes
customPaymentReferenceYour own reference for the transactionNo
targetAccountIdWallet or beneficiary ID to credit in currencyToYes
paymentIdUnique UUID for idempotencyYes
💡

Confirm your wallet balance before booking using the [Get Wallet](https://docs.verto.co/v1.1/update/reference/get_specific_wallet_details endpoint.


Payment statuses

API response states

StateDescription
confirmedTrade placed successfully and source wallet debited.
inwardSettlementDoneFX leg settled. Converted funds available in target wallet.
outwardSettlementDoneTrade fully complete.
archivedTrade cancelled.
refundedTrade refunded and funds returned to source wallet.

Webhook transaction states

transactionStateDescription
inward_remittance_confirmedSource wallet debited and trade confirmed.
outward_remittance_completeConverted funds settled into the target wallet.