Skip to content

Overview of OpenFX APIs (v1.0.0)

OpenFX provides a robust and secure API suite engineered for high performance and reliability, enabling programmatic access to real-time market data, trade execution, and money movement functionalities. This guide will walk through the step-by-step process of deposits, quoting, trading, settlements and monitoring using OpenFX APIs.

Languages
Servers
OpenFX API Server

https://api.sandbox.openfx.com/

MarketData

This endpoint retrieves a complete list of all tradable fiat and stablecoin currency pairs on the OpenFX platform.

Operations

Balances

The Balance endpoints enable real-time tracking and management of currency holdings within an account.

Operations

Trade

The Trade APIs facilitate programmatic currency exchange through a quote-then-trade workflow, ensuring price transparency and guaranteed execution at quoted rates.

Operations

Deposits

Deposit endpoints enable secure funding of trading accounts across multiple supported currencies and methods.

Operations

Withdrawals

The Withdrawal API facilitates secure fund withdrawals for both fiat and stablecoins.

Operations

Request

This endpoint is used to retrieve a complete list of all approved withdrawal wallets associated with an organization. These are destinations where an organization can send their withdrawals.

Security
bearerAuth
Path
orgIdstringrequired
Query
pagenumber(number)>= 1
Default 1
Example: page=1
limitnumber(number)[ 1 .. 50 ]
Default 10
Example: limit=10
verifiedboolean or null
statusstring or null
coinNetworkstring or null
coinstring or null
curl -i -X GET \
  'https://api.sandbox.openfx.com/v1/brokerage/{orgId}/withdrawal_addresses?page=1&limit=10&verified=true' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

success

Bodyapplication/json
statusstring
Enum"success""error"
Example: "success"
dataArray of objects or null
data[].​idstring(uuid)

Unique identifier of the withdrawal wallet

Example: "2697eff1-ac30-41db-94b7-d615133a5c9e"
data[].​namestring

Wallet name

Example: "Duplicate USDT 6"
data[].​coinIdstring(uuid)

Unique identifier of the coin associated with the wallet

Example: "3b3f759c-d3fa-46fd-80c5-10c1bc244e83"
data[].​coinNamestring

Symbol of the stablecoin

Example: "USDT"
data[].​coinNetworkIdstring(uuid)

Unique identifier of the blockchain network associated with the coin

Example: "e4a800c9-ddad-411d-82da-6a8680ce6618"
data[].​coinNetworkNamestring

Name of the blockchain network used for withdrawals

Example: "Ethereum"
data[].​addressstring

Cryptocurrency wallet address to which funds will be withdrawn

Example: "0x2205844f0b80798F0e187c260753191eb668a495"
data[].​statusstring

Current verification status of the wallet

Enum"Verified""Pending""Rejected"
Example: "Verified"
data[].​createdAtstring

UTC Timestamp when the withdrawal wallet was created

Example: "2025-01-24T11:51:11.604Z"
data[].​updatedAtstring

UTC Timestamp when the withdrawal wallet was last updated

Example: "2025-01-24T11:52:08.299Z"
data[].​verifiedboolean

Boolean indicating whether the wallet has been verified

Example: true
data[].​commentsstring or null

Optional comments or notes regarding the wallet (e.g., reason for rejection)

Example: null
messagestring
Example: "Data fetched successfully"
metaobject
meta.​paginationobject
meta.​pagination.​totalnumber
Example: 10
meta.​pagination.​startnumber
Example: 1
meta.​pagination.​endnumber
Example: 2
meta.​pagination.​pagenumber
Example: 1
meta.​pagination.​limitnumber
Example: 2
Response
application/json
{ "status": "success", "data": [ { "id": "2697eff1-ac30-41db-94b7-d615133a5c9e", "name": "ETH USDC Wallet", "coinId": "3b3f759c-d3fa-46fd-80c5-10c1bc244e83", "coinName": "USDC", "coinNetworkId": "e4a800c9-ddad-411d-82da-6a8680ce6618", "coinNetworkName": "Ethereum", "address": "0x2205844f0b80798F0e187c260753191eb668a495", "status": "Verified", "createdAt": "2025-01-24T11:51:11.604Z", "updatedAt": "2025-01-24T11:52:08.299Z", "verified": true, "comments": null }, { "id": "9c2edf76-2349-4ae6-9250-5e692a89aedf", "name": "ETH USDT Wallet", "coinId": "3b3f759c-d3fa-46fd-80c5-10c1bc244e83", "coinName": "USDT", "coinNetworkId": "e4a800c9-ddad-411d-82da-6a8680ce6618", "coinNetworkName": "Ethereum", "address": "0x2205844f0b80798F0e187c260753191eb668a495", "status": "Verified", "createdAt": "2025-01-24T11:50:50.526Z", "updatedAt": "2025-01-24T11:52:09.976Z", "verified": true, "comments": null } ], "meta": { "pagination": { "total": 2, "start": 1, "end": 2, "page": 1, "limit": 2 } } }

