A
Atomic execution A trade either succeeds at the quoted rate or fails — there is no partial fill. See Trading → Trade lifecycle.availableBalance
Funds usable right now for trades or withdrawals (on a Balance row). Always ≤ totalBalance; the held portion is the difference totalBalance − availableBalance, which is not broken out as a separate field in v3. See Amounts → Prefix vocabulary.
B
Balance The per-currency record returned byGET /v3/fx/balances. One row per currency, carrying availableBalance and totalBalance.
Bearer token
The JWT passed in Authorization: Bearer <jwt>. ES256-signed, 60s TTL, single-use. Every request also carries a body-bound X-Request-Signature header. See Authentication.
C
Cursor pagination v3’s pagination model:startingAfter / endingBefore with stable IDs. No page / offset integers. See Pagination.
Cut-off
The latest time OpenFX submits a fiat withdrawal to a rail on the same banking day. Submissions after the cut-off roll to the next banking day. Tables in Settlement times.
D
Deposit Incoming funds — fiat wire or on-chain stablecoin transfer — observed by OpenFX and (once cleared) credited to your balance. Read viaGET /v3/fx/deposits. See Deposit lifecycle.
E
ES256 The ECDSA signature algorithm OpenFX uses to sign JWTs (and validate yours). Asymmetric — your private key signs, OpenFX validates with the public key on file. See Authentication.expiresAt
On a Quote, the wall-clock at which the quoted rate is no longer executable. Default 3 seconds from creation; configurable via quoteForSeconds (standard durations: 3, 15, 30, 45, 60). See Trading → Quote lifecycle.
I
Idempotency-Key Client-generated UUID v4 (or any unique string) passed on state-changing requests. A retry with the same key returns the cached result instead of executing the operation twice. Required on every v3 write — same as v2 (which returned400 IDEMPOTENCY_KEY_REQUIRED when missing); v3 just upgrades the missing-header response to 428 IDEMPOTENCY_KEY_MISSING per RFC 6585. See Idempotency.
Idempotency-Replayed
Response header v3 emits on every response from idempotent endpoints (POST /quotes, POST /trades, POST /withdrawals). true on a cache hit (the body is replayed from a prior request with the same key); false on a fresh execution. Always present on these three endpoints; omitted on GETs. New in v3 — v2 did silent replays with no signal. See Idempotency → How to tell a replay from a fresh execution.
J
JWT (JSON Web Token) The bearer token format v3 uses for authentication. ES256-signed, 60s TTL, single-use (server-enforced nonce uniqueness). Mint a fresh one per request and pair it with a freshly computedX-Request-Signature header. See Authentication.
N
Naming conventions Three layers, three rules. JSON field keys arecamelCase (withdrawalAccountId, buyAmount, createdAt). URL path segments are kebab-case (/v3/fx/withdrawal-accounts, /v3/fx/pairs). Type / schema / resource names are PascalCase in prose and OpenAPI components (WithdrawalAccount, Trade, Quote). HTTP headers keep their HTTP-spec form (X-Trace-Id, Idempotency-Key). Same split used by Stripe, Plaid, Twilio.
network
On a Deposit or Withdrawal, the settlement network or rail (e.g. ETHEREUM for a stablecoin movement, FIAT for a bank-rail movement). See Supported networks for the stablecoin chain matrix.
P
Pair A tradable(buyCurrency, sellCurrency) combination with minTradeAmount and maxTradeAmount (denominated in sellCurrency). Listed via GET /v3/fx/pairs. See Currencies for the platform-wide set.
Status enums
Different resources expose different status values.
Trades terminate at
EXECUTED (atomic single-hop) or FAILED. All documented values are UPPERCASE, consistent with currency codes (USD, EUR), network identifiers (ETHEREUM, SOLANA), and error codes (TRADE_NOT_FOUND) elsewhere in v3. See Trade lifecycle, Deposit lifecycle, and Withdrawal lifecycle.
Q
Quote A binding rate returned byPOST /v3/fx/quotes. Single-execution: pass the id to POST /v3/fx/trades before expiresAt. Retrievable by ID for 2 days from createdAt; see Trading → Retrieving a quote.
R
Rail The fiat settlement system a withdrawal travels through (e.g. Fed Wire, SWIFT, SEPA, SPEI, FPS, CHAPS, PIX, NPP, UAEFTS). Bound to the verified withdrawal account, not picked per request. See Settlement times.reference_amount / reference_currency (v2 — removed in v3)
v2 quote-create indirection: client passed an amount plus the currency it was denominated in. Removed in v3; the v3 quote request supplies exactly one of buyAmount or sellAmount directly. See Migration from v2 → Quote.
S
Sandbox The OpenFX test environment. Same base URL (api.openfx.com) as Live; the environment is selected entirely by which API key you use — Sandbox keys carry a sandbox_ prefix. See Environments.
Stablecoin
Fiat-pegged crypto assets supported on v3: USDC, USDT, EURC. Each is tradable, depositable, and withdrawable on one or more chains. See Currencies → Stablecoins.
T
Timestamps All v3 timestamps are ISO 8601 UTC with millisecond precision:YYYY-MM-DDTHH:mm:ss.sssZ (e.g. 2026-04-28T10:00:00.000Z). The trailing Z is required. Always parse as UTC; convert to a local zone only at display time.
totalBalance
Total funds held in a currency on a Balance row, including any amount earmarked against pending operations; availableBalance ≤ totalBalance. The held portion is the difference totalBalance − availableBalance and is not broken out as a separate field in v3. See Amounts → Balance lifecycle.
Trade
The atomic execution of a quote. Status is EXECUTED (success) or FAILED. Status values are UPPERCASE (PENDING, EXECUTED, FAILED), unchanged from v2 — no migration. See Trading.
Trade Settlement
The v3 surface that covers balances, deposits, withdrawals, and verified withdrawal accounts. Sits under /v3/fx/. See Trade Settlement.
transactionHash
The on-chain transaction hash of a stablecoin deposit or withdrawal. Null until the transaction is broadcast, and always null on fiat movements.
W
Webhook A signed HTTP POST OpenFX sends to your endpoint when an event occurs. The envelope carriestype (the resource noun, e.g. "withdrawals"), eventType (the dotted event name, e.g. "withdrawal.completed"), id, createdAt, and a single data object — the resource in its v3 shape (data.status: "COMPLETED", camelCase keys, string amounts), not an array. HMAC-SHA256 signed via the X-OpenFX-Signature header. See Webhook authentication and Webhooks setup.
Verified withdrawal account
A pre-configured bank account or on-chain address that withdrawals can settle to. Created via the dashboard; referenced by withdrawalAccountId on withdrawals. The rail or chain is bound to the withdrawal account at creation. See Verified accounts.
Withdrawal
An outgoing transfer initiated via POST /v3/fx/withdrawals. Same endpoint covers fiat and stablecoin; the rail is resolved server-side from the referenced withdrawal account. See Withdrawal lifecycle.
withdrawalAccountId
The UUID of the verified withdrawal account a withdrawal settles to — either a fiat bank account or a stablecoin wallet. Created in the OpenFX dashboard, read via GET /v3/fx/withdrawal-accounts, and supplied on POST /v3/fx/withdrawals. Carries the rail/chain, so the request body never names a network. Renamed from the v2 request field withdrawalAddressId. See Verified accounts.
X
X-Trace-Id
Response header carrying a per-request trace ID. Include it in support requests; capture it on the success path too. See Metadata and tracing.
What’s next
Currencies
Fiat + stablecoin platform tables.
Supported networks
Per-stablecoin chain matrix.
Settlement times
Fiat-rail cut-off tables.
Errors
Stable error codes and the retry triage matrix.