Skip to main content
invest
Investments

Investment Asset Report 3.3.1

  • Live

Retrieve your client's investment positions, investment transactions, cash account balances, and cash transactions.

Tutorial

How the Investment Asset Report API Works

  1. Request an access token using OAuth 2.0 client credentials. The authentication inputs depend on whether you access the Sandbox or Production environment.

Note: Please include the required scopes for the endpoints you wish to access in your authorization request. They are detailed in the OAuth 2.0 Scopes.

  1. Retrieve client details using the /clients endpoint.
  2. Retrieve asset reports for a client, including securities accounts, cash accounts, or transaction data for a specified date or date range.

Requirements

To use this API in a production environment, you must have the following:

    • A Organisation Validation (OV) or Extended Validation (EV) TLS/SSL certificate from ABN AMRO, Digicert, QuoVadis, Sectigo or Entrust with ClientAuthentication EKU, without wildcard options.

Note: We have been made aware that Sectigo stopped issuing TLS/SSL certificates with ClientAuthentication EKU in October 2025.

Note: Since the second half of May 2026, ABN AMRO can issue Client Authorization certificates on request. We only allow these certificates to be used to connect to this API. No other use case is allowed.

  • The organization name issued on the certificate must correspond with the name of the API contract holder.

Available Endpoints

  • getClients: Retrieve client information (GET /clients)
  • getCashBalances: Get cash account balances (GET /clients/{clientId}/cash-balances)
  • getCashTransactions: Get cash account transactions (GET /clients/{clientId}/cash-transactions)
  • getInvestmentPositions: Get investment positions (GET /clients/{clientId}/investment-positions)
  • getInvestmentTransactions: Get investment transactions (GET /clients/{clientId}/investment-transactions)

OAuth 2.0 Scopes

Each endpoint requires a specific OAuth 2.0 scope:

Scope (use this in your authorization request) Endpoint Description
investments:clients:read GET /clients Access client information and account details
investments:cash-account:read GET /clients/{clientId}/cash-balances Access cash account balances
investments:cash-transactions:read GET /clients/{clientId}/cash-transactions Access cash transaction history
investments:securities-account:read GET /clients/{clientId}/investment-positions Access investment positions and holdings
investments:securities-transactions:read GET /clients/{clientId}/investment-transactions Access investment transaction history

Request tokens with only the scopes needed for your use case to follow the principle of least privilege.

Further details are available in the How to use this API process.

Authentication & Authorization

This API uses OAuth 2.0 for authentication and authorization.

First, you must authenticate to the appropriate environment (Sandbox or Production) to receive an access token. Please include all the scopes you wish to query in your access token request.

After receiving your access token, you can send requests to the API.

All requests must include:

  • A valid JWT access token obtained from the OAuth 2.0 token endpoint in the Authorization header.
  • The appropriate scope for the endpoint being accessed.
  • Your Production API-Key in the request headers.

Requesting Sandbox Access

The Sandbox and Production environments are functionally identical. The Sandbox is static, which means that you can perform all operations to retrieve investments asset report details in a safe environment.

Please note that the Sandbox environment contains a limited set of test data, that will be expanded during Q1 and Q2 2026.

To use the Investment Asset Report API in a Sandbox environment, you first need to contact the support team. Your ABN AMRO account manager will be able to guide you.

In order to be onboarded onto this API, you'll need to create a Developer Account. To do this, please follow the following steps:

  1. Register and create an account on ABN AMRO Developer Portal:
    1. Click Sign up.
    2. Enter your details, and click Create new account.
    3. Developer Support will send you an activation link by email.
    4. Click the activation link.
  2. Create and register application:
    1. Log in to your account.
    2. In the left-side navigation click Apps.
    3. Click Add app.
    4. In the App name field, enter a name for your application.
    5. In the APIs field, select Investment Asset Report, and click Add app.

After completing the sign-up process above, please provide the following details to your ABN AMRO account manager and the support team:

  1. E-mail address used to create the Developer Portal account.
  2. Team e-mail address.
  3. App Name, as used in the Developer Portal to sign up to this API.

ABN AMRO will generally need 1-3 working days to finish the onboarding process for you. You will be notified once you can access the Sandbox environment.

Sandbox Access Details

Requesting Production Access

To access the Production environment, you'll need to work with the support team. Please contact your ABN AMRO account manager for details. Onboarding onto Production may generally take up to one week. We strongly recommend a test period of at least one month before using this API in a live environment.

Follow the steps below to use this API in a Production environment.

