Held Rate
Held Rate
Lock an FX rate for an extended window of 20–30 minutes, allowing you to display a guaranteed local currency price to an end customer before payment is collected. Designed for e-commerce checkout flows where there is a gap between the customer confirming a price and funds being received.
Custom setup requiredHeld Rate is a pre-agreed commercial feature and is not available by default. Contact your account manager or sales representative to enable this for your account before integrating into sandbox or production
How it works
- At checkout, call the Quote API to get a locked rate for your agreed window (20 or 30 minutes)
- Display the guaranteed local currency price to your end customer
- Customer completes payment
- Once payment is confirmed, book the trade using the stored
vfxToken - Fund the trade — Verto executes the conversion and settles into your wallet
The API flow is the same regardless of whether payment is collected via card authorisation or bank transfer — get the quote, hold the rate, book once payment is confirmed.
PricingA transparent risk premium is applied based on the agreed rate hold duration:
- 20-minute hold: 0.2% premium
- 30-minute hold: 0.3% premium
This is pre-agreed as part of your commercial setup. Speak to your sales/account manager for details.
Step 1 — Get a quote
Call the Get FX Rate endpoint. Your account will be pre-configured with the agreed quote duration. You must specify the amount, amount currency, and currencies.
{
"paymentMode": "later",
"currencyFrom": {
"currencyName": "USD"
},
"currencyTo": {
"currencyName": "NGN"
},
"amount": 500,
"amountCurrency": "USD"
}| Field | Description | Mandatory |
|---|---|---|
paymentMode | Must be later for Held Rate | Yes |
currencyFrom.currencyName | The hard currency you will receive | Yes |
currencyTo.currencyName | The local currency your customer will pay in | Yes |
amount | The amount to convert | Yes |
amountCurrency | The currency the amount refers to — either currencyFrom or currencyTo | Yes |
{
"rate": 1607.00,
"vfxToken": "eyJhbGci...",
"expiry": "2024-05-10T10:52:49.994Z",
"success": true
}
Retain thevfxToken— it must be used to book the trade within the agreed window.Once expired, a new quote must be requested and the customer must be shown an updated price.
Step 2 — Display the guaranteed price to your customer
Using the locked rate from Step 1, calculate and display the exact local currency amount your customer will pay. This price is guaranteed for the duration of the rate window.
Step 3 — Book the trade
Once your system confirms the customer's payment is successful, immediately call the Create FX Trade endpoint with the stored vfxToken.
{
"paymentType": "convertWalletPayout",
"sourceWalletId": 11435,
"sourceAmount": 500,
"purposeId": 14,
"vfxToken": "eyJhbGci...",
"customPaymentReference": "your-reference",
"targetAccountId": 23181,
"paymentId": "a7c01c2d-f677-41d8-a11c-4d66804669f4"
}| Field | Description | Mandatory |
|---|---|---|
paymentType | Must be convertWalletPayout | Yes |
sourceWalletId | Wallet ID to debit in currencyFrom | Yes |
sourceAmount | Amount to convert — must match the amount from Step 1 | Yes |
purposeId | Purpose of payment code | Yes |
vfxToken | Token returned from Step 1 | Yes |
customPaymentReference | Your own reference for the transaction | No |
targetAccountId | Wallet or beneficiary ID to credit in currencyTo | Yes |
paymentId | Unique UUID for idempotency | Yes |
ImportantOnly book the trade after you have confirmed the customer's payment. Once a trade is booked it cannot be cancelled. Do not book speculatively before payment is confirmed.
Step 4 — Fund and settle
Ensure the collected funds reach Verto within the agreed rate window. Once received, Verto will execute the conversion and settle the hard currency amount into your wallet.
This can be done via either instant, or later methods. For more details check Instant Settlement and Firm Orderfor more details.
Payment statuses
API response states
| State | Description |
|---|---|
confirmed | Trade booked at the locked rate. Awaiting funding. |
inwardSettlementDone | Funds received and FX leg settled. |
outwardSettlementDone | Hard currency settled into your wallet. Trade complete. |
archived | Trade cancelled or rate window expired unfunded. |
refunded | Trade refunded and funds returned. |
Webhook transaction states
transactionState | Description |
|---|---|
inward_remittance_pending | Trade booked. Verto awaiting receipt of funds. |
inward_remittance_confirmed | Funds received and confirmed. Trade executing. |
outward_remittance_complete | Converted funds settled into target wallet. |