Request

This endpoint is used to get a complete list of all approved fiat withdrawal accounts for an organization. The responses have pagination included to help navigate through multiple accounts if needed.

Security
bearerAuth
Path
orgIdstringrequired
Query
pagenumber(number)>= 1
Default 1
Example: page=1
limitnumber(number)[ 1 .. 50 ]
Default 10
Example: limit=10
curl -i -X GET \
  'https://api.sandbox.openfx.com/v1/brokerage/{orgId}/fiat_withdrawal_addresses?page=1&limit=10' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

success

Bodyapplication/json
statusstring
Enum"success""error"
Example: "success"
dataArray of objects or null
data[].​idstring(uuid)

Unique identifier for the fiat withdrawal account

Example: "62389a49-7f17-49ab-ac2e-e1947961614e"
data[].​currencystring

Currency symbol associated with the account

Example: "USD"
data[].​accountNamestring

Name associated with the bank account

Example: "testing USD"
data[].​accountNumberstring

Bank account number or its masked representation

Example: "1234"
data[].​bankNamestring

Name of the bank where the account is held

Example: "USD TESTING"
data[].​routingNumberstring or null

Routing number for the bank, applicable for certain countries

Example: "23423556"
data[].​swiftCodestring or null

SWIFT/BIC code for international transfers

Example: null
data[].​statusstring

Current status of the withdrawal account

Example: "active"
data[].​verifiedboolean

Indicates whether the account has been verified

Example: true
data[].​creatorIdstring or null(uuid)

User ID of the account creator (nullable)

Example: "84677558-407c-4ee9-b59a-51a0d5f55764"
data[].​orgIdstring(uuid)

Organization ID to which this account belongs

Example: "c96183a5-2830-4606-9ae2-15dfd058872b"
data[].​commentsstring or null

Optional notes or remarks related to the withdrawal account

Example: null
data[].​transferTypestring

Chosen transfer type of the account

data[].​memostring or null

Optional memo field for the account, will be null if it is unset

Example: null
data[].​createdAtstring

UTC Timestamp when the account was created

Example: "2024-10-24T21:20:21.814Z"
data[].​updatedAtstring

UTC Timestamp when the account was last updated

Example: "2024-10-25T03:14:56.998Z"
messagestring
Example: "Data fetched successfully"
metaobject
meta.​paginationobject
meta.​pagination.​totalnumber
Example: 10
meta.​pagination.​startnumber
Example: 1
meta.​pagination.​endnumber
Example: 2
meta.​pagination.​pagenumber
Example: 1
meta.​pagination.​limitnumber
Example: 2
Response
application/json
{ "status": "success", "data": [ { "id": "d811ed6a-62c4-403f-bbe8-81d39f6d21c7", "currency": "USD", "accountName": "USD FEDWIRE", "accountNumber": "123456789", "bankName": "Zand", "routingNumber": "1234567", "swiftCode": null, "status": "active", "verified": true, "creatorId": "84677558-407c-4ee9-b59a-51a0d5f55764", "orgId": "c96183a5-2830-4606-9ae2-15dfd058872b", "comments": null, "transferType": "FEDWIRE", "memo": null, "createdAt": "2024-08-28T02:25:14.926Z", "updatedAt": "2024-10-10T05:28:40.340Z" }, { "id": "66c3ef64-1fa6-4512-b083-57090e08ea57", "currency": "GBP", "accountName": "GBP SWIFT3", "accountNumber": "1234", "bankName": "GBP SWIFT3", "routingNumber": null, "swiftCode": "2343", "status": "active", "verified": true, "creatorId": "84677558-407c-4ee9-b59a-51a0d5f55764", "orgId": "c96183a5-2830-4606-9ae2-15dfd058872b", "comments": null, "transferType": "SWIFT", "memo": null, "createdAt": "2024-09-04T08:30:50.601Z", "updatedAt": "2024-10-10T05:30:49.044Z" } ], "meta": { "pagination": { "total": 2, "start": 1, "end": 2, "page": 1, "limit": 2 } } }

