24/7 orders
How a 24/7 order is stored on your account, sent exactly as stored, and checked by an independent watcher.
A 24/7 order is stored inside your trading account: the tokens, the amount, the minimum you accept, an expiry and the venues it may use. The account keeps the terms. Our order service watches the price and, when the trigger is met, sends one call that asks the account to run the order. The account checks that call against the stored terms before anything moves, so the key that sends it can only run orders you stored.
Placing and cancelling
Section titled “Placing and cancelling”A device key stores the order. Nothing is traded and the daily cap isn’t charged until the order runs. A device key can cancel an order, and so can the owner wallet. The 24/7 key can’t.
Firing an order
Section titled “Firing an order”When a trigger is met, the order service sends execute_order signed with that account’s 24/7 key. The account runs it only if it is exactly the stored order, with a minimum no lower than the stored one, and marks the order pending in the same receipt, so a second fire of the same order is refused. The stored minimum is the floor the contract holds every fire to.
The fee on a sell fired from an order is 0.75% of the order’s stored minimum, not of a higher minimum the fire signed.
The watcher
Section titled “The watcher”The watcher is a separate service with its own key that signs only pause records; it holds no 24/7 key. It checks every transaction a 24/7 key signed against the order service’s own signed record of the send and against the price on chain. On a mismatch it pauses 24/7 sends there, and the order reads Paused. A pause stops fires and moves nothing.
A fire pays for its gas from your trading account when it is sent, so the account needs that NEAR free in plain NEAR. When it’s short, nothing is sent, and the order says “Not enough NEAR in your trading account to fill this sell. Add NEAR and it fills on its own”.
Checking a fill yourself
Section titled “Checking a fill yourself”A fill is on chain: your account’s own execute_order call for that order id, with an order_filled event in the account’s logs. The app reads exactly that before it shows an order as filled.
Sources
Last verified 15 October 2026 against R4.