Skip to main content

Send Your First Request

Your first request reads the balance of one of your accounts. It is read-only, changes nothing, and exercises the complete request-signing flow.

Before you begin​

  • API key and signing credentials

    With the Internal transfers or Partner transfers scope. See API key and host setup.

  • API host

    Provided during onboarding. The path below is relative to that host.

  • Request signing

    Every request carries the signed EXN-* headers described in Request signing. A complete signing helper is available in Code Examples.

  • An account number

    Use one of your wallets (Personal Area → Payments & wallet) or trading accounts on the Exness platform (Personal Area → Trading → Accounts). Partners can use their Reward Wallet number (Partner Personal Area → Wallet accounts). Send the account number as a string, exactly as shown.

Example requests​

GET /v1/accounts/{account_id}/balance

The example below is structural: replace the placeholders in angle brackets with your values. For a runnable implementation, see Read a balance in Code Examples.

GET /v1/accounts/8066808/balance HTTP/1.1
EXN-API-KEY: <your API key>
EXN-IDEMPOTENCY-KEY:
EXN-TIMESTAMP: <current Unix time in milliseconds>
EXN-SIGN-VERSION: 1
EXN-DATA: <base64url-encoded signed payload>
EXN-SIGN: <base64url-encoded signature>
For this GET request
  • EXN-IDEMPOTENCY-KEY is present with an empty value, and the signed idempotency_key field is an empty string.
  • The request has no body, so the signed body_hash is the SHA-256 hash of the empty string: 47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU.
  • The signed path is /v1/accounts/8066808/balance, exactly as sent.

What to expect in return​

HTTP 200 with the account balance:

{
"account_id": "8066808",
"balance": "1000.00",
"currency": "USD"
}

balance is the amount available for transfers from the account, as a non-negative decimal string in the account currency.

A 200 response proves that your API key is active, your key has access to the account, and your request signature is correct. To create transfers and track their status, continue with Create and Track a Transfer.

Troubleshooting common errors​

HTTPcodeerror_messageWhat to do
4011000AUTH_INVALID_API_KEYThe API key is invalid or inactive. Check the EXN-API-KEY header and the signed api_key field.
4011001AUTH_INVALID_SIGNATURERebuild the signed payload: check the method, the signed path, body_hash, the timestamp in milliseconds, and base64url encoding without padding.
4031002AUTH_PERMISSION_DENIEDCheck that your key has a Payments scope and that your source IP is allowed for the key.
4042000ACCOUNT_NOT_FOUNDThe account does not exist or is not available to your API key. Check the account number.
4003000REQUEST_INVALIDThe request structure is invalid. Fix it and send the request again.
4223001REQUEST_INVALID_PARAMETERSThe account number did not pass validation. Send it as a string, exactly as shown in your Personal Area.

For all error codes, see Troubleshooting Your API Requests.

Request signing · Read an account balance · Code Examples