Request

This endpoint is used to get a comprehensive view of all withdrawals (both fiat and stablecoins) done by an organization.

Security
bearerAuth
Path
orgIdstringrequired
Query
pagenumber(number)>= 1
Default 1
Example: page=1
limitnumber(number)[ 1 .. 50 ]
Default 10
Example: limit=10
curl -i -X GET \
  'https://api.sandbox.openfx.com/v1/brokerage/{orgId}/withdrawals?page=1&limit=10' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

success

Bodyapplication/json
statusstring
Enum"success""error"
Example: "success"
dataArray of objects or null
data[].​idstring(uuid)

Unique identifier for the withdrawal record

Example: "392cf015-5045-4615-a226-df3543d9c15f"
data[].​createdAtstring

UTC Timestamp when the withdrawal request was created

Example: "2025-02-07T14:04:14.268Z"
data[].​amountnumber

Amount of currency requested for withdrawal

Example: 0.5
data[].​currencystring

Currency symbol of the withdrawn asset

Example: "USDT"
data[].​networkstring

Blockchain network name used to process the withdrawal

Example: "ETHEREUM"
data[].​statusstring

Current status of the withdrawal

data[].​transactionHashstring or null

Blockchain transaction hash if available; null if not yet processed

Example: null
data[].​withdrawalAddressIdstring(uuid)

Unique identifier for the withdrawal address used

Example: "2697eff1-ac30-41db-94b7-d615133a5c9e"
data[].​orgIdstring(uuid)

Unique identifier of the organization associated with the withdrawal

Example: "c96183a5-2830-4606-9ae2-15dfd058872b"
data[].​actorIdstring(uuid)

Unique identifier of the user who initiated the withdrawal

Example: "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5"
data[].​actorEmailstring(email)

Email of the actor who initiated the withdrawal

Example: "test-user@example.co"
data[].​commentsstring

Optional notes or comments about the withdrawal request

Example: "Client initiated the withdrawal"
messagestring
Example: "Data fetched successfully"
metaobject
meta.​paginationobject
meta.​pagination.​totalnumber
Example: 10
meta.​pagination.​startnumber
Example: 1
meta.​pagination.​endnumber
Example: 2
meta.​pagination.​pagenumber
Example: 1
meta.​pagination.​limitnumber
Example: 2
Response
application/json
{ "status": "success", "data": [ { "id": "392cf015-5045-4615-a226-df3543d9c15f", "createdAt": "2025-02-07T14:04:14.268Z", "amount": 0.5, "currency": "USDT", "network": "ETHEREUM", "status": "COMPLETED", "transactionHash": null, "withdrawalAddressId": "2697eff1-ac30-41db-94b7-d615133a5c9e", "orgId": "c96183a5-2830-4606-9ae2-15dfd058872b", "actorId": "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5", "actorEmail": "test-user1@example.co", "comments": "Client initiated the withdrawal" }, { "id": "aa7b22c8-2a37-47bf-b82e-b8f4a9b79a1b", "createdAt": "2025-02-07T11:06:58.271Z", "amount": 12, "currency": "USDT", "network": "ETHEREUM", "status": "PENDING", "transactionHash": null, "withdrawalAddressId": "d5c210dd-73a9-4102-9daf-1146b615c42d", "orgId": "c96183a5-2830-4606-9ae2-15dfd058872b", "actorId": "72ad1d70-e8dd-4592-9519-0273ea5a6f3c", "actorEmail": "test-user2@example.co", "comments": "Client initiated the withdrawal" } ], "meta": { "pagination": { "total": 2, "start": 1, "end": 2, "page": 1, "limit": 2 } } }

