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
Coverage
14 exchanges in production
| Exchange | Country | Asset types | Settlement | Status |
|---|---|---|---|---|
| Euronext Paris (XPAR) | France | Equities, ETFs | T+2 | Live |
| Deutsche Börse Xetra (XETR) | Germany | Equities, ETFs, Warrants | T+2 | Live |
| London Stock Exchange (XLON) | United Kingdom | Equities, ETFs, Gilts | T+2 | Live |
| SIX Swiss Exchange (XSWX) | Switzerland | Equities, ETFs | T+2 | Live |
| Euronext Amsterdam (XAMS) | Netherlands | Equities, ETFs | T+2 | Live |
| Nasdaq Helsinki (XHEL) | Finland | Equities, ETFs | T+2 | Live |
| Nasdaq Stockholm (XSTO) | Sweden | Equities, ETFs | T+2 | Live |
| Borsa Italiana (XMIL) | Italy | Equities, ETFs, Bonds | T+2 | Live |
| Euronext Brussels (XBRU) | Belgium | Equities, ETFs | T+2 | Live |
| Euronext Lisbon (XLIS) | Portugal | Equities, ETFs | T+2 | Live |
| Vienna Stock Exchange (XWBO) | Austria | Equities, ETFs | T+2 | Live |
| Nasdaq Copenhagen (XCSE) | Denmark | Equities, ETFs | T+2 | Live |
| Oslo Børs (XOSL) | Norway | Equities, ETFs | T+2 | Live |
| Euronext Dublin (XMSM) | Ireland | Equities, ETFs | T+2 | Live |
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.
// 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"
}