Mobile (WalletConnect)
xrpl_signTransactionFor
Add one multisignature from the connected account to a transaction.
xrpl_signTransactionFor adds a single Signers entry for the connected account, over the transaction exactly as sent. It never autofills and never submits: you collect signatures from every signer, combine them, and submit.
Request
{
tx_json: Transaction; // Account is the multisigned account, not the connected one
tx_signer?: string; // if present, must be the connected account
submit?: false; // submit: true is refused
}
Usage
const result = await provider.request(
{
method: 'xrpl_signTransactionFor',
params: {
tx_signer: 'r…', // the connected account
tx_json: {
TransactionType: 'Payment',
Account: 'rMultisigAccount…',
Destination: 'r…',
Amount: '1000000',
Fee: '36',
Sequence: 42,
SigningPubKey: '',
},
},
},
'xrpl:0',
);
Set Fee and Sequence yourself so every signer signs identical bytes. LastLedgerSequence is optional, which allows ticket-based multisign.
Refused requests
| Request | Error |
|---|---|
submit: true |
-32000 |
tx_signer isn't the connected account |
4100 |
tx_json.Account is the connected account |
-32000 (an account can't be one of its own signers) |
tx_json already has a TxnSignature |
-32000 |
| Required fields missing | -32000 |
| The connected account has already signed | -32000 |
An XLS-56 Batch is handled as a batch co-signature instead, and these checks don't apply to it.
Response
{ tx_json: { hash: string; Signers: [/* …with this account's entry added */]; /* … */ } }
With wc-client
import core from '@joey-wallet/wc-client/core';
const response = await core.methods.signTransactionFor({
provider,
chainId: chain,
request: {
tx_signer: connectedAddress,
tx_json: {
TransactionType: 'Payment',
Account: 'rMultisigAccount…',
Destination: 'r…',
Amount: '1000000',
Fee: '36',
Sequence: 42,
SigningPubKey: '',
},
},
});