Request

Fetches detailed information about a specific withdrawal using its unique identifier.

Security
bearerAuth
Path
orgIdstringrequired
Example: c96183a5-2830-4606-9ae2-15dfd058872b
withdrawalIdstring(uuid)required
Example: 392cf015-5045-4615-a226-df3543d9c15f
curl -i -X GET \
  https://api.sandbox.openfx.com/v1/brokerage/c96183a5-2830-4606-9ae2-15dfd058872b/withdrawal/392cf015-5045-4615-a226-df3543d9c15f \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

success

Bodyapplication/json
statusstring
Enum"success""error"
Example: "success"
dataobject or null
data.​idstring(uuid)

Unique identifier for the withdrawal record

Example: "392cf015-5045-4615-a226-df3543d9c15f"
data.​createdAtstring

UTC Timestamp when the withdrawal request was created

Example: "2025-02-07T14:04:14.268Z"
data.​amountnumber

Amount of currency requested for withdrawal

Example: 0.5
data.​currencystring

Currency symbol of the withdrawn asset

Example: "USDT"
data.​networkstring

Blockchain network name used to process the withdrawal

Example: "ETHEREUM"
data.​statusstring

Current status of the withdrawal

data.​transactionHashstring or null

Blockchain transaction hash if available; null if not yet processed

Example: null
data.​withdrawalAddressIdstring(uuid)

Unique identifier for the withdrawal address used

Example: "2697eff1-ac30-41db-94b7-d615133a5c9e"
data.​orgIdstring(uuid)

Unique identifier of the organization associated with the withdrawal

Example: "c96183a5-2830-4606-9ae2-15dfd058872b"
data.​actorIdstring(uuid)

Unique identifier of the user who initiated the withdrawal

Example: "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5"
data.​actorEmailstring(email)

Email of the actor who initiated the withdrawal

Example: "test-user@example.co"
data.​commentsstring

Optional notes or comments about the withdrawal request

Example: "Client initiated the withdrawal"
messagestring
Example: "Data fetched successfully"
Response
application/json
{ "status": "success", "data": { "id": "392cf015-5045-4615-a226-df3543d9c15f", "createdAt": "2025-02-07T14:04:14.268Z", "amount": 0.5, "currency": "USDT", "network": "ETHEREUM", "status": "COMPLETED", "transactionHash": null, "withdrawalAddressId": "2697eff1-ac30-41db-94b7-d615133a5c9e", "orgId": "c96183a5-2830-4606-9ae2-15dfd058872b", "actorId": "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5", "actorEmail": "test-user@example.co", "comments": "Client initiated the withdrawal" } }

Request

Initiates a stablecoin withdrawal to an approved wallet address.

Security
bearerAuth
Path
orgIdstringrequired
Bodyapplication/json
amountnumber> 0required
Example: 10
currencystringrequired
Enum"USDC""USDT""EURC"
Example: "USDT"
withdrawalAddressIdstring(uuid)required
Example: "392cf015-5045-4615-a226-df3543d9c15f"
curl -i -X POST \
  'https://api.sandbox.openfx.com/v1/brokerage/{orgId}/withdrawal' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "amount": 10,
    "currency": "USDT",
    "withdrawalAddressId": "392cf015-5045-4615-a226-df3543d9c15f"
  }'

Responses

success

Bodyapplication/json
statusstring
Enum"success""error"
Example: "success"
dataobject or null
data.​idstring(uuid)

Unique identifier for the withdrawal record

Example: "392cf015-5045-4615-a226-df3543d9c15f"
data.​createdAtstring

UTC Timestamp when the withdrawal request was created

Example: "2025-02-07T14:04:14.268Z"
data.​amountnumber

Amount of currency requested for withdrawal

Example: 0.5
data.​currencystring

Currency symbol of the withdrawn asset

Example: "USDT"
data.​networkstring

Blockchain network name used to process the withdrawal

Example: "ETHEREUM"
data.​statusstring

Current status of the withdrawal

data.​transactionHashstring or null

Blockchain transaction hash if available; null if not yet processed

