Skip to content

Accounts

The accounts resource is your tenant's directory of brokerage accounts — every investor you have onboarded, addressable as a list and as individual records. An account is the same underlying record as an investor; "account" is the noun most integrations reach for, and the list shape (paginated, status-filtered, broker-attributed) is what a back office actually needs.

The account id is the investor_id. Anywhere an endpoint takes an investor_id (orders, balances, transfers), pass an account id unchanged.

Both endpoints are plain Bearer reads — no signature required.

The account object

FieldTypeNotes
idstringinv_… — the account id (= investor id)
account_numberstringthe account reference at the broker of record
statusstringactive | restricted | closed
currencystringEGP
namestringaccount holder's full name
shariah_onlyboolinvestor-elected shariah screen
suitabilityobject{ tier, recorded, risk_acknowledged }
brokerobject{ id, name, fra_license_no, contact_email, contact_phone }
created_attimestampwhen the account was opened

status meanings:

  • active — fully operational.
  • restricted — may divest existing holdings but cannot open new positions.
  • closed — read-only.

suitability.tier is 0 none · 1 conservative · 2 balanced · 3 growth. recorded is true once the suitability questionnaire is on file; risk_acknowledged once the investor has accepted the risk disclosure. Both are gates that must be satisfied before equity trading (see Onboarding).

GET /v1/accounts

List the accounts under the authenticated tenant, newest first.

QueryNotes
statusfilter by standing: active | restricted | closed
limitpage size, 1–200 (default 100)
bash
curl "https://sandbox.boursa.sh/v1/accounts?status=active&limit=50" \
  -H "Authorization: Bearer $BOURSA_API_KEY"
json
{
  "accounts": [
    {
      "id": "inv_8sKq…",
      "account_number": "ACME-000123",
      "status": "active",
      "currency": "EGP",
      "name": "Mona Saleh",
      "shariah_only": false,
      "suitability": { "tier": 2, "recorded": true, "risk_acknowledged": true },
      "broker": {
        "id": "brk_egx_01",
        "name": "Sandbox Partner Brokerage",
        "fra_license_no": "FRA-SBX-0001",
        "contact_email": "desk@brokerage.eg",
        "contact_phone": "+20…"
      },
      "created_at": "2026-06-01T09:12:44+03:00"
    }
  ]
}

Accounts are scoped to your tenant — the list never includes another tenant's accounts.

GET /v1/accounts/{id}

A single account by id. Returns the same object as above (not wrapped in an array). 404 NOT_FOUND if the id is unknown or belongs to another tenant.

bash
curl https://sandbox.boursa.sh/v1/accounts/inv_8sKq… \
  -H "Authorization: Bearer $BOURSA_API_KEY"
  • Investors — the per-account identity profile plus its sub-resources (balances, activities, suitability).
  • Onboarding — how an account comes into existence (KYC → broker approval).
  • Portfolio & positions — holdings and analytics for an account.

Embedded investing infrastructure for the Egyptian Exchange. Sandbox runs on simulated money.