Business Accounts are in early access. Signing quorum currently covers message signing on all supported chains and transaction signing on EVM. Solana and Bitcoin transaction support is coming soon. For the quorum model itself, the approval lifecycle, and the requirement fields, see Approvals.
approvalRequirements is a PolicyRules field. It composes with other rules in the same policy layer and uses the scope of that layer: set it on the account layer with PolicyScope.account to govern every wallet the Business Account owns.
The policy layer can further restrict the applicable chain and chain IDs.
Create a transaction quorum rule
The following rule requires one approval from a Business Account member with theadmin role for native-token transfers of at least 1 ETH on Ethereum mainnet.
admin, or a custom Business Account role. A value such as anyAdmin works only when the Business Account defines a custom role with that exact name.
Requirement fields
sdk.policies.get returns approvalRequirements with the same authoring shape. Approval progress is reported during signing. It is not part of the policy definition.
Limit a rule by transaction value
Usewhen.minValue to apply the requirement at or above a transaction value. Conditions in the same when object are combined with AND logic.
amountis an integer string in the asset’s smallest unit.asset: ''selects the chain’s native token.- An asset address selects that token.
The signing intent
Every quorum-gated signing request produces a signing intent: a signed, complete description of the operation that approvers review and that the resume step executes. The SDK prepares and signs it automatically when you initiate signing, and it is stored on the proposal asBusinessAccountProposal.intent so approvers see the same object the initiator signed.
intent is a raw map. For signing proposals it is signed verbatim, so pass it back unmodified: re-serializing it can change the bytes and invalidate the signature.
Complete a quorum-gated signing operation
The signing-quorum flow has three stages:- The initiator attempts to sign. The SDK prepares and signs an operation-bound intent automatically.
- Other eligible Business Account members review and approve the resulting proposal.
- After every requirement is satisfied, the initiator resumes the proposal to produce the signature.
1. Start signing
Use a Business Account wallet with its standard signing methods, such assignMessage or signRawMessage. When a matching quorum rule requires approval, the call throws a SigningConsentRequiredException. Save its proposalId so you can find the proposal later.
context.reason tells you what consent is still missing:
SigningConsentRequiredReason.approvalsRequired: a proposal opened and needs other members’ approvals. The context carriesproposalIdandapprovalRequirements.SigningConsentRequiredReason.intentRequired: the operation’s intent still needs your session-key signature. This is rare because the SDK signs the intent automatically, but it can occur when the local client cannot produce the signature.
intentRequired, sign the returned context.intent with signSigningQuorumIntent and retry through prepareSigningQuorumApproval, passing the signed intent as approvalQuorum. Pass the operation’s stored payload as preparedPayload for message, typed data, and raw signing so the intent is checked against your request before it is signed.
2. Approve the proposal
An eligible Business Account member other than the initiator approves the proposal from their own authenticated session.satisfied value is authoritative. Do not infer readiness from approved >= required because a requirement can also require specific roles.
An approver can inspect the operation before approving it: the signed intent on proposal.intent describes the message, typed data, or transaction the quorum is consenting to.
Members can also vetoProposal to reject a proposal, withdrawProposalApproval to retract a previously recorded approval, and listProposals to read every proposal on a Business Account:
3. Resume the approved operation
Read the pending proposal again, verify that every requirement is satisfied, and resume it with the same Business Account wallet.resumeSigningProposal consumes the proposal and returns the signature. For an EVM transaction intent the signature is the serialized signed transaction, which you then broadcast yourself.
resumeSigningProposal verifies that the proposal is pending and fully approved and that the selected wallet belongs to the proposal’s Business Account and matches the intent address.
Changes to approver roles, thresholds, or deadlines apply to subsequent evaluations. Start a new signing request after changing a quorum rule so the request is evaluated against the current policy.
Related
Signing
Sign with a Business Account wallet.
Approvals
The quorum model and approval lifecycle.