Example: null
data.​withdrawalAddressIdstring(uuid)

Unique identifier for the withdrawal address used

Example: "2697eff1-ac30-41db-94b7-d615133a5c9e"
data.​orgIdstring(uuid)

Unique identifier of the organization associated with the withdrawal

Example: "c96183a5-2830-4606-9ae2-15dfd058872b"
data.​actorIdstring(uuid)

Unique identifier of the user who initiated the withdrawal

Example: "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5"
data.​actorEmailstring(email)

Email of the actor who initiated the withdrawal

Example: "test-user@example.co"
data.​commentsstring

Optional notes or comments about the withdrawal request

Example: "Client initiated the withdrawal"
messagestring
Example: "Data fetched successfully"
Response
application/json
{ "status": "success", "data": { "id": "392cf015-5045-4615-a226-df3543d9c15f", "createdAt": "2025-02-07T14:04:14.268Z", "amount": 0.5, "currency": "USDT", "network": "ETHEREUM", "status": "COMPLETED", "transactionHash": null, "withdrawalAddressId": "2697eff1-ac30-41db-94b7-d615133a5c9e", "orgId": "c96183a5-2830-4606-9ae2-15dfd058872b", "actorId": "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5", "actorEmail": "test-user@example.co", "comments": "Client initiated the withdrawal" } }

Request

Initiates a fiat withdrawal to an approved bank account.

Security
bearerAuth
Path
orgIdstringrequired
Bodyapplication/json
amountnumber> 0required
Example: 10
currencystringrequired
Enum"USD""AED""GBP""EUR""AUD""MXN""BRL""ARS""PHP"
Example: "USD"
withdrawalAddressIdstring(uuid)required
Example: "392cf015-5045-4615-a226-df3543d9c15f"
curl -i -X POST \
  'https://api.sandbox.openfx.com/v1/brokerage/{orgId}/fiat_withdrawal' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "amount": 10,
    "currency": "USD",
    "withdrawalAddressId": "392cf015-5045-4615-a226-df3543d9c15f"
  }'

Responses

success

Bodyapplication/json
statusstring
Enum"success""error"
Example: "success"
dataobject or null
data.​idstring(uuid)

Unique identifier for the withdrawal record

Example: "392cf015-5045-4615-a226-df3543d9c15f"
data.​createdAtstring

UTC Timestamp when the withdrawal request was created

Example: "2025-02-07T14:04:14.268Z"
data.​amountnumber

Amount of currency requested for withdrawal

Example: 0.5
data.​currencystring

Currency symbol of the withdrawn asset

Example: "USDT"
data.​networkstring

Blockchain network name used to process the withdrawal

Example: "ETHEREUM"
data.​statusstring

Current status of the withdrawal

data.​transactionHashstring or null

Blockchain transaction hash if available; null if not yet processed

Example: null
data.​withdrawalAddressIdstring(uuid)

Unique identifier for the withdrawal address used

Example: "2697eff1-ac30-41db-94b7-d615133a5c9e"
data.​orgIdstring(uuid)

Unique identifier of the organization associated with the withdrawal

Example: "c96183a5-2830-4606-9ae2-15dfd058872b"
data.​actorIdstring(uuid)

Unique identifier of the user who initiated the withdrawal

Example: "36bdb6a4-7cc6-4a08-b325-db416dbdd9f5"
data.​actorEmailstring(email)

Email of the actor who initiated the withdrawal

Example: "test-user@example.co"
data.​commentsstring

Optional notes or comments about the withdrawal request

Example: "Client initiated the withdrawal"
messagestring
Example: "Data fetched successfully"
Response
application/json
{ "status": "success", "data": { "id": "123e4567-e89b-12d3-a456-426614174000", "createdAt": "2024-10-10T07:15:44.030Z", "amount": 1000000, "currency": "USD", "network": "FIAT", "status": "PENDING", "transactionHash": null, "withdrawalAddressId": "123e4567-e89b-12d3-a456-426614174001", "orgId": "123e4567-e89b-12d3-a456-426614174002", "actorId": "123e4567-e89b-12d3-a456-426614174003", "actorEmail": "test-user@example.co", "comments": "Client initiated the withdrawal via API" } }