How-to guide · Kraken API Trading Bot

How a Kraken Bot Handles Partial Fills

An order rarely fills all at once — here is how a disciplined trading bot tracks a partial fill, reconciles the remainder, and keeps its risk math intact.

Published June 16, 2026 · Primary topic: partial fills on a Kraken bot

← Back to the Kraken API Trading Bot hub

An order does not always fill in one clean trade. In a real market on the Kraken API, a single order can be matched against several resting orders at different sizes, so part of it executes and part is left working — or never fills at all. A bot that assumes every order fills completely will miscount its position, misprice its risk, and drift out of sync with what it actually holds. Handling partial fills correctly is quiet, unglamorous discipline, and it matters.

Why partial fills happen

When your order is larger than the liquidity available at your price, the exchange fills what it can and leaves the rest. The same happens when a limit order only partially matches before the market moves away from your level. Thin pairs, fast conditions, and larger sizes all make partial fills more likely. They are normal market behaviour, not an error.

Read the filled quantity, not the request

The first rule is to never assume. After placing an order, the bot reads how much actually filled rather than treating the requested size as done. The difference between requested and filled is the remainder that still needs handling, and acting on the request instead of the fill is how phantom positions appear.

Reconcile the remainder

The unfilled portion needs an explicit decision: leave it working at the same limit, cancel it, or re-price it. Each choice has consequences, and the bot records which one it made. Leaving an order working can mean it fills later at a moment you no longer want; cancelling locks in a smaller position than intended. There is no default that is right every time, which is why the decision is logged.

Recompute the real position

Once the fills are known, the bot recomputes its true position size and average entry price from the actual executions. This matters because every risk limit — per-trade exposure, the stop distance, the daily cap — must act on what you really hold, not on what you asked for. A position sized on the request rather than the fill can quietly breach a limit you thought was safe.

Log it so it stays accountable

Finally, the partial fill and its handling go into the execution audit trail, alongside the order that produced them. When you later review what the bot did, the partial and the choice that followed are there in order, so the position and its cost are fully reconciled rather than approximated.

Partial fills interact closely with the order type you chose, so it helps to understand limit versus stop-loss-limit orders and the wider set of order types on Kraken. Behaviour is described here in plain terms; always confirm the current specifics against Kraken's own API documentation.

Important

This is not investment advice.

GreatDane Trades is an education, backtesting, and trading automation platform. Nothing on this site is financial advice. Results are simulated. Backtests do not guarantee future results. Markets can diverge from simulations. Trading cryptocurrencies involves substantial risk including the total loss of capital. Paper trading should come before live trading. Users are responsible for their own trades.

Read the full risk disclaimer →

More in Kraken API Trading Bot

Closely related guides in this topic cluster.

See every guide in this cluster on the hub: Kraken API Trading Bot.

Explore the other pillars

Put the discipline into practice — in paper first.

Start in paper mode, validate with walk-forward backtests, and let the risk engine hold the line. No real capital is at risk until you decide to connect Kraken.

No profit promises. Paper trading by default.