DEV Community

HMwork
HMwork

Posted on

Funding Settles Every 8 Hours — but Four of These Five Exchanges Have No 8-Hour Candle

Funding Settles Every 8 Hours — but Four of These Five Exchanges Have No 8-Hour Candle

If you hold a BTC perpetual on Binance, Bybit, or OKX, your funding payment changes hands every 8 hours, on the 00:00 / 08:00 / 16:00 UTC grid. That number is written into the exchanges' own APIs: the interval parameter and the settlement timestamps line up on the same three daily points.

So when you want to plot the cost you are actually paying on the same rhythm as the payments, the obvious move is to pull an 8-hour candle. And that is where the surprise is: most exchanges simply do not have one.

I went looking for the 8-hour candle at five exchanges on 2026-10-16, between 02:05 and 02:25 UTC, using only free, key-free official endpoints and official documentation pages. Each claim below rests on two layers: what the docs say, and what the live API actually returns. One venue supports the interval. Four do not.

Binance: the interval exists — and its documentation says so

Binance's spot REST documentation keeps a small table of valid kline intervals under the anchor kline-intervals. The hours row reads, verbatim, as fetched from the official repository today:

hours | 1h, 2h, 4h, 6h, 8h, 12h

And the live API agrees. GET /api/v3/klines?symbol=BTCUSDT&interval=8h returns data. The futures side (/fapi/v1/klines, interval 8h) also answered — and the difference between two adjacent returned timestamps was exactly 28,800,000 milliseconds, which is 8 hours to the millisecond, no calendar trickery.

There is a second, quieter lesson hiding in the same test. Spot supports a 1s interval — my probe returned rows. The futures API rejected the exact same parameter with error code -1120 ("Invalid interval"). Same company, same API family, two different interval enums. Never assume an interval that works on one endpoint of a venue exists on its sibling endpoint.

Bybit: the ladder stops at 12 hours; 480 minutes is not on it

Bybit's kline documentation lists the accepted values for the interval parameter as 1, 3, 5, 15, 30, 60, 120, 240, 360, 720, D, W, M — minutes, with day/week/month letters at the end. Notice there is no 480 between 360 and 720. Eight hours is not a step on this ladder.

The live endpoint behaves exactly as the enum implies:

  • interval=360 on spot BTCUSDT: accepted, and adjacent timestamps are 21,600,000 ms apart (6 hours, as advertised);
  • interval=480: rejected with retCode 10001, message "Invalid period!";
  • interval=90 (another gap in the ladder): also rejected with the same 10001.

So the documentation enum and the rejection behavior confirm each other from two independent surfaces: no 8-hour candle, and the API will tell you so explicitly rather than silently rounding to something else.

OKX: two candle grids, neither of them 8 hours

OKX's documentation (fetched live today, the same page I cross-checked against a 2026-08-06 Internet Archive snapshot) splits candles into three enumerated groups. The intraday list is:

[1s/1m/3m/5m/15m/30m/1H/2H/4H]

and above 4 hours it jumps straight to two daily-grid families:

UTC+8 opening price k-line: [6H/12H/1D/2D/3D/1W/1M/3M]
UTC+0 opening price k-line: [6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/1Wutc/1Mutc/3Mutc]

No 8H in any of the three lists. The live market endpoint matches the docs: bar=6H returned candles 21,600,000 ms apart, while bar=8H came back with error 51000 ("Parameter bar error"), as did bar=9H.

One extra wrinkle worth knowing before you try to synthesize 8-hour bars from OKX data: its default 6H/12H/1D candles open on a UTC+8 midnight grid, and only the suffixed *utc variants open at UTC midnight. If you aggregate 1-hour candles into 8-hour buckets anchored at UTC 00:00 while mixing in OKX's default bars, your bars will be silently shifted by 8 hours. The funding settlement grid is UTC-anchored; OKX's default candle grid is not.

Kraken: the enum is now printed in the docs — 8 hours is absent

Kraken used to be a venue where the interval list could only be inferred from trial and error. That has changed: the machine-readable documentation dump at docs.kraken.com now carries the OHLC endpoint's parameter table explicitly:

interval | 1, 5, 15, 30, 60, 240, 1440, 10080, 21600 (minutes) | default 1

No 480. No 360, either. And the API enforces it — querying XBTUSD with interval=360 or interval=720 returns EGeneral:Invalid arguments, while 15, 240, and 1440 all return their usual ~720-row responses.

Worth noting for tooling: this enum includes 1 and 5 minute intervals that many third-party tutorials omit, and its 10080/21600 entries mean "1 week / 2 weeks in minutes" — Kraken expresses weekly candles as minute counts where other venues use letters.

Coinbase: six granularities, and 28800 is not one of them

Coinbase Exchange's candle endpoint takes a granularity in seconds. Today's direct probes: 60, 300, 900, 3600, 21600 and 86400 all answered 200 with data; 7200 (2h), 14400 (4h) and — the point of this exercise — 28800 (8h) all answered HTTP 400 with Unsupported granularity. Odd values like 3601 fail the same way, so the check is a strict allow-list, not a range.

What this means for your charts

The funding cycle is a real 8-hour cash-flow event; the 8-hour candle is a UI convention that most venues never implemented. Three practical consequences:

  1. Build the bar yourself, and say so. Aggregating 1h or 4h candles into 00/08/16 UTC buckets is straightforward, but your derived bars are yours, not the exchange's — label them as derived, especially if you publish them.
  2. Check the calendar anchor before aggregating. Binance spot candles open at UTC midnight by default, OKX defaults to UTC+8 (with *utc variants available), and the mismatch is invisible until two charts disagree by one bar.
  3. Expect silent enum differences even within one venue. Binance spot 1s works while futures reject it; Kraken encodes weeks as minutes; Coinbase answers in seconds. A cross-venue fetcher needs a per-venue interval map — there is no shared standard.

None of this makes one exchange better than another; it is just five independent design choices that your software has to know about.

Reproduce it yourself

Everything above is one request away: Binance GET /api/v3/klines?interval=8h plus the kline-intervals table in its spot REST docs; Bybit GET /v5/market/kline?interval=480 plus its kline docs page; OKX GET /api/v5/market/candles?bar=8H plus the bar enum in docs-v5; Kraken GET /0/public/OHLC?interval=480 plus the parameter table in its docs dump; Coinbase GET /products/BTC-USD/candles?granularity=28800. All measurements were taken 2026-10-16 02:05–02:25 UTC; exchanges can and do change enums without notice, so verify against the official sources above before you rely on any of it.


AI disclosure: This article was researched and drafted with AI assistance under a documented methodology (official documentation pages plus live key-free API probes, each cross-checked), then reviewed before publishing.

Not financial advice: This article describes public API behavior and documentation enums. It is not investment, trading, or tax advice, and nothing here recommends any exchange, order type, or strategy.

Affiliate disclosure (#ad): This publication may carry affiliate links in the future; any such link would be labeled #ad next to it. This article contains no affiliate, referral, or sponsored links.

Top comments (0)