Behind the SMS-and-Face-ID login on Tradernet.KZ sits one Freedom Finance JSC brokerage account, with portfolio, order history, transaction confirmations, non-trading orders and KASE/AIX quote data only reachable once the holder signs in. That holder-signed-in space is the data we'd integrate. The app is consumer-facing on the surface — open a brokerage account, view the book, place buy/sell — and exchange-facing underneath, talking to two Kazakh venues from a single account. Most of the work in an integration is bridging those two facts: one consent, two settlement worlds.
Where the data sits
Six categories of data live inside an authenticated Tradernet.KZ session. They map back to specific screens in the app, and each one drives a different downstream job for an integrator.
| Data domain | Where it shows in the app | Granularity | What an integrator does with it |
|---|---|---|---|
| Portfolio holdings | Portfolio screen | Per-position, current market value, near real-time during sessions | Reconcile end-of-day positions, flag drift against custodial records |
| Trading orders & status | Orders / order history | Per-order line item with state transitions | Mirror into a trade blotter and compliance log |
| Transactions per order | Order detail | Executed lots, fills, fees | Settle, recompute average cost, feed the back office |
| Non-trading orders | Non-trading orders screen | Withdrawals, profile updates, per-event with status | Push into the firm's workflow / operations queue |
| Real-time quotes | Securities / instrument screens | Tick level on live accounts; delayed on demo, per the app's own note | Drive pre-trade checks and price alerts; cache deltas for charting |
| Identity / confirmation events | SMS OTP and biometric prompts | Per-event timestamp, channel, outcome | Audit trail; reconcile any disputed trade against the actual confirmation |
Authorized routes to the broker account
Three routes are on the table for this app. We'd recommend the first; the others fit specific situations.
- Authorized interface integration on the holder's session. The account holder authorizes the build under NDA. The studio operates against the same flows the holder uses — login, OTP/biometric confirmation, portfolio fetch, order placement, history — and packages those flows behind a clean Python or Node client. Reachable: every screen above. Effort: a 1–2 week cycle for the read side, longer if order placement is in scope. Durability: high if a small re-check probe is part of the handover.
- User-consented credential pass-through. For a downstream platform that aggregates several brokers, the end user lends their credentials through a vault the holder controls, and the integration runs per-user. Useful when the buyer's product is a multi-broker dashboard rather than a single-firm back office.
- Broker statement export (fallback for batch). The account holder can pull a broker report directly out of the app's surfaces. For nightly reconciliation only, this is the lightest path; we wire the parser and a small scheduler around it. Anything intraday needs route 1.
In practice, route 1 covers what most buyers actually need from this app, and the other two slot in around it.
What ships at the end
The deliverable is concrete: source code the buyer keeps, plus the documents around it. For Tradernet.KZ that means:
- An OpenAPI 3 spec covering the surfaces we wrap — login, portfolio, orders, transactions, non-trading orders, quote snapshots — so the buyer's other systems can be generated against it.
- An auth-flow report walking through the session, the SMS OTP step, and the Face ID / Touch ID confirmation prompts — what the request shape is, what the studio expects back, and where the session can time out.
- Runnable Python and Node clients for the read side, plus order placement if it is in scope, each with a small CLI for sanity checks.
- A pytest (or vitest) suite that runs against a Freedom Finance demo first and the holder's account second, with fixtures recorded so the suite stays green offline.
- Interface documentation: which exchange a field originates from, which screen, what changes on a quote tick, what changes on an order status transition.
- Data-retention and consent notes shaped for Kazakhstan — what to log, what not to log, how long to hold a confirmation record.
A sample call against the broker session
This is illustrative — field names and the precise auth handshake get confirmed during the build against the holder's account. The shape is what matters: one session, two exchanges, one normalized position model.
# illustrative — confirmed against the live build
from tnkz_client import BrokerSession
session = BrokerSession(env="demo") # demo account from Freedom Finance JSC
session.login(phone="+7…", otp=otp_via_sms)
session.confirm_biometric() # routes to the holder's device
# Portfolio — KASE + AIX positions in one list, tagged by exchange
for pos in session.portfolio():
print(pos.ticker, pos.exchange, pos.qty, pos.market_value, pos.ccy)
# Order history with status transitions
for order in session.orders(status="all", date_from="2026-05-01"):
print(order.id, order.ticker, order.side, order.qty, order.state, order.exchange)
for fill in order.fills:
print(" fill", fill.qty, fill.price, fill.fee)
# Non-trading orders — withdrawals, profile updates
for nto in session.non_trading_orders():
print(nto.kind, nto.state, nto.created_at)
Working under ARDFM and AFSA rules
Freedom Finance JSC is the Kazakh broker entity behind this app; it operates under the Agency for Regulation and Development of Financial Market of the Republic of Kazakhstan (ARDFM). A sibling entity, Freedom Finance Global PLC, operates inside the Astana International Financial Centre and is licensed by AFSA (the Astana Financial Services Authority) — both jurisdictions touch this app's data depending on which venue a trade lands on. Kazakhstan does not currently run a PSD2-style mandated open-banking regime; the dependable legal basis on the table today is the account holder's own documented consent.
The broader regulatory direction is moving fast. Parliament adopted a new Law on Banks and Banking Activities on 25 December 2025 (per the Baker McKenzie write-up cited below), and AFSA's Providing Money Services framework has been phasing in through late 2025 and into 2026. Forward-looking context, not the integration's basis. The integration runs on the holder's consent — logged, time-stamped, and with data minimization built into what the client stores. The studio operates under NDA. Records are retained only as long as the buyer's own policy requires.
Things we account for during the build
Tradernet.KZ has a few specific quirks worth naming, because they shape how the studio scopes and tests the work:
- KASE and AIX are different worlds under one account. They use different settlement conventions and a different listing universe. We normalize them into one position model and tag every row with its source exchange, so downstream code never silently assumes one venue. The reconciliation report ships with both views.
- The demo account is honest about its limits. Per the app's own note, demo shows real data with a delay. We build and test against demo first — including the pytest suite — and the holder's live account is only swapped in for final sign-off. The holder is not exposed to half-built code.
- The SMS-OTP and Face ID confirmation is the brittle point. Mobile-side auth flows change shape more often than the data endpoints behind them. We schedule a small weekly probe of the login → portfolio path so any change in the confirmation step surfaces fast, before silent gaps stack up in the buyer's blotter.
- Order confirmations stay on the holder's device. The studio never holds the password and never takes the biometric prompt; per-trade confirmations route to the account holder's phone. The integration is designed so that operational use can be one-person sign-off or two-person review without rewiring.
Access, NDAs, and any Freedom Finance demo/test account are arranged with the buyer during the engagement, not asked for up front.
How the engagement runs
Source-code delivery for Tradernet.KZ lands at $300, paid only after the pull runs against a Freedom Finance demo or the buyer's live account and the buyer signs off — the invoice goes out at the end, not before. The cycle is 1–2 weeks for the read side, with order placement added on if it is in scope. Pay-per-call is the other shape: the studio hosts the endpoints, the buyer calls them, billing is per call, and there is no upfront fee. Either way the starting brief from the buyer is short — the app, what they want from it, where the data needs to land — and the rest is the studio's problem. Direct line for scope and quotes: /contact.html.
Screens from the live app
Where these notes come from
Notes drawn from the app's public Play Store listing for kz.ffin.ffinbroker (feature list, KASE/AIX coverage, demo-quote behaviour, biometric confirmation), AFSA's 2025 annual report on its supervisory activity in the AIFC, a Baker McKenzie write-up of the new Kazakh banking law adopted in December 2025, and the Freedom Holding background on Freedom Finance JSC's establishment and regulatory placement. Specific deep links:
- Play Store — Tradernet.KZ (kz.ffin.ffinbroker)
- AFSA — 2025 annual report (AIFC)
- Baker McKenzie — Kazakhstan new banking law (Jan 2026)
- Freedom Holding — group background
Byline: OpenBanking Studio integration desk · review dated 2026-05-30.
Questions integrators usually ask
Can the Tradernet.KZ integration reach both KASE and AIX from one session?
Yes. One Freedom Finance JSC account holder sees both venues, and we tag every position and order with its source exchange so the two book sides reconcile cleanly downstream.
Does the Tradernet.KZ demo account give enough to build against?
For everything except placing live orders, yes. The demo screens carry the same shape with delayed quotes, so the build and the pytest suite run against demo, and the live account is only used for final sign-off.
How is the SMS one-time-password and Face ID step handled in the integration?
The confirmation prompt stays on the account holder's device. The studio models it as a callback the holder controls; we do not store the password, and every trade confirmation still hits the holder's phone.
Other broker apps in the same circle
Related apps a buyer often wants to integrate alongside Tradernet.KZ. Plain neutral notes — no rankings.
- Freedom Broker — sibling app from the Freedom Finance group; same broker family, wider international markets.
- Tradernet.Global — sibling platform, global-markets oriented, separate account perimeter.
- Tradernet by Freedom Finance — group app under the Tradernet brand reaching the international book.
- Halyk Finance — Kazakh broker (part of the Halyk group); KASE/AIX coverage from a different institution.
- Jusan Invest — Kazakh broker, brokerage and investment account inside the Jusan group.
- BCC Invest — Bank CenterCredit's investment arm, KASE/AIX exposure on a Kazakh broker account.
- Interactive Brokers — global broker; when buyers need a multi-broker dashboard, IB usually sits next to a Kazakh broker like this one.
- eToro — retail broker; common second feed for retail-oriented aggregators.
- XTB — multi-market retail broker frequently asked about as an international comparator.
App profile (recap)
Tradernet.KZ · Android package kz.ffin.ffinbroker. Operator: Freedom Finance JSC, Kazakhstan. Categories: brokerage, investing. Lets the holder open an online brokerage account, buy securities on KASE and AIX (stocks, bonds, ETFs), view real-time securities data (delayed on demo), view the current portfolio, place trading orders, place non-trading orders (withdrawals, profile updates), and view order and transaction history. Identity and order confirmation through SMS one-time passwords, Face ID and Touch ID. App support email: 7555@ffin.kz. © Freedom Finance JSC, 2019.