Wallet Infrastructure
Wallet Infrastructure
Treasury

Proposals (releasing soon)

Collect signer approvals over days for payments, signer changes and threshold changes.

Releasing soon

Proposals are being released and are not yet available.

What a proposal is

A proposal is one transaction on a treasury's Safe that signers approve over time. Approvals do not expire with network fees, so signers can approve hours or days apart.

kindDoes
paymentSends a token or the network's native coin.
owner_addAdds a signer.
owner_removeRemoves a signer.
threshold_changeChanges the signing threshold.
rejectCancels another proposal at the same place in the queue.
Proposal flow
YouYour serverPOST /v1/treasury/proposals
kind
Wallet InfrastructureProposalsafeTxHash
hash
SignersSign over dayspasskey
enough signatures
Wallet InfrastructureSent, fee paidtxHash

Flow

  1. Create proposal with the network, kind and params. It returns a safeTxHash, which is the proposal's id and what each signer signs.
  2. Each signer signs the safeTxHash with their passkey: Sign proposal, or Sign proposals in batch for up to 16 at once.
  3. Once enough signers have signed, the platform sends it and pays the network fee.

A proposal needs the larger of the treasury's signing threshold and the Safe's own threshold, checked again when it is sent.

Verify before signing

A signer sees only the safeTxHash on their device. Your app must recompute it from the returned transaction fields and refuse to sign if it does not match.

Timing and order

  • A proposal collects signatures for 7 days by default. Set ttlSeconds (at least 3,600) for a shorter window.
  • Proposals on the same network execute in order. queuePosition shows how many must execute first, and statusReason says what a proposal is waiting for.

Rejecting a proposal

Reject proposal creates a reject proposal at the same place in the queue. Once signers approve it, the original can never execute. A rejection needs as many signatures as any other proposal.

Tracking

List proposals and Get proposal show who has signed, the queue position and the transaction hash once sent. Finished proposals are kept for 30 days.

Errors

CodeStatusCause
not_found404The proposal belongs to another business, project or customer treasury.
validation_failed409The signer is not a current owner of the Safe on that network, or already signed.
validation_failed400ttlSeconds is below 3,600 or above the platform window.

On this page