Exchange Connectivity

14 European exchanges, one order interface. Each exchange has its own protocol, settlement calendar, and fee structure. Portfolwright normalizes all of this into a single API call.

Get API Access
Diagram showing 14 European exchange connections converging to a unified API layer
Coverage

14 exchanges in production

Exchange Country Asset types Settlement Status
Euronext Paris (XPAR)FranceEquities, ETFsT+2Live
Deutsche Börse Xetra (XETR)GermanyEquities, ETFs, WarrantsT+2Live
London Stock Exchange (XLON)United KingdomEquities, ETFs, GiltsT+2Live
SIX Swiss Exchange (XSWX)SwitzerlandEquities, ETFsT+2Live
Euronext Amsterdam (XAMS)NetherlandsEquities, ETFsT+2Live
Nasdaq Helsinki (XHEL)FinlandEquities, ETFsT+2Live
Nasdaq Stockholm (XSTO)SwedenEquities, ETFsT+2Live
Borsa Italiana (XMIL)ItalyEquities, ETFs, BondsT+2Live
Euronext Brussels (XBRU)BelgiumEquities, ETFsT+2Live
Euronext Lisbon (XLIS)PortugalEquities, ETFsT+2Live
Vienna Stock Exchange (XWBO)AustriaEquities, ETFsT+2Live
Nasdaq Copenhagen (XCSE)DenmarkEquities, ETFsT+2Live
Oslo Børs (XOSL)NorwayEquities, ETFsT+2Live
Euronext Dublin (XMSM)IrelandEquities, ETFsT+2Live
Unified interface

One order struct. 14 protocols handled.

Every exchange has its own order submission protocol, error codes, and fill confirmation format. Portfolwright normalizes this into a single order struct you control.

Settlement dates are calculated automatically per exchange, accounting for public holidays in each jurisdiction. Fill confirmations arrive via webhook in a normalized format regardless of origin exchange.

Normalized order struct
// Same struct regardless of exchange
{
  "order_type": "market",
  "isin": "IE00B4L5Y983",
  "exchange": "XEUR",
  "side": "buy",
  "quantity": 142,
  "currency": "EUR",
  "portfolio_id": "pf_3x8k2m",
  "tax_lot_id": "tl_2025_03_18",
  // Portfolwright adds:
  "est_settlement_date": "2026-06-23",
  "exchange_protocol": "FIX/4.4",
  "mifid_record_id": "mf_8k3p1r"
}

Connect to 14 exchanges with one integration.