eToro Cash Accounts API
The Cash Accounts API from eToro — 5 operation(s) for cash accounts.
The Cash Accounts API from eToro — 5 operation(s) for cash accounts.
openapi: 3.0.1
info:
title: Deprecated eToro Public API operations Agent Portfolios Cash Accounts API
version: v1.158.0
description: Snapshot of API operations that existed in the previous docs OpenAPI file and are no longer present in the current upstream Swagger.
tags:
- name: Cash Accounts
paths:
/api/v1/money/accounts/cash:
post:
tags:
- Cash Accounts
summary: Create a cash account
description: Initiates the creation of a cash account. The user must be eligible (IbanEligible or CardAndIbanEligible). Returns 202 Accepted with a requestReferenceId for polling status.
operationId: createCashAccount
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCashAccountRequest'
example:
requestReferenceId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
tncDocId: 42
responses:
'202':
description: Request accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCashAccountAcceptedResponse'
example:
requestReferenceId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
eligibilityStatus: CardAndIbanEligible
status: Accepted
'401':
description: Unauthorized
'409':
description: Duplicate requestReferenceId
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: DuplicateRequestReferenceId
errorMessage: A request with this requestReferenceId already exists
'422':
description: User not eligible for cash account creation
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessErrorResponse'
example:
errorCode: NotEligibleForCashAccountCreation
errorMessage: User is not eligible to create a cash account
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
parameters:
- name: x-request-id
in: header
required: true
schema:
type: string
format: uuid
example: bbb35ad7-fefa-4820-a92f-608ed1978f53
description: A unique request identifier.
- name: x-api-key
in: header
required: true
schema:
type: string
format: password
example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
description: API key for authentication.
- name: x-user-key
in: header
required: true
schema:
type: string
format: password
example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
description: User-specific authentication key.
get:
tags:
- Cash Accounts
summary: Get user cash accounts
description: Returns the eligibility of a user to create a cash account, and lists the existing cash accounts including the related bank account details and the cards related to each account. The user is identified from the OAuth token.
operationId: getCashAccounts
parameters:
- name: x-request-id
in: header
required: true
schema:
type: string
format: uuid
example: 6a6ce5b2-e1ee-4c9a-ac8c-f2cdc7d27fb6
description: A unique request identifier.
- name: x-api-key
in: header
required: true
schema:
type: string
format: password
example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
description: API key for authentication.
- name: x-user-key
in: header
required: true
schema:
type: string
format: password
example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
description: User-specific authentication key.
responses:
'200':
description: Successfully retrieved cash accounts
content:
application/json:
schema:
$ref: '#/components/schemas/CashAccountsResponse'
example:
accounts:
- id: f0995efc-25a1-465e-bec3-d309aaf00ede
currency: GBP
status: Active
bankAccount:
id: 0f5270fe-200a-4c35-b788-bda212973fa2
accountName: John Doe
identifiers:
- type: bankAccountNumber
value: '11549380'
- type: ncc
value: '041335'
- type: iban
value: GB08MRMI04133511549380
- type: bic
value: MRMIGB22XXX
region: UK
countryCode: GB
bankProvider: ClearBank
institutionName: ClearBank
cards:
- id: 7f446164-57d8-4b87-9f0f-958083c7f459
status: Activated
maskedPan: 459688******0196
isVirtual: false
name: John Doe
created: '2026-04-27T12:40:55.7766667'
expirationDate: '2029-04-30T23:59:59'
eligibilityStatus: CardAndIbanEligible
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: Unauthorized
errorMessage: Unauthorized
'403':
description: Forbidden - Insufficient permissions
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: TooManyRequests
errorMessage: Too many requests
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: GeneralError
errorMessage: Internal server error. Please retry or contact support
/api/v1/money/accounts/cash/eligibility:
get:
tags:
- Cash Accounts
summary: Get cash account creation eligibility
description: Returns the user's eligibility to create a cash account, along with prerequisites (T&C), contact info, and basic user info needed for account creation.
operationId: getCashAccountEligibility
parameters:
- name: x-request-id
in: header
required: true
schema:
type: string
format: uuid
example: 17c0c69b-4ea3-45d8-b629-0f293cf6117b
description: A unique request identifier.
- name: x-api-key
in: header
required: true
schema:
type: string
format: password
example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
description: API key for authentication.
- name: x-user-key
in: header
required: true
schema:
type: string
format: password
example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
description: User-specific authentication key.
responses:
'200':
description: Eligibility details
content:
application/json:
schema:
$ref: '#/components/schemas/CashAccountEligibilityResponse'
example:
eligibilityStatus: CardAndIbanEligible
ineligibilityReasons: []
prerequisite:
tncInfo:
tncDocId: 42
url: https://example.com/tnc
contactInfo:
address: 10 High Street
buildingNumber: '10'
city: London
zipCode: EC1A 1BB
country: GB
phone: '+441234567890'
userInfo:
firstName: John
middleName: null
lastName: Doe
'401':
description: Unauthorized
'403':
description: Forbidden - Insufficient permissions
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
/api/v1/money/accounts/cash/status:
get:
tags:
- Cash Accounts
summary: Get cash account creation status
description: Polls the creation status of a previously submitted cash account creation request. Returns the account details when status is Success.
operationId: getCashAccountCreationStatus
parameters:
- name: x-request-id
in: header
required: true
schema:
type: string
format: uuid
example: 40185c00-42db-4206-ae6d-c37f78242601
description: A unique request identifier.
- name: x-api-key
in: header
required: true
schema:
type: string
format: password
example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
description: API key for authentication.
- name: x-user-key
in: header
required: true
schema:
type: string
format: password
example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
description: User-specific authentication key.
- name: requestReferenceId
in: query
required: true
schema:
type: string
format: uuid
description: The requestReferenceId returned from the POST create endpoint.
responses:
'200':
description: Creation status
content:
application/json:
schema:
$ref: '#/components/schemas/CashAccountCreationStatusResponse'
example:
requestReferenceId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: Pending
updatedAt: '2026-05-13T10:00:00Z'
account: null
'400':
description: Bad Request - missing requestReferenceId
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
'401':
description: Unauthorized
'404':
description: Creation request not found
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
/api/v1/money/accounts/cash/{accountId}:
get:
tags:
- Cash Accounts
summary: Get cash account by id
description: Returns a single cash account. The response body is identical in shape to one element of `accounts` from GET /api/v1/money/accounts/cash (CashAccount). Path accountId must match CashAccount.id for that element.
operationId: getCashAccountById
parameters:
- name: x-request-id
in: header
required: true
schema:
type: string
format: uuid
example: 4f9b4d15-2f36-4b68-86bb-fb7f66248001
description: A unique request identifier.
- name: x-api-key
in: header
required: true
schema:
type: string
format: password
example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
description: API key for authentication.
- name: x-user-key
in: header
required: true
schema:
type: string
format: password
example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
description: User-specific authentication key.
- name: accountId
in: path
required: true
schema:
type: string
format: uuid
description: Must equal CashAccount.id from the list endpoint.
responses:
'200':
description: One cash account (same schema as list item)
content:
application/json:
schema:
$ref: '#/components/schemas/CashAccount'
example:
id: f0995efc-25a1-465e-bec3-d309aaf00ede
currency: GBP
status: Active
bankAccount:
id: 0f5270fe-200a-4c35-b788-bda212973fa2
accountName: John Doe
identifiers:
- type: bankAccountNumber
value: '11549380'
- type: ncc
value: '041335'
- type: iban
value: GB08MRMI04133511549380
- type: bic
value: MRMIGB22XXX
region: UK
countryCode: GB
bankProvider: ClearBank
institutionName: ClearBank
cards:
- id: 7f446164-57d8-4b87-9f0f-958083c7f459
status: Activated
maskedPan: 459688******0196
isVirtual: false
name: John Doe
created: '2026-04-27T12:40:55.7766667'
expirationDate: '2029-04-30T23:59:59'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: Unauthorized
errorMessage: Unauthorized
'403':
description: Forbidden - Insufficient permissions
'404':
description: Account not found or not owned by the user
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: AccountNotFound
errorMessage: Account not found
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: TooManyRequests
errorMessage: Too many requests
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
example:
errorCode: GeneralError
errorMessage: Internal server error. Please retry or contact support
/api/v1/money/accounts/cash/{accountId}/transactions:
get:
tags:
- Cash Accounts
summary: List cash account transactions (paginated)
description: Returns a cursor-paginated list of transactions for the given cash account. Use pageSize and pageToken for pagination; nextPageToken is null when there is no next page.
operationId: listCashAccountTransactions
parameters:
- name: x-request-id
in: header
required: true
schema:
type: string
format: uuid
example: 06118bb9-9ae8-436f-b7fe-8ad7e1b68848
description: A unique request identifier.
- name: x-api-key
in: header
required: true
schema:
type: string
format: password
example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
description: API key for authentication.
- name: x-user-key
in: header
required: true
schema:
type: string
format: password
example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
description: User-specific authentication key.
- name: accountId
in: path
required: true
schema:
type: string
format: uuid
description: Cash account identifier (must equal CashAccount.id).
- name: pageSize
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 500
default: 50
description: Page size (default 50, max 500).
- name: pageToken
in: query
required: false
schema:
type: string
description: Opaque pagination cursor from pagination.nextPageToken of the previous response.
responses:
'200':
description: Successful response with transaction results and pagination metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/CashAccountTransactionsResponse'
example:
results:
- id: '12345'
accountId: f0995efc-25a1-465e-bec3-d309aaf00ede
transactionType: card
transactionSubtype: cardPayment
direction: debit
status: settled
amount: '100.00'
currency: USD
originalAmount: '90.00'
originalCurrency: EUR
conversionRate: '1.1111'
postedAt: '2026-05-03T10:16:12Z'
counterparty:
name: Acme Store
type: merchant
cardTransactionDetails:
cardId: '101'
merchantName: Acme Store
country: US
authorizationStatus: normal
bankTransferTransactionDetails: null
internalTransferTransactionDetails: null
pagination:
pageSize: 50
nextPageToken: eyJsYXN0SWQiOjEyMzk1fQ==
hasNext: true
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
'404':
description: Account not found
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/PublicErrorResponse'
components:
schemas:
InternalTransferDetails:
type: object
required:
- transferId
properties:
transferId:
type: string
CreateCashAccountRequest:
type: object
required:
- requestReferenceId
- tncDocId
properties:
requestReferenceId:
type: string
format: uuid
description: Client-generated idempotency key
tncDocId:
type: integer
format: int64
description: Terms and conditions document ID accepted by the user
CashAccountPrerequisite:
type: object
properties:
tncInfo:
$ref: '#/components/schemas/TncInfo'
PaginationCursor:
type: object
required:
- pageSize
- hasNext
properties:
pageSize:
type: integer
nextPageToken:
type: string
nullable: true
hasNext:
type: boolean
CashAccountUserInfo:
type: object
properties:
firstName:
type: string
middleName:
type: string
nullable: true
lastName:
type: string
CashAccountEligibilityResponse:
type: object
required:
- eligibilityStatus
properties:
eligibilityStatus:
type: string
enum:
- Ineligible
- CardAndIbanEligible
- IbanEligible
ineligibilityReasons:
type: array
items:
type: string
nullable: true
prerequisite:
$ref: '#/components/schemas/CashAccountPrerequisite'
nullable: true
contactInfo:
$ref: '#/components/schemas/CashAccountContactInfo'
nullable: true
userInfo:
$ref: '#/components/schemas/CashAccountUserInfo'
nullable: true
PublicErrorResponse:
type: object
description: Error response with code and message.
required:
- errorCode
- errorMessage
properties:
errorCode:
type: string
description: Machine-readable error code.
example: GeneralError
errorMessage:
type: string
description: Human-readable error message.
example: Internal server error. Please retry or contact support
CashAccount:
type: object
description: A single cash account with bank details and cards (account type is implied by the cash-accounts API surface)
required:
- id
- currency
properties:
id:
type: string
format: uuid
description: Unique identifier of the cash account
example: b2c3d4e5-f6a7-8901-bcde-f12345678901
currency:
type: string
description: ISO 4217 currency code (e.g. GBP, EUR, AUD, DKK)
example: GBP
status:
type: string
description: Cash account status
enum:
- Active
- ReceiveOnly
- SpendOnly
- Suspended
- Blocked
example: Active
bankAccount:
$ref: '#/components/schemas/BankAccount'
description: Bank account linked to this cash account
cards:
type: array
description: Payment cards linked to this cash account
items:
$ref: '#/components/schemas/Card'
BankTransferDetails:
type: object
properties:
bankIdentifier:
type: array
items:
$ref: '#/components/schemas/BankIdentifierEntry'
description:
type: string
paymentReference:
type: string
CashAccountTransaction:
type: object
required:
- id
- accountId
- transactionType
- transactionSubtype
- direction
- status
- amount
- currency
- postedAt
properties:
id:
type: string
accountId:
type: string
transactionType:
type: string
enum:
- card
- internalTransfer
- bankTransfer
- balanceAdjustment
transactionSubtype:
type: string
enum:
- unknown
- cardPayment
- contactless
- onlinePayment
- cashWithdrawal
- transferReceived
- transfer
- paymentReceived
- payment
- refund
- fee
- creditBalanceAdjustment
- debitBalanceAdjustment
- directDebit
- cryptoToFiat
direction:
type: string
enum:
- debit
- credit
status:
type: string
enum:
- failed
- authorized
- settled
- rejected
- returned
- expired
- unknown
amount:
type: string
description: Decimal amount as string
currency:
type: string
description: ISO 4217 alphabetic currency code
originalAmount:
type: string
nullable: true
originalCurrency:
type: string
nullable: true
conversionRate:
type: string
nullable: true
postedAt:
type: string
format: date-time
counterparty:
$ref: '#/components/schemas/Counterparty'
cardTransactionDetails:
$ref: '#/components/schemas/CardTransactionDetails'
nullable: true
bankTransferTransactionDetails:
$ref: '#/components/schemas/BankTransferDetails'
nullable: true
internalTransferTransactionDetails:
$ref: '#/components/schemas/InternalTransferDetails'
nullable: true
CashAccountContactInfo:
type: object
properties:
address:
type: string
buildingNumber:
type: string
city:
type: string
zipCode:
type: string
country:
type: string
phone:
type: string
BankAccount:
type: object
description: Bank account linked to the cash account
properties:
id:
type: string
format: uuid
description: Unique identifier of the bank account
example: 0f5270fe-200a-4c35-b788-bda212973fa2
accountName:
type: string
description: Name on the bank account
example: John Doe
identifiers:
type: array
description: List of bank identifiers represented as key/value entries. Identifier type availability is bank and country specific.
items:
$ref: '#/components/schemas/BankAccountIdentifier'
region:
type: string
description: Region of the bank account
example: UK
countryCode:
type: string
description: ISO 3166-1 alpha-2 country code
example: GB
bankProvider:
type: string
description: Banking provider name
example: ClearBank
institutionName:
type: string
description: Name of the banking institution
example: ClearBank
BusinessErrorResponse:
type: object
required:
- errorCode
- errorMessage
properties:
errorCode:
type: string
errorMessage:
type: string
BankIdentifierEntry:
type: object
required:
- name
- value
properties:
name:
type: string
value:
type: string
BankAccountIdentifier:
type: object
required:
- type
- value
description: One bank identifier entry as key/value pair. `type` defines the identifier kind and `value` contains the identifier as a string.
properties:
type:
type: string
description: Identifier type key. Allowed examples include bankAccountNumber, ncc, iban, bic, sortCode, and bsbCode.
example: iban
value:
type: string
description: Identifier value as returned by the bank.
example: GB08MRMI04133511549380
Counterparty:
type: object
properties:
name:
type: string
type:
type: string
enum:
- merchant
- bank_account
- internal_account
- unknown
CashAccountTransactionsResponse:
type: object
required:
- results
- pagination
properties:
results:
type: array
items:
$ref: '#/components/schemas/CashAccountTransaction'
pagination:
$ref: '#/components/schemas/PaginationCursor'
CashAccountsResponse:
type: object
description: Response containing the user's cash accounts and creation eligibility status
required:
- accounts
- eligibilityStatus
properties:
accounts:
type: array
description: List of cash accounts
items:
$ref: '#/components/schemas/CashAccount'
eligibilityStatus:
type: string
description: User's creation eligibility status for cash accounts
enum:
- Ineligible
- CardAndIbanEligible
- IbanEligible
example: CardAndIbanEligible
CashAccountCreationStatusResponse:
type: object
required:
- requestReferenceId
- status
properties:
requestReferenceId:
type: string
format: uuid
status:
type: string
enum:
- Pending
- Success
- Failure
updatedAt:
type: string
format: date-time
nullable: true
account:
$ref: '#/components/schemas/CashAccount'
nullable: true
description: Present only when status is Success
CreateCashAccountAcceptedResponse:
type: object
required:
- requestReferenceId
- eligibilityStatus
- status
properties:
requestReferenceId:
type: string
format: uuid
eligibilityStatus:
type: string
status:
type: string
example: Accepted
TncInfo:
type: object
description: Terms and conditions the client must show and the user must accept before withdrawal.
required:
- tncDocId
- url
properties:
tncDocId:
type: integer
format: int64
description: Identifier to send back on withdrawal creation.
example: 12345
url:
type: string
description: Link the client displays to user (webview/browser).
example: https://example.com/tnc/withdraw-crypto-from-trading
CardTransactionDetails:
type: object
properties:
cardId:
type: string
merchantName:
type: string
country:
type: string
authorizationStatus:
type: string
enum:
- unknown
- normal
- preAuthorize
- finalAuthorize
- incremental
- instalment
- preferredCustomer
- recurring
- delayedCharges
- noShow
- authorizeAdvice
- refund
- reversal
- sysReversal
- accountFunding
Card:
type: object
description: Payment card linked to the cash account
required:
- id
- status
properties:
id:
type: string
format: uuid
description: Unique identifier of the card
example: c3d4e5f6-a7b8-9012-cdef-123456789012
status:
type: string
description: Current card status
enum:
- NotActivated
- Activated
- Blocked
- Suspended
- Risk
- Stolen
- Lost
- Expired
- Fraud
example: Activated
maskedPan:
type: string
description: Masked card number
example: 459688******0196
isVirtual:
type: boolean
description: Whether this is a virtual card
example: false
name:
type: string
description: Card display name
example: John Doe
created:
type: string
format: date-time
description
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/etoro/refs/heads/main/openapi/etoro-cash-accounts-api-openapi.yml