Investing and trading app testing
Investing and trading apps, products like Robinhood, eToro, and Trade Republic, earn from spreads, payment for order flow, margin lending, and subscriptions. FintechAssuranceLabs tests order routing, payment for order flow reporting, margin interest, maintenance calls, market data latency, and corporate actions against SEC, FINRA, MiFID II, and CIRO rules.
What breaks in trading apps and what it costs
Trading apps earn inside each order and each financed position, so one defect in routing, margin, or entitlement code repeats across every affected account before a statement run exposes it.
- Payment for order flow booked against the wrong order. A cancel-and-replace gives the order a new ID, and the rebate allocation job matches the wholesaler's statement only against original IDs. Payments on amended orders fall into an unallocated bucket, so the payment for order flow revenue line and the per-venue report disagree. SEC Rule 606(a)(1) requires a quarterly public report of the net payment for order flow received from each venue, as a total and per share, published within one month after the quarter ends under 606(a)(2). A misallocated rebate makes that public report wrong for each venue it touches.
- FX spread left out of the annual cost report. An EU app charges a currency conversion spread on US-listed shares and books it in a separate revenue ledger that the costs-and-charges feed never reads. MiFID II Article 24(4) requires aggregated costs and charges, where applicable at least annually, and Annex II of Delegated Regulation (EU) 2017/565 lists foreign exchange costs and mark-ups embedded in the price as transaction costs. Every client with USD trades receives a statement that understates total costs, and the correction is a reissued statement run.
- Tiered margin rate applied to the whole debit balance. The disclosure charges each portion of the balance at its own tier rate, but the engine applies the first tier's rate to the full balance. On a synthetic 50,000.00 debit with 8.00% up to 25,000.00 and 6.50% above, on a 360-day year, the overcharge is about 1.04 per day. SEC Rule 10b-16 requires disclosure of the method of computing interest and periodic statements with the interest charged, so every statement above the tier boundary contradicts the disclosed method and becomes a refund. Our interest accrual and day-count guide shows the boundary cases.
- Maintenance check on a stale price. The market data handler reconnects after a gap, and the risk engine keeps the last price without a staleness flag. During a fast drop, account equity stays above the house requirement and the 25% minimum in FINRA Rule 4210(c), so no margin call or liquidation starts. When fresh prices arrive, account equity is negative and part of the margin loan is unsecured. Under SEC Rule 15c3-1(c)(2)(iv)(B), deficits in customers' unsecured and partly secured accounts are deducted from net worth when the broker-dealer computes net capital.
- Ex-dividend date one business day early. US equities have settled on T+1 since 28 May 2024 (SEC), and FINRA Rule 11140(b)(1) now sets the ex-dividend date on the record date for distributions under 25% of the share price. An entitlement engine that still uses the T+2 offset credits the dividend to customers who sold on the business day before the record date. The broker pays those sellers cash the custodian never paid for their shares, reverses both sides, and recalculates margin interest on every debit balance the cash changed.
Licence flag and the evidence regulators ask for
Trading apps carry the licence flag: every order runs under a broker-dealer registration, an investment firm authorisation, or a dealer membership, held directly or through an introducing and clearing arrangement.
United States
FINRA examines broker-dealers, and the SEC sets the order routing and margin credit disclosure rules. FINRA Rule 5310, Supplementary Material .09, requires firms that do not review order by order to run regular and rigorous execution quality reviews at least quarterly, by security and order type (FINRA Rule 5310). Evidence we produce for a FINRA examination:
- order lifecycle test results that trace each order ID through routing, fills, rebates, and the 606 report
- execution quality review data reproduced from order and market data records
- margin interest and maintenance calculation checks against the disclosed method and the Rule 4210 minimums
- funding tests for ACH deposit returns, mapped to the Nacha Operating Rules
European Union
National competent authorities supervise investment firms. MiFIR Article 39a prohibits investment firms acting for clients from receiving payment for order flow. The Article 39a(2) exemption ran until 30 June 2026, and ESMA's list, dated 27 March 2024, names Germany as the Member State that notified its use. MiFID II Article 27(7) requires firms to monitor their execution arrangements and assess venues on a regular basis. MiFIR Article 26(1) requires transaction reports no later than the close of the following working day. Evidence we produce for a competent authority review:
- routing configuration tests showing that no EU client order goes to a venue that pays for order flow
- execution monitoring records per venue for the Article 27(7) assessment
- transaction report completeness checks against executed orders
- cost report tests that include FX spreads, plus ICT resilience evidence under DORA
Canada
CIRO regulates investment dealers. IDPC Rule 3100 Part C sets best execution duties for client orders. CSA and CIRO staff note that dealers should review their best execution policies and procedures regularly, and at least annually under IDPC section 3126, and that UMIR 7.5 has the effect of prohibiting payment for order flow by a dealer (CSA/CIRO Staff Notice 23-331, 19 October 2023). Evidence we produce for a CIRO examination: best execution review data reproduced from order records, and routing tests showing that no venue pays for order flow.
Regulatory sources in this section were checked on 2026-09-16.
Test cases for trading apps
We run these scenarios in the trading and investment platform testing service, with calculation checks from financial calculation testing:
- Place, amend, cancel, partial fill, and reject each order type, and trace every order ID into the rebate ledger and the 606 report rows.
- Route orders from EU, US, and Canadian client accounts, and verify that the venue table applies each jurisdiction's payment for order flow rule.
- Buy fractional shares by notional amount, and check quantity rounding, residual cash, and dividend allocation per fraction.
- Accrue margin interest at exact tier boundaries, across a mid-cycle rate change, and on both 360-day and 365-day bases.
- Feed stale, gapped, and halted prices into the risk engine, and verify margin calls and liquidation at the Rule 4210 and house thresholds.
- Grant instant buying power on an ACH deposit, buy, then return the deposit as R01, and check the debit, trading restriction, and loss posting.
- Process forward and reverse splits against positions, open limit orders, and cost basis, including cash in lieu for fractions.
- Set ex-dividend dates for distributions under and over 25% of the share price, and check which account receives the cash.
- Cancel or fail billing on a premium subscription, and verify that plan entitlements such as a reduced margin rate or a higher instant deposit limit end on the correct date.
- Measure quote age at display and at order submission during feed failover, with load profiles from performance testing.
Integrations and protocols to cover
- FIX order routing to wholesalers, exchanges, and executing brokers: NewOrderSingle, OrderCancelReplaceRequest, and ExecutionReport with partial fills and rejects.
- Market data feeds: US consolidated tape (SIP) feeds, direct exchange feeds, and vendor WebSocket streams, with heartbeat, gap, and sequence number handling.
- Clearing and custody: clearing firm APIs and end-of-day position, cash, and activity files reconciled against the app ledger.
- Corporate action notifications: ISO 15022 MT564 and ISO 20022 seev.031 messages mapped to entitlement, split, and ex-date logic.
- Funding rails: Nacha ACH files and return entries, and instant bank payments.
- Regulatory reports: Rule 606 reports in the SEC XML schema, Consolidated Audit Trail submissions, and MiFIR transaction reports.
- KYC vendor APIs and appropriateness questionnaires at account opening, plus crypto-asset flows under MiCA where the app offers them.
- Subscription billing providers and their webhooks, which switch plan entitlements such as margin rates and deposit limits.
Related
Standards
Services
Guides
Sample deliverable
Sample, synthetic data
| ID | Source pair and instrument or asset | Internal quantity or amount | External quantity or amount | Difference (internal minus external) | Break classification and cause |
|---|---|---|---|---|---|
| POS-01 | Internal position ledger vs custodian settled position file: Equity A shares | 1,200 shares | 1,000 shares | +200 shares | Timing break, expected: a 200-share buy executed on trade date settles on T+1 and is absent from the settled position file until the next file |
| POS-02 | Internal position ledger vs clearing position file: Equity B shares | 500 shares | 1,000 shares | -500 shares | Corporate action break, open: the clearing file applies a 2-for-1 split on the effective date and the internal ledger has no split entry |
| POS-03 | Portfolio ledger vs custodian holdings file: Fund A units | 1,250.457362 units | 1,250.457 units | +0.000362 units | Rounding break inside the 0.001-unit tolerance: the portfolio ledger stores units to 6 decimal places and the custodian file to 3 |
| POS-04 | Hot wallet ledger vs blockchain node balance: Testnet coin A on a public testnet | 2.500000 coin A | 2.000000 coin A | +0.500000 coin A | True break, defect: deposit DEP-7713 was credited after 1 confirmation against a configured threshold of 12, and a chain reorganisation removed the transaction from the canonical chain |
| POS-05 | Hot wallet ledger vs blockchain node balance: Testnet coin A on a public testnet | 50.000000 coin A | 49.999580 coin A | +0.000420 coin A | True break, defect: the network fee for withdrawal WD-2291 was paid from the hot wallet and has no ledger entry |
| POS-06 | Tracker holdings from imported exchange history vs self-custody wallet node balance: Testnet coin B | 1.0000 coin B | 0.9995 coin B | +0.0005 coin B | True break, defect: the import records the exchange withdrawal at the gross amount and drops the 0.0005 coin B withdrawal fee, so the lot quantity is overstated by 0.0005 coin B and later disposals consume units the wallet does not hold |
| POS-07 | EWA advance ledger vs employer payroll deduction file: employee EMP-0042, pay period PP-18 | 350.00 XTS | 300.00 XTS | +50.00 XTS | Timing break, expected: advance ADV-5520 was requested after the payroll cut-off and the employer file deducts it in pay period PP-19 |
| POS-08 | Revenue-share remittance ledger vs expected remittance recalculated from processor revenue feed: agreement RBF-0310, month M-06 | 1,200.00 XTS | 1,160.00 XTS | +40.00 XTS | Calculation break, defect: the remittance applies the 8% share to 15,000.00 XTS gross revenue, while the agreement defines the share on 14,500.00 XTS revenue net of refunds |
Amounts use XTS, the ISO 4217 code reserved for testing; Equity A, Equity B, Fund A, and testnet coins A and B are generic test instruments with no market value, and all employee, agreement, deposit, and withdrawal IDs are invented.
Questions
What is payment for order flow?
How does payment for order flow work?
How is margin interest calculated?
Scope testing for your trading app
Tell us your markets, routing and clearing setup, and margin products, and we return a test scope with the evidence each regulator and clearing partner will read.
Scope your testing