A
Account The identity of a person or organization you move money to or on behalf of, plus its payout capabilities. AnAccount holds no money; a FinancialAccount holds the funds. See Account model.
Atomic execution
A trade either succeeds at the quoted rate or fails; there is no partial fill. See Trades.
B
Balance The per-currency record returned byGET /v3/fx/balances. One row per currency, carrying withdrawableBalance and totalBalance. The response also carries an aggregate block with the org’s net equity across all currencies, converted to USD.
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
Capability Permission for an account to receive payouts in a currency or act as a payout’s sender. EachAccountCapability has an opaque id, read-only coverage details, and its own status. See Capabilities.
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 Deposits.
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 Quotes → Quote lifecycle.
Exposure limit
The amount of unsettled trades your organization can have open at one time. You can execute trades up to this limit and settle them before you withdraw. Read via GET /v3/fx/exposures. See Exposure.
F
Financial account A balance your organization holds with OpenFX that can fund a payout. The payout debitsfinancialAccountId; the recipient is identified separately through receiver.payoutAddressId. See Account model.
I
Idempotency-Key Client-generated UUID (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 write; returns428 IDEMPOTENCY_KEY_MISSING per RFC 6585 when omitted. See Idempotency.
Idempotency-Replayed
Response header emitted 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. 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.
Payout
Money sent from one of your financial accounts to a recipient’s payout address. A payout starts in REQUIRES_CONFIRMATION without moving funds; you confirm it to accept the priced payout. Unlike a first-party withdrawal, a payout can pay someone else’s bank account. See Payouts.
Payout address
A recipient’s registered bank destination, represented by PayoutAddress and owned by an Account. It is separate from a verified withdrawal account. To correct an address, create a replacement and archive the old one. See Account model → Payout addresses.
Payout quote
An immutable, time-bounded price snapshot that moves no funds. Pass its id as quoteId to create a payout from that price, or create an inline-priced payout without a separate quote. See Payouts.
Status enums
Different resources expose different status values.
For payouts, PROCESSED is not terminal: funds can still be returned. The terminal states are RETURNED, FAILED, CANCELLED, and EXPIRED. See Payouts and Account model.
Trades terminate at EXECUTED or REVERSED; LOCKED and READY_TO_SETTLE are transitional states on a future-dated (T1/T2) trade. Deposits terminate at COMPLETED, REJECTED, or ERROR. Withdrawals terminate at COMPLETED or CANCELLED. 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 Trades, Deposits, and Withdrawals.
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 Quotes → Retrieving a quote.
R
Rail The fiat settlement system a withdrawal or payout travels through (e.g. Fedwire, SWIFT, SEPA, SPEI, FPS, PIX, NPP, UAEFTS). For withdrawals, it is bound to the verified withdrawal account and reported asWithdrawalAccount.rail. For payouts, the platform selects the rail and reports it on the quote and payout. CHAPS is a withdrawal settlement route that OpenFX chooses; it is not a WithdrawalAccount.rail value. See Settlement times and Payouts.
Receiver
The account being paid, identified on a payout through receiver.payoutAddressId. The address belongs to that account, so you do not name its account id separately. See Account model → Roles on a payout.
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.
Routing family
The routingFamily on a payout address determines which bank details it needs, such as an IBAN for SEPA or a CLABE for Mexico. It is not the same as the settlement rail selected for a payout. See Account model → Payout addresses.
S
Sandbox The OpenFX test environment. Same base URL (api.openfx.com) as Live; each API key is bound to one environment, and Sandbox keys carry a sandbox_ prefix. X-App-Mode must match the key’s environment and defaults to SANDBOX when omitted. See Environments.
Sender
An account on whose behalf you make a payout, distinct from the recipient. Funds still come from your financial account. Only INR payouts support a sender; it needs an active sending capability. See Account model → Roles on a payout.
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. Ordinarily withdrawableBalance ≤ totalBalance, but totalBalance can itself go negative if the org owes a settlement in that currency; in that case withdrawableBalance is 0. The held portion is the difference totalBalance − withdrawableBalance (when totalBalance is non-negative) and is not broken out as a separate field in v3. See Amounts → Balance lifecycle.
Trade
The execution of a quote. Status progresses through PENDING, LOCKED (future-dated only), and READY_TO_SETTLE (future-dated, manual settlement only) to a terminal EXECUTED, or to REVERSED if unwound before settlement. See Trades.
Trade Settlement
The v3 surface that covers balances, deposits, withdrawals, and verified withdrawal accounts. Sits under /v3/fx/. See Settlement models.
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 product-prefixed event name, e.g. "fx.withdrawal.completed"), id, createdAt, and a single data object: close to, but not identical to, the resource’s v3 REST 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 Withdrawals.
withdrawalAccountId
The ID (wac_ prefix; a bare UUID is also accepted on input) 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.
withdrawableBalance
Funds usable right now for trades or withdrawals: on a Balance row (per currency) or on the response’s aggregate block (org-wide net equity in USD). Never negative; 0 when the corresponding totalBalance (or the org’s overall net position) is negative. Renamed from availableBalance. See Amounts → Prefix vocabulary.
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
Payouts
Recipient setup, payout pricing, confirmation, and settlement.
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.