Get Account Details List
POST https://trade-uk.sandbox.zodiamarkets.com/api/3/originator
List Account Details
Section titled “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.
Entity Status
Section titled “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
Section titled “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
Section titled “Pagination”This endpoint accepts limit and offset for consistency with the beneficiary and sender endpoints, but ignores both: it always requests a single record and returns that one Entity object directly, not a paged envelope. Exactly one Entity is returned per Account Group, so to read a different one pass that group’s accountGroupUuid rather than paginating.
Code Examples
Section titled “Code Examples”Python
Section titled “Python”import jsonimport hmacimport hashlibimport timeimport requests
# Configurationapi_key = "your_api_key"api_secret = "your_api_secret"base_url = "https://trade-uk.sandbox.zodiamarkets.com"
# Request body — every signed request must carry a nonce or toncetonce = str(int(time.time() * 1000000))body = { "tonce": tonce, "accountGroupUuid": "2073252c-81ed-41be-bf4d-d51b8f2246b8"}body_json = json.dumps(body)
# Generate signaturepath = "api/3/originator"message = f"{path}\0{body_json}"signature = hmac.new( api_secret.encode(), message.encode(), hashlib.sha512).hexdigest()
# Make requestheaders = { "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 — the body is a single Entity object, not a listif response.status_code == 200: entity = response.json() 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'])}")elif response.status_code == 404: print("No Entity is configured for this account group")else: print(f"Error: {response.status_code}") print(response.text)JavaScript (Node.js)
Section titled “JavaScript (Node.js)”const crypto = require('crypto');const axios = require('axios');
// Configurationconst apiKey = 'your_api_key';const apiSecret = 'your_api_secret';const baseUrl = 'https://trade-uk.sandbox.zodiamarkets.com';
// Request body — every signed request must carry a nonce or tonceconst tonce = Date.now() * 1000;const body = { tonce, accountGroupUuid: '2073252c-81ed-41be-bf4d-d51b8f2246b8'};const bodyJson = JSON.stringify(body);
// Generate signatureconst path = 'api/3/originator';const message = `${path}\0${bodyJson}`;const signature = crypto .createHmac('sha512', apiSecret) .update(message) .digest('hex');
// Make requestconst headers = { 'Rest-Key': apiKey, 'Rest-Sign': signature, 'Content-Type': 'application/json'};
axios.post(`${baseUrl}/${path}`, body, { headers }) .then(response => { // The body is a single Entity object, not a list const entity = response.data; 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 -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 '{ "tonce": 1770888183656000, "accountGroupUuid": "2073252c-81ed-41be-bf4d-d51b8f2246b8" }'Common Use Cases
Section titled “Common Use Cases”Find Wallets for Specific Asset
Section titled “Find Wallets for Specific Asset”def find_wallets_for_asset(asset): entity = make_api_request('POST', 'api/3/originator', {})
return [ w for w in entity['wallets'] if w['asset'] == asset and w['enabled'] and w['whitelisted'] ]
# Find USDC wallets for your Entitywallets = find_wallets_for_asset('USDC')for wallet in wallets: print(f"{wallet['alias']}: {wallet['blockchain']}") print(f" Address: {wallet['walletAddress']}")Domain: Payment participants
Request
Section titled “Request”POST https://trade-uk.sandbox.zodiamarkets.com/api/3/originatorHeaders
Section titled “Headers”| Header | Required | Description |
|---|---|---|
Rest-Key |
API key for authentication | |
Rest-Sign |
Calculated API Signature |
| Field | Type | Required | Description |
|---|---|---|---|
tonce |
integer (int64) | yes | The current Unix time in microseconds. |
nonce |
integer (int64) | Alternative to tonce. Every request must carry either nonce or tonce, and the value must parse as a whole number; a request with neither is rejected with INVALID_NONCE_OR_TONCE. |
|
accountGroupUuid |
string | 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 (int32) | Maximum results to return. Validation caps this at 50 — a larger value is rejected with INVALID_PARAMETERS. When omitted, the participants service applies its own default. This endpoint validates the value but then ignores it: it always requests a single record and returns that one object. |
|
userUuid |
string | Master API keys only: UUID of the user to act on behalf of. Ignored unless the calling key belongs to the owner of a master-API-enabled site. |
Responses
Section titled “Responses”Account details — type: ENTITY
Section titled “Account details — type: ENTITY”| Field | Type | Required | Description |
|---|---|---|---|
companyName |
string | Entity name | |
companyName2 |
string | Second line of the registered name, where the name needs one | |
dateOfFormation |
string (date) | Company formation date (YYYY-MM-DD) | |
countryOfFormation |
string | ISO 3166-1 alpha-2 country code | |
countryOfRegistration |
string | ISO 3166-1 alpha-2 country code | |
uuid |
string (uuid) | Unique identifier for the Entity | |
type |
string (enum) | Whether this participant is a legal entity or a natural person — One of: ENTITY, INDIVIDUAL | |
kind |
string (enum) | Always ORIGINATOR — One of: ORIGINATOR |
|
enabled |
boolean | Whether Entity is enabled for trading | |
verified |
boolean | Whether Entity has completed verification | |
vasp |
boolean | Virtual Asset Service Provider flag | |
ownershipPercentage |
string | Percentage of the participant owned, for participants held as an ownership interest. Absent when not recorded. | |
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 | |
address |
object | Address details | |
address.street |
string | Street address | |
address.city |
string | City | |
address.stateProvince |
string | State or province | |
address.postalCode |
string | Postal/ZIP code | |
address.country |
string | ISO 3166-1 alpha-2 country code | |
address.createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
address.updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
kycDetails |
object | KYC and compliance information | |
kycDetails.occupation |
string | Occupation or business activity | |
kycDetails.sourceOfFunds |
string | Source of funds description | |
kycDetails.methodOfVerification |
string | Verification method used | |
kycDetails.industryType |
string | Industry classification | |
kycDetails.entityType |
string | Legal entity type | |
kycDetails.natureOfActivity |
string | Nature of business activity | |
kycDetails.beneficiaryOwnership |
boolean | Beneficiary ownership flag | |
kycDetails.createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
kycDetails.updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
identifications |
array of object | Business registration and tax identifications | |
identifications[].type |
string (enum) | Identification type — One of: PASSPORT, NATIONAL_ID, DRIVERS_LICENSE, SSN, TAX_ID, LEI, EIN, VAT_NUMBER, BUSINESS_REGISTRATION, OTHER | |
identifications[].number |
string | Identification number | |
identifications[].typeOther |
string | Custom type (if type is “OTHER”) | |
identifications[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
identifications[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
associatedPersons |
array of object | Associated Person details (e.g. authorized signatory, beneficial owners). enabled, verified and vasp are always null on these entries. |
|
associatedPersons[].uuid |
string (uuid) | Unique identifier for the person | |
associatedPersons[].firstname |
string | Given name | |
associatedPersons[].lastname |
string | Family name | |
associatedPersons[].dateOfBirth |
string (date) | Date of birth (YYYY-MM-DD) | |
associatedPersons[].countryOfOrigin |
string | ISO 3166-1 alpha-2 country code of origin | |
associatedPersons[].nationality |
string | ISO 3166-1 alpha-2 country code of nationality | |
associatedPersons[].type |
string (enum) | Always INDIVIDUAL for an associated person — One of: INDIVIDUAL |
|
associatedPersons[].kind |
string (enum) | Role this person holds in relation to the participant — One of: AUTHORIZED_SIGNATORY, BENEFICIARY_OWNER, INTERMEDIARY_BENEFICIARY_OWNER | |
associatedPersons[].clientShortcode |
string | Your account identifier | |
associatedPersons[].phoneNumber |
string | Contact phone | |
associatedPersons[].website |
string | Website URL | |
associatedPersons[].email |
string | Contact email | |
associatedPersons[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
associatedPersons[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
bankAccounts |
array of object | Bank accounts configured for fiat settlement | |
bankAccounts[].uuid |
string (uuid) | Unique identifier for the bank account | |
bankAccounts[].bankName |
string | Bank institution name | |
bankAccounts[].bankBranchName |
string | Branch name | |
bankAccounts[].accountNumber |
string | Bank account number | |
bankAccounts[].accountAlias |
string | Friendly alias for the account | |
bankAccounts[].accountName |
string | Account holder name | |
bankAccounts[].currency |
string | Account currency (ISO 4217) | |
bankAccounts[].iban |
string | International Bank Account Number | |
bankAccounts[].swiftBic |
string | SWIFT/BIC code | |
bankAccounts[].country |
string | ISO 3166-1 alpha-2 country code | |
bankAccounts[].city |
string | Bank branch city | |
bankAccounts[].street |
string | Bank branch street address | |
bankAccounts[].postalCode |
string | Bank branch postal code | |
bankAccounts[].memo |
string | Additional notes | |
bankAccounts[].intermediaryBankCountry |
string | ISO 3166-1 alpha-2 country code of the intermediary bank, where one is used | |
bankAccounts[].intermediaryBankSwiftBic |
string | SWIFT/BIC code of the intermediary bank, where one is used | |
bankAccounts[].enabled |
boolean | Whether account is enabled | |
bankAccounts[].verified |
boolean | Whether account is verified | |
bankAccounts[].networkIds |
array of string | Settlement networks this bank account may be used with | |
bankAccounts[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
bankAccounts[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
wallets |
array of object | Crypto wallet addresses for digital asset settlement | |
wallets[].uuid |
string (uuid) | Unique identifier | |
wallets[].blockchain |
string | Blockchain network (e.g., Ethereum, Polygon, TRON) |
|
wallets[].asset |
string | Digital asset symbol (e.g., USDC, USDT, BTC) |
|
wallets[].walletAddress |
string | Blockchain wallet address | |
wallets[].alias |
string | Friendly alias for the wallet | |
wallets[].type |
string | SELF_HOSTED or CUSTODY |
|
wallets[].memo |
string | Additional notes | |
wallets[].vasp |
string | Virtual Asset Service Provider name (if custody) | |
wallets[].executionProvider |
string | Execution provider name (if applicable) | |
wallets[].default |
boolean | Whether this is the default wallet for the asset | |
wallets[].enabled |
boolean | Whether wallet is enabled for trading | |
wallets[].whitelisted |
boolean | Whether wallet address is whitelisted | |
wallets[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
wallets[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
createdAt |
string (date-time) | Entity creation timestamp (ISO 8601) | |
updatedAt |
string (date-time) | Last update timestamp (ISO 8601) |
Account details — type: INDIVIDUAL
Section titled “Account details — type: INDIVIDUAL”| Field | Type | Required | Description |
|---|---|---|---|
firstname |
string | Given name | |
lastname |
string | Family name | |
dateOfBirth |
string (date) | Date of birth (YYYY-MM-DD) | |
countryOfOrigin |
string | ISO 3166-1 alpha-2 country code of origin | |
nationality |
string | ISO 3166-1 alpha-2 country code of nationality | |
uuid |
string (uuid) | Unique identifier for the Entity | |
type |
string (enum) | Whether this participant is a legal entity or a natural person — One of: ENTITY, INDIVIDUAL | |
kind |
string (enum) | Always ORIGINATOR — One of: ORIGINATOR |
|
enabled |
boolean | Whether Entity is enabled for trading | |
verified |
boolean | Whether Entity has completed verification | |
vasp |
boolean | Virtual Asset Service Provider flag | |
ownershipPercentage |
string | Percentage of the participant owned, for participants held as an ownership interest. Absent when not recorded. | |
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 | |
address |
object | Address details | |
address.street |
string | Street address | |
address.city |
string | City | |
address.stateProvince |
string | State or province | |
address.postalCode |
string | Postal/ZIP code | |
address.country |
string | ISO 3166-1 alpha-2 country code | |
address.createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
address.updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
kycDetails |
object | KYC and compliance information | |
kycDetails.occupation |
string | Occupation or business activity | |
kycDetails.sourceOfFunds |
string | Source of funds description | |
kycDetails.methodOfVerification |
string | Verification method used | |
kycDetails.industryType |
string | Industry classification | |
kycDetails.entityType |
string | Legal entity type | |
kycDetails.natureOfActivity |
string | Nature of business activity | |
kycDetails.beneficiaryOwnership |
boolean | Beneficiary ownership flag | |
kycDetails.createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
kycDetails.updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
identifications |
array of object | Business registration and tax identifications | |
identifications[].type |
string (enum) | Identification type — One of: PASSPORT, NATIONAL_ID, DRIVERS_LICENSE, SSN, TAX_ID, LEI, EIN, VAT_NUMBER, BUSINESS_REGISTRATION, OTHER | |
identifications[].number |
string | Identification number | |
identifications[].typeOther |
string | Custom type (if type is “OTHER”) | |
identifications[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
identifications[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
associatedPersons |
array of object | Associated Person details (e.g. authorized signatory, beneficial owners). enabled, verified and vasp are always null on these entries. |
|
associatedPersons[].uuid |
string (uuid) | Unique identifier for the person | |
associatedPersons[].firstname |
string | Given name | |
associatedPersons[].lastname |
string | Family name | |
associatedPersons[].dateOfBirth |
string (date) | Date of birth (YYYY-MM-DD) | |
associatedPersons[].countryOfOrigin |
string | ISO 3166-1 alpha-2 country code of origin | |
associatedPersons[].nationality |
string | ISO 3166-1 alpha-2 country code of nationality | |
associatedPersons[].type |
string (enum) | Always INDIVIDUAL for an associated person — One of: INDIVIDUAL |
|
associatedPersons[].kind |
string (enum) | Role this person holds in relation to the participant — One of: AUTHORIZED_SIGNATORY, BENEFICIARY_OWNER, INTERMEDIARY_BENEFICIARY_OWNER | |
associatedPersons[].clientShortcode |
string | Your account identifier | |
associatedPersons[].phoneNumber |
string | Contact phone | |
associatedPersons[].website |
string | Website URL | |
associatedPersons[].email |
string | Contact email | |
associatedPersons[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
associatedPersons[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
bankAccounts |
array of object | Bank accounts configured for fiat settlement | |
bankAccounts[].uuid |
string (uuid) | Unique identifier for the bank account | |
bankAccounts[].bankName |
string | Bank institution name | |
bankAccounts[].bankBranchName |
string | Branch name | |
bankAccounts[].accountNumber |
string | Bank account number | |
bankAccounts[].accountAlias |
string | Friendly alias for the account | |
bankAccounts[].accountName |
string | Account holder name | |
bankAccounts[].currency |
string | Account currency (ISO 4217) | |
bankAccounts[].iban |
string | International Bank Account Number | |
bankAccounts[].swiftBic |
string | SWIFT/BIC code | |
bankAccounts[].country |
string | ISO 3166-1 alpha-2 country code | |
bankAccounts[].city |
string | Bank branch city | |
bankAccounts[].street |
string | Bank branch street address | |
bankAccounts[].postalCode |
string | Bank branch postal code | |
bankAccounts[].memo |
string | Additional notes | |
bankAccounts[].intermediaryBankCountry |
string | ISO 3166-1 alpha-2 country code of the intermediary bank, where one is used | |
bankAccounts[].intermediaryBankSwiftBic |
string | SWIFT/BIC code of the intermediary bank, where one is used | |
bankAccounts[].enabled |
boolean | Whether account is enabled | |
bankAccounts[].verified |
boolean | Whether account is verified | |
bankAccounts[].networkIds |
array of string | Settlement networks this bank account may be used with | |
bankAccounts[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
bankAccounts[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
wallets |
array of object | Crypto wallet addresses for digital asset settlement | |
wallets[].uuid |
string (uuid) | Unique identifier | |
wallets[].blockchain |
string | Blockchain network (e.g., Ethereum, Polygon, TRON) |
|
wallets[].asset |
string | Digital asset symbol (e.g., USDC, USDT, BTC) |
|
wallets[].walletAddress |
string | Blockchain wallet address | |
wallets[].alias |
string | Friendly alias for the wallet | |
wallets[].type |
string | SELF_HOSTED or CUSTODY |
|
wallets[].memo |
string | Additional notes | |
wallets[].vasp |
string | Virtual Asset Service Provider name (if custody) | |
wallets[].executionProvider |
string | Execution provider name (if applicable) | |
wallets[].default |
boolean | Whether this is the default wallet for the asset | |
wallets[].enabled |
boolean | Whether wallet is enabled for trading | |
wallets[].whitelisted |
boolean | Whether wallet address is whitelisted | |
wallets[].createdAt |
string (date-time) | Creation timestamp (ISO 8601) | |
wallets[].updatedAt |
string (date-time) | Last update timestamp (ISO 8601) | |
createdAt |
string (date-time) | Entity creation timestamp (ISO 8601) | |
updatedAt |
string (date-time) | Last update timestamp (ISO 8601) |
Error — returned with HTTP 200
Section titled “Error — returned with HTTP 200”| Field | Type | Required | Description |
|---|---|---|---|
timestamp |
string | Unix timestamp of the response (milliseconds). | |
resultCode |
string (enum) | Failure reason. — One of: INVALID_PARAMETERS, UNAUTHORISED |