_Docs/
Get StartedModulesPlatformDeployCookbookChangelogReference
_Stack
_Modules
  • Ledger
  • Numscript
  • Connectivity
    • Capabilities
    • Operations
    • Accounts
    • Payments
    • Orders
    • Conversions
    • Payment Initiation
    • Account Pools
    • Payment Service Users
    • Connectors
      • Generic Connector
        • Getting Started
        • How it Works
      • PSP Connectors
        • Adyen
        • Atlar
        • Banking Circle
        • Column
        • Currencycloud
        • Increase
        • Mangopay
        • Modulr
        • Moneycorp
        • Qonto
        • Stripe
        • Wise
        • Banking BridgeEE
        • RoutableEE
      • Exchange Connectors
        • Coinbase PrimeEE
        • FireblocksEE
        • BitstampEE
        • Kraken ProEE
      • Open Banking
        • Getting Started with Open Banking
        • Plaid
        • Tink
        • Powens
      • Build a connector
  • WalletsEE
  • FlowsEE
  • ReconciliationEE
  1. Modules
  2. Connectivity
  3. Connectors
  4. Exchange Connectors
  5. Kraken Pro
Kraken Pro
Exchange Connectors

Kraken Pro

Connect a Kraken Pro account to Formance Connectivity to sync wallets, balances, payments, orders, and conversions.

The Kraken Pro connector polls a Kraken Pro account and surfaces its asset wallets, balances, payments, trading orders, and conversions. It is read-only and spot-only.

Kraken Pro API keys scope to a single account, so install one connector instance per Kraken Pro account you need to get data from.

Prerequisites#

You need a Kraken Pro account and an API key. Kraken signs requests with HMAC-SHA512; the connector signs internally — you supply only the key and secret.

The API key must carry at least the following scopes:

  • Funds → Query
  • Orders & trades → Query closed orders & trades
  • Data → Query ledger entries

Make sure to create an API key dedicated to Formance. Doing so will improve your auditability and security and will allow you to revoke access to Formance at any time if needed.

Installation#

fctl payments connectors install krakenpro config.json
POST/api/payments/v3/connectors/install/krakenpro

With config.json containing:

json
{
  "apiKey": "string",
  "apiSecret": "string",
  "endpoint": "https://api.kraken.com",
  "name": "string",
  "pollingPeriod": "30m"
}

Configuration fields#

FieldRequiredDefaultDescription
apiKeyyes—Kraken Pro API key.
apiSecretyes—Kraken Pro private key.
endpointyes—Kraken Pro API base URL, e.g. https://api.kraken.com.
nameyes—Unique name for this connector instance (e.g. krakenpro-main, krakenpro-treasury when running one per account).
pollingPeriodno30mSync cadence (min 20m). Drives every capability.

The config is deliberately minimal — the API key scopes the connection to a single Kraken Pro account, and Kraken's API exposes no portable way to fan out across accounts.

Capabilities#

The Kraken Pro connector supports the following read-only capabilities:

  • FetchAccounts — one account per asset variant present via POST /0/private/BalanceEx.
  • FetchBalances — derived from the same BalanceEx call, no extra hop.
  • FetchPayments — deposits, withdrawals, transfers, staking, rewards, and adjustments from POST /0/private/Ledgers.
  • FetchOrders — closed/historical orders from POST /0/private/ClosedOrders.
  • FetchConversions — off-orderbook swaps from POST /0/private/Ledgers, grouped by refid.

Account model#

Each Connectivity account maps to one Kraken asset wallet. Kraken keeps a separate wallet per asset variant — the spot balance, staked balance, rewards balance, and so on are distinct — and each becomes its own account. The reference is Kraken's asset code (XXBT, XBT.M, ZUSD, ADA.S), a wallet_type metadata key records the variant (spot, staked, rewards, yield, earn, parachain, tokenised, hold, margin), and defaultAsset is the normalised TICKER/precision (see Asset model). Only assets the account holds or has held are surfaced. See the generic Accounts page for the cross-connector model.

Kraken doesn't expose a creation date per asset wallet, so CreatedAt is set to a fixed placeholder — Kraken's launch date, 2011-08-01T00:00:00Z.

Asset model#

Kraken uses its own asset codes (XXBT, ZUSD, XETH). The connector normalises them to standard tickers — XXBT → BTC, ZUSD → USD, XETH → ETH — so assets appear under the symbols you expect.

Precision follows Kraken's internal precision for each asset, which is finer than common market conventions (e.g. BTC/10 rather than BTC/8, USD/4 rather than USD/2). This keeps every amount exact — no value is rounded or truncated on the way in.

Status mapping#

Payments come from Kraken's Ledgers endpoint, which only writes an entry on settlement — there is no pending state at this layer, so every Payment is SUCCEEDED.

Order status is derived from Kraken's status enum combined with the filled-vs-ordered volume:

Kraken statusvol_exec vs volOrder status
closedexec ≥ volFILLED
closed0 < exec < volPARTIALLY_FILLED
closed0CANCELLED
canceledexec > 0PARTIALLY_FILLED
canceled0CANCELLED
expired—EXPIRED

Payments#

A Payment is one row from /0/private/Ledgers. Kraken's ledger type enum maps as follows:

Kraken typePayment type
depositPAYIN
withdrawalPAYOUT
transfer, custodytransferTRANSFER
staking, reward, dividend, credit, nft_rebatePAYIN
nftcreatorfeePAYOUT
adjustment, rollover, settled, reserve, ic_settlement, …OTHER
trade, eqtradeskipped — handled by Orders
conversion, sale, marginconversion, margin_conversionskipped — handled by Conversions

The Payment reference is the ledger entry id (not refid, which groups multi-leg events). The row's fee is recorded in metadata but not subtracted from the amount. Unknown future type values fall back to OTHER with a warning log.

Orders#

Only closed orders are registered — an order is surfaced once it has been filled, cancelled, or expired. In-flight orders that are still open or partially filled are not tracked while they remain active.

Conversions#

Conversions share the /0/private/Ledgers stream with payments but classify a distinct type set — conversion, sale, marginconversion, margin_conversion (plus derivatives variants for exhaustiveness; spot-only accounts see only the first two). A conversion is a pair of ledger rows sharing one refid: a negative-amount leg (source asset) and a positive-amount leg (destination asset).

SourceAmount / DestinationAmount are gross; fee is the sum across both legs.

Metadata keys#

All keys are namespaced com.krakenpro.spec/:

  • Account: wallet_type (spot / staked / rewards / …).
  • Payment / Conversion: refid, kraken_type, subtype, aclass, balance_after; fee (payments); source_ledger_id, destination_ledger_id (conversions).
  • Order: pair, ws_name, ordertype, price_asset, fills (comma-separated fill txids), cl_ord_id?.

Known gaps#

  • Orders appear only once they're closed (filled, cancelled, or expired) — orders that are still open or partially filled aren't shown while active.
  • A Kraken Pro API key is scoped to a single account, so reconciling multiple accounts means installing one connector per account.
BitstampOpen Banking
On This Page
  • Prerequisites
  • Installation
  • Configuration fields
  • Capabilities
  • Account model
  • Asset model
  • Status mapping
  • Payments
  • Orders
  • Conversions
  • Metadata keys
  • Known gaps