FX & treasury
Convert with certainty. Lock the rate first.
Convert local-currency proceeds at the point of payment or in bulk into USD, EUR, GBP, CAD, AUD, NZD, CHF, USDC or USDT — with a quote token that holds the rate until you execute.
- 9 hard currencies
- Rate lock with a quote token
- 13 markets with published FX hours
- BRL3.42M3,420,118.40
- MXN8.91M8,905,332.10
- COP912M912,450,000
- ARS249M248,901,220
USD balance
USD 4.97M
Converted today · 4 pairs
+ USD 312,400.00
Local balances stay available for payouts; convert to USD with a locked rate when you need to.
- 9
- Hard currencies: USD, EUR, GBP, CAD, AUD, NZD, CHF, USDC and USDT
- USDC · USDT
- Dollar stablecoins you can convert into, alongside fiat
- Locked
- Rate lock by quote token: the rate holds until the quote expires
- 13
- Markets with published FX hours
Why Localpayment
Why treasury teams use Localpayment
Two ways to convert: on the payment, or between your accounts.
Convert on the payment or in bulk
Convert when the payment happens, so collections land in the currency you settle in, or convert balances between your own accounts in a single request.
Predictable costs
Lock the rate before you commit, so the rate you plan with is the rate you get.
Centralized liquidity
See and manage balances across markets from one account. Move funds between countries and accounts without opening new banking relationships.
One platform
Collect, convert and pay out on the same integration, with the same reports.
Talk to our sales team
Tell us your markets and volumes, and we’ll design the integration with you.
Currencies
Settle in USD, EUR and other hard currencies.
Keep what you collect in local currency, or convert it into the hard currency your business reports in: USD, EUR, GBP, CAD, AUD, NZD, CHF, or the dollar stablecoins USDC and USDT.
Local currencies
- ar
- bo
- br
- cl
- co
- cr
- do
- gt
- hn
- mx
- pa
- py
- pe
Convert between local and hard currencies in 13 markets with published FX hours, at current market conditions.
Local currencies —Fiat hard currenciesUSD · EUR · GBP · CAD · AUD · NZD · CHF
Convert local-currency proceeds into the hard currency your business reports in.
StablecoinsUSDC · USDT
Dollar stablecoins you can convert into, alongside fiat.
Stablecoins —
Use cases
Treasury flows by industry
SaaS
Convert local subscription revenue into USD or EUR on your own schedule.
SaaS —Remittances
Lock a rate with a quote token before you confirm the price to the sender.
Remittances —Advertising platforms
Repatriate ad spend collected in local currency with itemized FX.
Advertising platforms —B2B & high-value
Execute high-value transactions and reconcile them per account.
B2B & high-value —
Money flow
Lock a rate, convert, move the funds
Ask for a quote, accept it before it expires and the conversion runs at the quoted rate.
- 1
Your platformLocalpayment:
Request a quote
Pair and amount, local currency to a hard currency or the other way round.
- 2
LocalpaymentYour platform:
Quote token with expiry
The rate is locked for the time the quote is valid.
- 3
Your platformLocalpayment:
Accept the quote
Send the token; conversion runs within local market hours.
- 4
LocalpaymentYour treasury:
Funds move between balances
Credit to your hard-currency balance, ready to withdraw.
- 5
LocalpaymentYour platform:
Confirmation and report
FX appears itemized in your reports.
Illustrative flow. Available currencies and market hours depend on the country.
Rate lock
Quote, lock, execute — no surprises
The rate you see is the rate you get, as long as you execute before the quote expires.
Quote
Call the FX quote endpoint for a payin, a payout or a currency exchange.
Lock
The response returns the rate, an exchangeRateToken and its expirationDate.
Execute
Send the token with your transaction before it expires to convert at the locked rate.
Confirm
A CurrencyExchange webhook confirms the conversion and your balances update.
Market hours
Conversion runs within local market hours
FX executes during each country’s operating window, so rates reflect a live local market.
Argentina
- Currency
- ARS
- FX window (local time)
- 10:00–14:30
Bolivia
- Currency
- BOB
- FX window (local time)
- 08:30–17:00
Brazil
- Currency
- BRL
- FX window (local time)
- 10:00–12:30
Chile
- Currency
- CLP
- FX window (local time)
- 08:30–13:30
Colombia
- Currency
- COP
- FX window (local time)
- 08:00–12:30
Costa Rica
- Currency
- CRC
- FX window (local time)
- 08:00–16:00
Dominican Republic
- Currency
- DOP
- FX window (local time)
- 09:00–14:30
Guatemala
- Currency
- GTQ
- FX window (local time)
- 08:00–16:30
Honduras
- Currency
- HNL
- FX window (local time)
- 08:00–15:00
Mexico
- Currency
- MXN
- FX window (local time)
- 08:00–15:30
Panama
- Currency
- USD
- FX window (local time)
- 08:00–15:00
Paraguay
- Currency
- PYG
- FX window (local time)
- 08:30–12:30
Peru
- Currency
- PEN
- FX window (local time)
- 09:00–13:00
Business days. Requests outside these hours are processed in the next session. Quotes are valid until the expiration date returned with the token.
Balances & transfers
See what you hold. Decide how to move it.
Check your balances in the Business Portal or via the balance API, then move funds between your own accounts.
Internal domestic transfer
Move funds between your accounts in the same country and currency.
Internal foreign transfer (same currency)
Move funds across countries in the same currency, without new banking relationships.
Low-balance alerts
Set a threshold per account and get notified before a balance runs short.
API playground
Quote, then convert
A documented ARS to USD quote, then POST /api/currency-exchange. The rate is the published example.
The 80/20 bar is an illustrative storyboard allocation.
Illustrative balances
- USD25,000.00
- ARS250,000.00
- BRL184,200.00
- MXN310,500.00
Balances move only inside this demo, by the sample amounts.
USD in this demo: United States, Panama, Peru and El Salvador.
GET /api/fx/currency-exchange/payin · 1/2
Authorization: Bearer <DEMO_TOKEN>
DEMO · Nothing is sent. This demo never calls Stage or Production.
GET /api/fx/currency-exchange/payin · 1/2
The simulated response appears here
For developers
Quote and convert in two calls
Request a quote for the flow you need, keep the exchangeRateToken, and send it with the conversion before its expirationDate. Every call uses a Bearer token.
- GET /api/fx/currency-exchange/{payin|payout|CurrencyExchange}
- POST /api/currency-exchange for bulk conversion
- POST /api/internal-transfer to move funds between accounts
# 1) Quote — illustrative parameters, see docs.localpayment.com curl -G https://api.stage.localpayment.com/api/fx/currency-exchange/CurrencyExchange \ -H "Authorization: Bearer $ACCESS_TOKEN" \ --data-urlencode "sourceCurrency=BRL" \ --data-urlencode "quoteCurrency=USD" \ --data-urlencode "accountNumber=<your-BRL-account>" \ --data-urlencode "quoteAccountNumber=<your-USD-account>" # → { "exchangeRateToken": "fxq_7Qk2...", "expirationDate": "2026-09-30T11:05:00-03:00", "quotes": [ ... ] } # 2) Convert at the locked rate before it expires curl -X POST https://api.stage.localpayment.com/api/currency-exchange \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "externalId": "b1d2c3e4-0000-4000-8000-000000000077", "country": "BRA", "currency": "BRL", "exchangeRateToken": "fxq_7Qk2...", "account": { "debited": { "currency": "BRL", "accountNumber": "<your-BRL-account>", "amount": 250000.00 }, "credited": { "currency": "USD", "accountNumber": "<your-USD-account>" } } }'
// Illustrative. Fields simplified; credentials come from your secrets manager. const headers = { Authorization: `Bearer ${access}`, 'Content-Type': 'application/json' }; // Quote and lock const params = new URLSearchParams({ sourceCurrency: 'MXN', quoteCurrency: 'USD', accountNumber: process.env.LP_MXN_ACCOUNT, quoteAccountNumber: process.env.LP_USD_ACCOUNT, }); const quote = await fetch(`https://api.stage.localpayment.com/api/fx/currency-exchange/CurrencyExchange?${params}`, { headers }) .then((r) => r.json()); // Execute before the quote expires if (new Date(quote.expirationDate) > new Date()) { await fetch('https://api.stage.localpayment.com/api/currency-exchange', { method: 'POST', headers, body: JSON.stringify({ externalId: crypto.randomUUID(), country: 'MEX', currency: 'MXN', exchangeRateToken: quote.exchangeRateToken, account: { debited: { currency: 'MXN', accountNumber: process.env.LP_MXN_ACCOUNT, amount: 4500000 }, credited: { currency: 'USD', accountNumber: process.env.LP_USD_ACCOUNT }, }, }), }); }
Frequently asked questions
Which currencies can I convert to?
Local-currency balances can be converted into USD, EUR, GBP, CAD, AUD, NZD, CHF, USDC and USDT.
Is FX available 24/7?
No. Conversions run within each local market’s hours — for example 10:00–12:30 in Brazil, 08:00–15:30 in Mexico and 10:00–14:30 in Argentina, local time.
How long is a quote valid?
Each quote returns an exchangeRateToken with an expirationDate. Execute before it expires to get the locked rate; after that, request a new quote.
Can I convert from a hard currency into local currency?
Yes. FX runs between local and hard currencies in both directions, for example USD ↔ BRL or EUR ↔ MXN.
What is the difference between domestic and foreign internal transfers?
A domestic transfer moves funds between your accounts in the same country and currency. A foreign transfer moves funds across countries in the same currency.
Is there a minimum or maximum amount per conversion?
Limits depend on the country and your account configuration. Talk to sales for the limits that apply to your flows.
How is the FX rate shown in my reports?
Each conversion is itemized with the rate applied, the local-currency amount and the hard-currency amount, in the Business Portal and in the activity API.
Also on the same API
Reporting & reconciliation
Balance, activity and reconciliation APIs, Business Portal reports and real-time webhooks for finance teams.
Reporting & reconciliation —Stablecoin rails
Fund and withdraw in USDC and USDT.
Stablecoin rails —Payouts
Pay out over local rails.
Payouts —Coverage
Licensed, registered or supervised presence in local currencies and local rails, country by country.
Coverage —Payment methods directory
Every documented method, with codes, limits and speed by country.
Payment methods directory —Developer quickstart
Get a token, send your first request and receive a webhook on Stage.
Developer quickstart —
Put your treasury to work
Tell us your corridors and volumes, and we’ll map the currencies, market hours and flows that fit your operation.

9 hard currencies