Skip to main content
A single-page reference for v3 vocabulary. Terms are alphabetical; each links out to the page that uses it in context.

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 by GET /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 via GET /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 returned 400 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 computed X-Request-Signature header. See Authentication.

N

Naming conventions Three layers, three rules. JSON field keys are camelCase (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 by POST /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; availableBalancetotalBalance. 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 carries type (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.