POST https://trade-uk.sandbox.zodiamarkets.com/api/3/originator
List Account Details
Retrieve account details for the entity you have onboarded with Zodia Markets ( details include You / Your Entity name, address, IDs) and list of wallets and bank accounts that have been whitelisted and verified with Zodia Markets for the entity.
Request
Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
accountGroupUuid | String | No | Default UUID | Filter Account Details by specific account group UUID. Will return Default Account Group if not provided. Note only one Entity is returned per Account Group |
limit | Integer | No | 50 | Maximum results to return (1-200) |
offset | Integer | No | 0 | Offset for pagination |
Example Request
{
"accountGroupUuid": "20721252c-81ed-41be-bf4d-d51b8f2246b8",
"limit": 50,
"offset": 0
}Response
Success Response (200 OK)
{
"companyName": "TECH COMPANY PLC",
"dateOfFormation": "2021-02-09",
"countryOfFormation": "GB",
"countryOfRegistration": "GB",
"uuid": "603a341f-73d3-41ab-9666-24166312e43d",
"clientShortcode": "TESTACCOUNT",
"clientAccountGroupName": "Default",
"clientAccountGroupUuid": "7687282f-1073-441b-9ff4-694e6b49effe",
"type": "ENTITY",
"kind": "ORIGINATOR",
"phoneNumber": "+4479878767898",
"website": "www.techcompany112311.com",
"email": "[email protected]",
"vasp": false,
"enabled": true,
"verified": true,
"address": {
"country": "GB",
"city": "London",
"street": "101 Test Street",
"postalCode": "N5 POP",
"stateProvince": "Greater London",
"createdAt": "2026-05-12T17:00:00Z",
"updatedAt": "2026-05-12T17:00:00Z"
},
"kycDetails": {
"occupation": "Service Provider",
"sourceOfFunds": "Trading",
"methodOfVerification": "Online",
"industryType": "Technology",
"entityType": "",
"natureOfActivity": "Off-Ramp",
"beneficiaryOwnership": false,
"createdAt": "2026-05-12T16:59:58Z",
"updatedAt": "2026-05-12T16:59:58Z"
},
"associatedPersons": [
{
"firstname": "Joe",
"lastname": "Bloggs",
"dateOfBirth": "2011-05-06",
"countryOfOrigin": "GB",
"nationality": "GB",
"uuid": "a11b5beb-c1e2-4918-ace1-99373ddf70a6",
"clientShortcode": "hassanLimitsUAT",
"type": "INDIVIDUAL",
"kind": "AUTHORIZED_SIGNATORY",
"phoneNumber": "",
"website": "",
"email": "",
"createdAt": "2026-05-12T16:59:52Z",
"updatedAt": "2026-05-12T16:59:52Z"
}
],
"identifications": [
{
"type": "OTHER",
"number": "MS190987871B",
"typeOther": "MSB",
"createdAt": "2026-05-12T16:59:53Z",
"updatedAt": "2026-05-12T16:59:53Z"
},
{
"type": "BUSINESS_REGISTRATION",
"number": "1019098988",
"typeOther": "",
"createdAt": "2026-05-12T16:59:53Z",
"updatedAt": "2026-05-12T16:59:53Z"
}
],
"bankAccounts": [
{
"uuid": "aca1259e-1839-4c17-b612-82ebcc04d339",
"bankName": "BACKUP BANK",
"bankBranchName": "BACKUP BRANCH",
"accountNumber": "109978736766",
"accountAlias": "MY BACKUP BANK",
"accountName": "TECH COMPANY PLC 2",
"currency": "GBP",
"iban": "GB0828972727222",
"swiftBic": "BBXXX2L",
"country": "GB",
"city": "London",
"street": "109 Bank Street",
"postalCode": "EC1A AAB",
"memo": "Please provide 2",
"intermediaryBankCountry": "",
"intermediaryBankSwiftBic": "",
"enabled": true,
"verified": true,
"networkIds": [],
"createdAt": "2026-05-12T16:59:50Z",
"updatedAt": "2026-05-12T16:59:50Z"
},
{
"uuid": "903730c4-e6c3-452e-babd-d4743efb9b07",
"bankName": "TECH BANK",
"bankBranchName": "TECH BRANCH",
"accountNumber": "101099991",
"accountAlias": "MY TECH BANK 1",
"accountName": "TECH COMP LTD",
"currency": "GBP",
"iban": "GB190198198887",
"swiftBic": "TBXXX",
"country": "GB",
"city": "London",
"street": "101 Bank Street",
"postalCode": "EC1A AAA",
"memo": "Provide Reference",
"intermediaryBankCountry": "",
"intermediaryBankSwiftBic": "",
"enabled": true,
"verified": true,
"networkIds": [],
"createdAt": "2026-05-12T16:59:51Z",
"updatedAt": "2026-05-12T16:59:51Z"
}
],
"wallets": [
{
"uuid": "f16186df-5cf5-4417-86eb-8cd65fab3348",
"blockchain": "Ethereum",
"asset": "USDC",
"walletAddress": "0x982892872727",
"alias": "MY USDC WALLET",
"type": "SELF_HOSTED",
"memo": "Main",
"vasp": "",
"executionProvider": "",
"default": false,
"enabled": true,
"whitelisted": false,
"createdAt": "2026-05-12T16:59:49Z",
"updatedAt": "2026-05-12T16:59:49Z"
},
{
"uuid": "b4494718-ddb2-4554-a65c-e06e64875923",
"blockchain": "TRON",
"asset": "USDT",
"walletAddress": "0x98287272772221",
"alias": "MY WALLET USDT",
"type": "CUSTODY",
"memo": "FORWARD",
"vasp": "ZODIA_CUSTODY",
"executionProvider": "Zodia",
"default": false,
"enabled": true,
"whitelisted": false,
"createdAt": "2026-05-12T16:59:48Z",
"updatedAt": "2026-05-12T16:59:48Z"
}
],
"createdAt": "2026-05-12T16:54:02Z",
"updatedAt": "2026-05-12T16:54:02Z"
}Response Fields
Entity Object
| Field | Type | Description |
|---|---|---|
uuid | String | Unique identifier for the Entity |
companyName | String | Entity name |
type | String | ENTITY or INDIVIDUAL |
kind | String | Always ORIGINATOR |
enabled | Boolean | Whether entity is enabled for trading |
verified | Boolean | Whether entity has completed verification |
vasp | Boolean | Virtual Asset Service Provider flag |
clientShortcode | String | Your account identifier |
clientAccountGroupName | String | Account group (sub-account) name |
clientAccountGroupUuid | String | Account group UUID |
email | String | Contact email |
phoneNumber | String | Contact phone |
website | String | Website URL |
dateOfFormation | String | Company formation date (YYYY-MM-DD) |
countryOfFormation | String | ISO 3166-1 alpha-2 country code |
countryOfRegistration | String | ISO 3166-1 alpha-2 country code |
address | Object | Address details |
kycDetails | Object | KYC and compliance information |
identifications | Array | Business registration and tax identifications |
bankAccounts | Array | Bank accounts configured for fiat settlement |
wallets | Array | Crypto wallet addresses for digital asset settlement |
createdAt | String | Entity creation timestamp (ISO 8601) |
updatedAt | String | Last update timestamp (ISO 8601) |
Address
| Field | Type | Description |
|---|---|---|
street | String | Street address |
city | String | City |
stateProvince | String | State or province |
postalCode | String | Postal/ZIP code |
country | String | ISO 3166-1 alpha-2 country code |
createdAt | String | Creation timestamp (ISO 8601) |
updatedAt | String | Last update timestamp (ISO 8601) |
KYC Details
| Field | Type | Description |
|---|---|---|
occupation | String | Occupation or business activity |
sourceOfFunds | String | Source of funds description |
methodOfVerification | String | Verification method used |
industryType | String | Industry classification |
entityType | String | Legal entity type |
natureOfActivity | String | Nature of business activity |
beneficiaryOwnership | Boolean | Beneficiary ownership flag |
createdAt | String | Creation timestamp (ISO 8601) |
updatedAt | String | Last update timestamp (ISO 8601) |
Identification Object
| Field | Type | Description |
|---|---|---|
type | String | BUSINESS_REGISTRATION, LEI, PASSPORT, NATIONAL_ID, DRIVERS_LICENSE, SSN, TAX_ID, EIN, VAT_NUMBER, OTHER |
number | String | Identification number |
typeOther | String | Custom type (if type is "OTHER") |
createdAt | String | Creation timestamp (ISO 8601) |
updatedAt | String | Last update timestamp (ISO 8601) |
Bank Account Object
| Field | Type | Description |
|---|---|---|
bankName | String | Bank institution name |
bankBranchName | String | Branch name |
accountNumber | String | Bank account number |
accountAlias | String | Friendly alias for the account |
accountName | String | Account holder name |
currency | String | Account currency (ISO 4217) |
iban | String | International Bank Account Number |
swiftBic | String | SWIFT/BIC code |
country | String | ISO 3166-1 alpha-2 country code |
city | String | Bank branch city |
street | String | Bank branch street address |
postalCode | String | Bank branch postal code |
memo | String | Additional notes |
enabled | Boolean | Whether account is enabled |
verified | Boolean | Whether account is verified |
createdAt | String | Creation timestamp (ISO 8601) |
updatedAt | String | Last update timestamp (ISO 8601) |
Wallet Object
| Field | Type | Description |
|---|---|---|
uuid | String | Unique identifier |
blockchain | String | Blockchain network (e.g., Ethereum, Polygon, TRON) |
asset | String | Digital asset symbol (e.g., USDC, USDT, BTC) |
walletAddress | String | Blockchain wallet address |
alias | String | Friendly alias for the wallet |
type | String | SELF_HOSTED or CUSTODY |
memo | String | Additional notes |
vasp | String | Virtual Asset Service Provider name (if custody) |
executionProvider | String | Execution provider name (if applicable) |
default | Boolean | Whether this is the default wallet for the asset |
enabled | Boolean | Whether wallet is enabled for trading |
whitelisted | Boolean | Whether wallet address is whitelisted |
createdAt | String | Creation timestamp (ISO 8601) |
updatedAt | String | Last update timestamp (ISO 8601) |
Entity Status
You / Your Entity must be enabled and verified in order to trade.
| Field | Value | Meaning |
|---|---|---|
enabled | true | Entity is active |
enabled | false | Entity is inactive |
verified | true | Passed KYC/compliance checks |
verified | false | Pending verification |
Wallet Status
For crypto settlement, wallets must be properly configured:
| Field | Value | Required for Trading? |
|---|---|---|
enabled | true | ✅ Yes |
whitelisted | true | ✅ Yes |
enabled | false | ❌ No - wallet disabled |
whitelisted | false | ❌ No - wallet not whitelisted |
Crypto Settlement: To use a wallet for settlement, the wallet must have
enabled: trueANDwhitelisted: true, and match the asset being traded.
Pagination
Use max (1-200) and offset parameters to paginate through results.
Example: Get All Entities
def get_all_entities():
all_entities = []
offset = 0
max_per_page = 200
while True:
response = make_api_request('POST', 'api/3/originator', {
'max': max_per_page,
'offset': offset
})
entities = response['data']
all_entities.extend(entities)
if len(entities) < max_per_page:
break
offset += max_per_page
return all_entitiesCode Examples
Python
import json
import hmac
import hashlib
import time
import requests
# Configuration
api_key = "your_api_key"
api_secret = "your_api_secret"
base_url = "https://trade-uk.sandbox.zodiamarkets.com"
# Request body
body = {
"accountGroupUuid": "2073252c-81ed-41be-bf4d-d51b8f2246b8",
"max": 50,
"offset": 0
}
body_json = json.dumps(body)
# Generate signature
path = "api/3/originator"
tonce = str(int(time.time() * 1000000))
message = f"{path}\0{body_json}"
signature = hmac.new(
api_secret.encode(),
message.encode(),
hashlib.sha512
).hexdigest()
# Make request
headers = {
"Rest-Key": api_key,
"Rest-Sign": signature,
"Content-Type": "application/json"
}
response = requests.post(
f"{base_url}/{path}",
headers=headers,
data=body_json
)
# Process response
if response.status_code == 200:
entities = response.json()
for entity in entities:
print(f"\n{entity['companyName']}: {entity['uuid']}")
print(f" Enabled: {entity['enabled']}")
print(f" Verified: {entity['verified']}")
print(f" Wallets: {len(entity['wallets'])}")
print(f" Bank Accounts: {len(entity['bankAccounts'])}")
else:
print(f"Error: {response.status_code}")
print(response.text)JavaScript (Node.js)
const crypto = require('crypto');
const axios = require('axios');
// Configuration
const apiKey = 'your_api_key';
const apiSecret = 'your_api_secret';
const baseUrl = 'https://trade-uk.sandbox.zodiamarkets.com';
// Request body
const body = {
accountGroupUuid: '2073252c-81ed-41be-bf4d-d51b8f2246b8',
max: 50,
offset: 0
};
const bodyJson = JSON.stringify(body);
// Generate signature
const path = 'api/3/originator';
const tonce = Date.now() * 1000;
const message = `${path}\0${bodyJson}`;
const signature = crypto
.createHmac('sha512', apiSecret)
.update(message)
.digest('hex');
// Make request
const headers = {
'Rest-Key': apiKey,
'Rest-Sign': signature,
'Content-Type': 'application/json'
};
axios.post(`${baseUrl}/${path}`, body, { headers })
.then(response => {
response.data.forEach(entity => {
console.log(`\n${entity.companyName}: ${entity.uuid}`);
console.log(` Enabled: ${entity.enabled}`);
console.log(` Verified: ${entity.verified}`);
console.log(` Wallets: ${entity.wallets.length}`);
console.log(` Bank Accounts: ${entity.bankAccounts.length}`);
});
})
.catch(error => {
console.error('Error:', error.response?.status);
console.error(error.response?.data);
});cURL
curl -X POST https://trade-uk.sandbox.zodiamarkets.com/api/3/originator \
-H "Rest-Key: your_api_key" \
-H "Rest-Sign: your_hmac_signature" \
-H "Content-Type: application/json" \
-d '{
"accountGroupUuid": "2073252c-81ed-41be-bf4d-d51b8f2246b8",
"max": 50,
"offset": 0
}'Common Use Cases
Find Wallets for Specific Asset
def find_wallets_for_asset(entity_id, asset):
response = make_api_request('POST', 'api/3/originator', {})
for entity in response:
if entity['uuid'] == entity_id:
wallets = [
w for w in entity['wallets']
if w['asset'] == asset and w['enabled'] and w['whitelisted']
]
return wallets
return []
# Find USDC wallets for a entity
wallets = find_wallets_for_asset(
'5fff78ca-d87f-424f-90bf-96b1906a284b',
'USDC'
)
for wallet in wallets:
print(f"{wallet['alias']}: {wallet['blockchain']}")
print(f" Address: {wallet['walletAddress']}")