Skip to main content
Order prices (p) and sizes (s) must follow the market’s permitted increments. Send them as decimal strings, such as "0.52" and "10", without scientific notation. Choose the final price and size before signing.

Hyperliquid

Prices

Hyperliquid prices follow two precision limits:
  • Non-integer prices have at most five significant figures. Leading zeroes do not count.
  • Decimal places are limited by the market’s size precision (szDecimals):
Both limits apply. Integer prices are allowed regardless of their number of significant figures. The permitted price increment can therefore change with the price’s magnitude. These are Hyperliquid’s tick and lot size rules. Trigger prices (triggerPx) follow the same price limits as the order’s market.

Sizes

Sizes have at most szDecimals decimal places, giving a lot size of 10^(-szDecimals). For example, with szDecimals = 3, the lot size is 0.001: "1.001" is valid and "1.0001" has excess precision. Read the precision from Notional metadata: These are responses to POST /info with type: "perpMeta" or type: "spotMeta". Spot order precision uses the base token’s szDecimals; weiDecimals describes transfer precision. A valid lot size does not by itself satisfy minimum order value or account limits.

Polymarket

On Notional, p is the pUSD price per share and s is the number of shares for both buys and sells.

Market constraints

Find the selected Polymarket side’s tokenId in the outcomeMarkets returned by POST /info with type: "predictionMeta". Read its current constraints from the public Polymarket order book:
The response includes:
tick_size is the price increment; min_order_size is the minimum number of shares for an ordinary venue order. Use the decimal tokenId for this lookup and the side’s Notional assetId in your order. Notional’s prediction metadata does not include these two constraints. Tick sizes can change; refresh cached constraints when Polymarket reports a tick_size_change.

Prices and sizes

  • p must be an exact multiple of tick_size, between tick_size and 1 - tick_size, inclusive. Notional accepts at most eight price decimal places.
  • Ordinary submitted share sizes have at most two decimal places and must meet min_order_size. Balances and settlement amounts can have six decimal places.
  • An eligible sub-minimum full-holding sell on a market advertising minimumCloseEnabled: true can use the exact holding quantity, with up to six decimal places. Follow the full-holding sell rules.
  • For ordinary venue orders, the quote amount (p × s) must be exactly representable with at most six decimal places.
  • Immediate buys (FrontendMarket, Ioc, Fak, or Fok) also require p × s to be at least 1 pUSD and a whole-cent amount. Resting buys and sells do not have this whole-cent restriction.
Polymarket’s order precision guidance uses two decimal places for share sizes. Tick alignment still matters: with a tick of 0.0025, "0.4225" is aligned and "0.423" is not. For an ordinary order with tick_size = "0.01" and min_order_size = "5":

Signing

Remove trailing fractional zeroes before signing: use "1.23" instead of "1.2300", and "10" instead of "10.0". Keep prices and sizes as strings. Notional’s exchange action hashing normalizes decimal strings, so your signed payload must use the same normalization. Apply any rounding before signing and submit the final values. Excess precision can cause rejection; do not rely on the server to round your order.