FX Services
FX Services convert value between currencies and rails using a two-step Quote & Capture flow. Request a quote to lock a rate, then capture it to execute the conversion and delivery.
What can FX Services do?
FX Services let you convert an amount in one currency or asset into another and deliver the result to a destination of your choosing. A single conversion can move value across very different rails — for example, pulling USDC from a DLT wallet and delivering Bahamian dollars (BSD) to a bank account.
The core model is Quote & Capture, a two-step flow:
- Quote —
POST /fx/quote. You describe the conversion (currencies, amount, participants, and how funds are sourced and delivered). Movmint prices it at the current market rate plus your client-specific spread and fees, locks that rate, and returns aquote_idwith an expiry. - Capture —
POST /fx/quote/capture/{quote_id}. Before the quote expires, you capture it to execute the transaction at the locked rate and receive funding/delivery instructions.
sequenceDiagram
participant App as Your Application
participant API as Movmint FX API
App->>API: POST /fx/quote (currencies, amount, participants, configs)
API-->>App: quote_id + quoted_amount + valid_until
Note over App: Decide to proceed before valid_until
App->>API: POST /fx/quote/capture/{quote_id}
API-->>App: transaction_id + status + source_funding_instructions
Supported currencies and assets
Conversions are directional and limited to the corridors (Products) in your subscription. Across the platform, FX Services work with fiat (USD, CAD, BSD, Sand Dollar), stablecoins (USDC, EURC), and crypto (BTC, ETH). The exact pairs available to you are defined by your Product subscription.
Funding and delivery rails
Both the source (where funds come from) and the target (where converted funds go) are configured per transaction. Four rail types are supported:
| Type | As source | As target | Notes |
|---|---|---|---|
BANK_ACCOUNT | Pull via bank rails, or push from bank rails to Movmint | Deliver via US ACH/US FedNow/Local RTGS | |
CARD | N/A | Push-to-card | Cannot pull funds from a Debit card at this time |
DLT_WALLET | On-chain transfer in | On-chain transfer out | |
CLIENT_BALANCE | Debit a prefunded balance (instant) | Credit a prefunded balance (instant) at Movmint |
Pricing models
The quote_model field controls which side of the conversion is fixed:
fixed_source(default) — you fix the source amount; Movmint calculates the target amount at the current rate.fixed_target— you fix the target amount; Movmint calculates the required source amount.
Pricing (market rate, spread in basis points, and fees) is identical regardless of the funding/delivery rails you choose.
Quote & Capture vs. FlowLink
FX Services (Quote & Capture) are interactive: you see and approve a locked rate before executing. If you instead want deposits to convert and deliver automatically at market rate with no per-transaction approval, use FlowLink.
| Aspect | Quote & Capture | FlowLink |
|---|---|---|
| Pricing | Rate locked at quote time | Market rate at deposit time |
| Approval | Required (the capture step) | Pre-authorized at creation |
| Deposit address | Ephemeral, per transaction | Persistent, reusable |
| Destination | Chosen per transaction | Immutable, set at creation |
| Flow | Interactive, multi-step | Automated, straight-through |
In this section
- Quote — request a quote: required fields, address requirements, and source/destination funding configuration.
- Capture — capture a quote to execute, and understand when funds are delivered.
IdempotencyBoth
/fx/quoteand/fx/quote/capture/{quote_id}require anx-idempotency-keyheader (a UUID you generate). Reuse the same key when retrying a request to guarantee at-most-once processing.
Updated 2 months ago