To get access to Production:

  1. Log in to Investment Asset Report (https://developer.abnamro.com/).
  2. Go to the Production Access Request form.
  3. Select the Investment Asset Report API.

    Note: If you request access to other investment APIs besides this one at the same time, please inform the support team to prevent delayed processing.

  4. Fill in the form, and click Submit.
  5. You'll receive a confirmation email and ticket Id.
  6. ABN AMRO Developer Support validates the form.
  7. When the form is validated and the setup is complete, your ABN AMRO account manager or the support team will contact you.
  8. A new app is added in Apps. This new app contains your API key for the Production environment. Please note that this API key will differ from the Sandbox API key.

The lead time of this process is generally 3-5 working days.

Production Access Details

How to use this API

This instruction describes how to connect an application to the Investment Asset Report API.

Please note that there are differences in authentication between the Sandbox and Production environment. These differences are clearly noted in this instruction.

Note: Before you start this process, you must complete the steps described in Requesting Sandbox Access to be able to access the Sandbox environment. For Production, you'll need to have completed the Requesting Production Access steps.

Step 1 - Request an access token

In this step, the OAuth 2.0 client credentials flow is used to obtain access to the Investment Asset Report API. In the Sandbox environment, you only need to provide a client_id (AMRI ID) and client_secret for authentication. Please note that in the Production environment, you need to provide your public and private key as well as your client_id (AMRI ID) to authenticate. In both environments, please use the bearer token provided during authentication as well as your API-Key when calling endpoints for data.

Sample request for Sandbox

Request an access token using the following sample:

    curl -X POST "https://auth-sandbox.abnamro.com/as/token.oauth2" \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -d 'grant_type=client_credentials&client_id=AMRI_1234567890&client_secret=YourClientSecretHere&scope=investments:clients:read investments:securities-account:read'

Note: You can request multiple scopes in a single token by space-separating them.

Sample request for Production

Request an access token with the appropriate scope:

    curl -X POST "https://auth-mtls.abnamro.com/as/token.oauth2" \
      --key PrivateKeyCommercial.key \
      -u 'AMRI_1234567890:YourClientSecretHere' \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -d 'grant_type=client_credentials&client_id=AMRI_1234567890&scope=investments:clients:read investments:securities-account:read'

Note: You can request multiple scopes in a single token by space-separating them.

Sample Response

    {
      "token_type": "Bearer",
      "access_token": "X1PTWZre0fnW72l263yrhAWB2FDwx3tg",
      "expires_in": 7199
    }
  1. Call the endpoints with the access token and required headers:
  • Authorization: Bearer {access_token}
  • API-Key: Your API Key

Endpoint Examples

/clients

Required Scope: investments:clients:read

Request:

    curl -X GET "https://api-sandbox.abnamro.com/consumer-investments/investment-asset-report/v3/clients" \
      -H 'Authorization: Bearer X1PTWZre0fnW72l263yrhAWB2FDwx3tg' \
      -H 'API-Key: YourApiKeyHere'

Response:

    {
      "clients": [
        {
          "clientId": "123e4567-e89b-12d3-a456-426614174000",
          "clientName": "John Doe",
          "accounts": [
            {
              "accountNumber": "0123456789",
              "productName": "Maatwerk Beleggen",
              "type": "Investment"
            }
          ]
        }
      ]
    }

/clients/{clientId}/cash-balances

Required Scope: investments:cash-account:read

Request:

    curl -X GET "https://api-sandbox.abnamro.com/consumer-investments/investment-asset-report/v3/clients/123e4567-e89b-12d3-a456-426614174000/cash-balances?date=2024-04-24" \
      -H 'Authorization: Bearer X1PTWZre0fnW72l263yrhAWB2FDwx3tg' \
      -H 'API-Key: YourApiKeyHere'

Response:

    {
      "cashBalances": [
        {
          "reportDate": "2024-04-24",
          "cashAccountNumber": "412833824",
          "balanceAmount": 1234.57,
          "currencyCode": "EUR",
          "creditDebitIndicator": "DEBIT"
        }
      ]
    }

/clients/{clientId}/cash-transactions

Required Scope: investments:cash-transactions:read

Request:

    curl -X GET "https://api-sandbox.abnamro.com/consumer-investments/investment-asset-report/v3/clients/123e4567-e89b-12d3-a456-426614174000/cash-transactions?date=2024-04-24" \
      -H 'Authorization: Bearer X1PTWZre0fnW72l263yrhAWB2FDwx3tg' \
      -H 'API-Key: YourApiKeyHere'

Response:

    {
      "cashTransactions": [
        {
          "reportDate": "2024-04-24",
          "cashAccountNumber": "412833824",
          "transactionKey": "5UZ3JCMTM",
          "transactionDateTime": "2024-04-24T12:00:00.000Z",
          "bookDate": "2024-04-24",
          "transactionAmount": 50.11,
          "creditDebitIndicator": "DEBIT",
          "currencyCode": "EUR",
          "balanceAfterTransaction": 93769.11,
          "balanceCreditDebitIndicator": "DEBIT",
          "valueDate": "2024-04-24",
          "counterpartyName": "ING AMSTERDAM",
          "counterpartyAccountNumber": "0506417344",
          "description": "Generic description example"
        }
      ]
    }

/clients/{clientId}/investment-positions

Required Scope: investments:securities-account:read

Request:

    curl -X GET "https://api-sandbox.abnamro.com/consumer-investments/investment-asset-report/v3/clients/123e4567-e89b-12d3-a456-426614174000/investment-positions?date=2024-04-24" \
      -H 'Authorization: Bearer X1PTWZre0fnW72l263yrhAWB2FDwx3tg' \
      -H 'API-Key: YourApiKeyHere'

Response:

    {
      "investmentPositions": [
        {
          "reportDate": "2024-04-24",
          "code": "009080",
          "securitiesAccountNumber": "412833824",
          "ISIN": "NL0000009082",
          "nameNL": "AAND KON KPN @ EUR 0.04",
          "quantity": 1.00
        }
      ]
    }

/clients/{clientId}/investment-transactions

Required Scope: investments:securities-transactions:read

Request:

    curl -X GET "https://api-sandbox.abnamro.com/consumer-investments/investment-asset-report/v3/clients/123e4567-e89b-12d3-a456-426614174000/investment-transactions?date=2024-04-24" \
      -H 'Authorization: Bearer X1PTWZre0fnW72l263yrhAWB2FDwx3tg' \
      -H 'API-Key: YourApiKeyHere'

Response:

    {
      "investmentTransactions": [
        {
          "reportDate": "2024-04-24",
          "transactionTypeId": 1010103,
          "transactionTypeIdDescription": "Sell stock exchange",
          "transactionDate": "2024-04-24", 
          "transactionNumber": "469976",
          "transactionKey": "5UZ3JCMTM",
          "currencyCode": "USD",
          "orderStream": "DOMESTIC_CLASSICAL",
          "DRIPExecutionPrice": 0.00,
          "executionDate": "2024-04-24",
          "orderQuantity": 12.0,
          "instrument": {
            "code": "009080",
            "ISIN": "NL0000009082",
            "nameNL": "AAND KON KPN @ EUR 0.04",
            "shortNameNL": "KPN KON",
            "type": "OPTION",
            "marketIdentifierCode": "XAMS",
            "exchangeCode": "ENA",
            "unitOfAdministration": "CURRENCY",
            "quote": {
              "value": 16.98,
              "securityBidOrAskSpread": -19.16,
              "securitySwingPrice": 0,
              "updateDate": "2015-05-28",
              "type": "MONEY"
            },
            "option": {
              "rootSymbol": "AGN",
              "contractSize": 100.12345,
              "type": "CALL",
              "expirationDate": "2022-12-16",
              "strikePrice": 4.1234,
              "strikePriceCurrency": "EUR",
              "dateOfRegistration": "2021-05-10"
            }
          },
          "settlement": {
            "securitiesAccountNumber": "412833824",
            "accruedInterest": 0,
            "commission": 0,
            "commissionDiscount": 0,
            "stampDuty": 0,
            "financialTransactionTax": 0,
            "withholdingTax": -313.42,
            "additionalAmericanIncomeTax": 15,
            "costs": -1969.56,
            "costsDiscount": 0,
            "fundFee": 0,
            "conversionFee": 2089.47,
            "conversionRefund": 2089.4,
            "emissionPayment": 0,
            "correspondentDiscount": 0,
            "securityCurrToSettlementCurrExchangeRate": 1,
            "currencyCosts": -134.61,
            "DRIPCosts": 0,
            "netAmount": 1776.05,
            "debitCreditIndicator": "CREDIT",
            "settlementDate": "2021-05-10",
            "currencyCode": "EUR"
          }
        }
      ]
    }

TelephoneNeed help?

Check the frequently asked questions or contact us. We are happy to help.
 

Get support Learn the basics