A Vault owner on a hardware wallet signs, creates, executes and rejects orders with the
prepareHardware… methods instead. See the method map.Prerequisites
If the account runs in strict authentication, pass
walletPassword on every signing call. Without it the SDK throws
StrictAuthPasswordRequiredError.createOrder on SOL, signOrder, rejectOrder on SOL and
executeOrder) accepts userRef and, when the device share is missing,
walletPassword. sdk.runWithUserRef(userRef, fn) sets the ambient user for a whole block if you
would rather not thread it through every call.
Method reference
To price an execution before you commit to it, use See Multisig Network Fees.
estimateFee with the ExecOrder type:Lifecycle
Order.status is typed EOrderStatus, whose members are exactly:
Order shape
Instruction types
createOrder takes a method: OrderMethodType plus instructions: OrderInstruction[].
OrderInstruction is a loose bag; the SDK reads only the fields the chosen method needs:
OrderMethodType covers every method any chain accepts: transfers (native, erc20, spl,
trc20, ada_native, ada_token, xrp_native, xrp_asset), owner and threshold changes, and the
XRP trust-line operations. Use the constant rather than a string literal, since some methods exist in
more than one casing for historical reasons.
Cardano
A Cardano order carries a single instruction, not an array. For a token transfer, pass the
policy id as
tokenAddress and the asset name as symbol, which is mandatory there.XRP
method: 'xrp_native' and method: 'native' are
equivalent. XRP vaults support at most 8 signers, and an owner update above that is rejected
before any request is made.
Creating orders
createSendOrder, the simple path
chainType, validates to against that chain, picks the method
for you (native with no token; otherwise erc20 on EVM, spl on SOL, trc20/trc on TRON by
address prefix, asset on XRP), builds a one-element instruction list, and delegates to
createOrder. It throws InvalidInputError for a token transfer on a chain it cannot map
(Unsupported chain for token transfer).
createOrder, full control
CreateOrderOutput is { order: Order; proposalHash?: string }. proposalHash is populated on
Solana only, with the multisigPda.
createSettingsOrder, owners and threshold
multisig.owners / multisig.threshold decides the method. See the change-method
table on the Multisig Vaults page. No change
throws InvalidInputError: No changes detected in multisig configuration.
Signing
What differs per chain
signOrder is one call everywhere, but the cost and the effect differ:
In every case the SDK checks what it is about to sign against what the order declares before the key
is reconstructed. See below.
Signing safety
Before the private key is touched,signOrder checks the payload about to be signed against what
the order declares. A disagreement throws SignatureIntentMismatchError; see
Errors for the message shapes and
Preflight for the full set of checks that run
at signing time on every chain. Treat this error as a security event, not a transient failure, and
do not retry it.
For a simulation of what an order would actually do on chain, run
preflightOrder first. It returns null when no check covers the
chain or method, so gate on preflightBlocksSigning(result, isRunning) rather than on truthiness.
Rejecting
rejectOrder resolves to the resulting Order.
walletAddress and the vault id are required. A rejection missing either fails immediately, before
any request.
Executing
Chain-specific extras
Solana: retrying a failed activation
Creating a Solana order takes two steps: the order is registered, then activated on chain. An order can therefore exist with its activation incomplete. PassorderIdToActivate on createOrder to
re-run only the activation for such an order instead of creating a new one.
Cancelling every pending order on an EVM vault
Rejecting an EVM order creates a counter-order at the same nonce; executing that counter-order invalidates every pending order sharing that nonce. There is no separate “cancel all”.Deleting an order record
deleteOrder removes the order record. It does not affect anything on chain; use rejectOrder for
that. The server deletes only an order that is still created or proposed; for any other status
the call fails with an ApiError.
Reading orders
getOrders defaults to page: 1, limit: 20.
The two read methods are easy to mix up.
getOrders takes a multisig id and returns that
vault’s page of orders; getOrderById takes an order id and returns one order.History
TxHistoryCombinedResponse:
getWalletHistory) returns a different shape:
Organization orders
Every order method takeswalletScope. With walletScope: 'organization' the same call operates on
an org-owned vault instead of a personal one; the request and response shapes are identical. See
Organization Vaults.
Complete flow
multisig.threshold is a string on MultisigsItem, so coerce it before comparing.
Next
Multisig Vaults
Creating and activating the vault an order runs on.
Multisig Network Fees
Who pays at each lifecycle step, per chain.
Preflight
Simulate before you collect a signature.
Errors
SignatureIntentMismatchError and the rest of the taxonomy.