Raw signing with Ripple Custody (Wallet) offers the ability to sign any transaction type available to a blockchain. It can be used on any transaction type if enabled.
This is an important feature of the Ripple Custody (Wallet) platform as it means customers can benefit from all natively supported transaction types of a blockchain as soon as they become available, regardless of whether that blockchain or transaction type is currently supported by Ripple Custody (Wallet).
Raw signing can be enabled and disabled for a wallet from wallet settings.
Raw signing is a powerful and insecure signing method. It is therefore disabled by default. Please only enable raw signing for individual wallets if you fully understand this feature.
See the Ripple Custody (Wallet) API reference for the raw signing endpoints. For XRP Ledger transaction types, see Submit XRP Ledger transactions via the API.
- Transaction encoding formats – Encode
encodedTransactionfor EVM chains, XRP Ledger, Solana, TRON, and 1Money - 1Money transaction types – Payloads for 1Money token operations
For EVM wallets, the platform automatically detects the target blockchain from the chainId field in the encoded transaction and routes to the correct connector. You don't need to specify a blockchain parameter — the encoded transaction is the source of truth.
- Known chain ID — If the chain ID matches a natively integrated chain (Ethereum, Arbitrum, Polygon, Base, BNB Chain, Avalanche, 1Money), the platform routes the transaction to that chain's connector. The platform supports both
signOnly=trueandsignOnly=false. - Unknown chain ID — If the chain ID doesn't match any natively integrated chain, the platform treats the transaction as cross-chain: it signs only and requires a policy with an explicit
CHAIN_IDmatcher.
1Money wallets are an exception: raw transactions from a 1Money wallet always execute on 1Money, regardless of the chain ID in the encoded transaction.
The blockchain field on the raw transaction request is deprecated. The platform ignores it for all raw transactions. For EVM wallets, the chain ID in the encoded transaction determines routing — a contradicting blockchain value is ignored with no error or warning. Raw transactions from non-EVM wallets and 1Money wallets always execute on the wallet's native blockchain.
An Ethereum wallet can sign and broadcast an Arbitrum transaction without any override:
POST /v2/vaults/{vaultId}/wallets/{walletId}/transactions/raw
{
"encodedTransaction": "<RLP-encoded transaction with Arbitrum chainId>",
"signOnly": false
}The platform extracts the Arbitrum chain ID from the encoded transaction, routes to the Arbitrum connector, and broadcasts the transaction.
The platform doesn't check the wallet's balance on the target chain before broadcasting. Your address is the same on every EVM chain, but it needs the native token for gas on the target chain. If the address isn't funded there, the network rejects the transaction and it fails with an insufficient funds reason.
For EVM wallets, you can raw-sign transactions for chain IDs that Ripple Custody (Wallet) doesn't natively integrate — for example, custom L2s, testnets, or chains Ripple Custody (Wallet) hasn't yet onboarded.
Cross-chain raw signing uses the same raw transaction endpoint. When the platform detects a chain ID that doesn't match any natively integrated chain, it enforces sign-only, checks a chain-ID-scoped policy, and returns the signature. Ripple Custody (Wallet) doesn't broadcast the transaction — you submit the signed transaction to the target chain yourself.
- EVM-only — Available for EVM wallets only.
- Sign-only — The request must set
signOnly=true. Ripple Custody (Wallet) rejects requests withsignOnly=falsefor an unknown chain ID with HTTP 400. - Explicit
CHAIN_IDmatcher required — The wallet must have a policy whose matchers include aCHAIN_IDmatcher for the target chain ID. Base policies without matchers don't apply to cross-chain transactions — a base policy alone doesn't authorize the sign. - Natively integrated chain IDs rejected — Ripple Custody (Wallet) rejects a
CHAIN_IDmatcher value that matches a chain it integrates natively (for example, Ethereum mainnet1). Use the standard raw signing flow for those chains.
- Create a policy on the EVM wallet that includes a
CHAIN_IDmatcher for each chain ID you want to allow. See Policy reference for the matcher format. - Submit a raw transaction to the standard raw signing endpoint with
signOnly=true. Encode the transaction using the EVM format described in Transaction encoding formats, setting thechainIdfield to the target chain ID. - The platform detects the unknown chain ID, evaluates the policy, and returns the signature on success.
- Submit the signed transaction to the target chain yourself.
Cross-chain raw signing returns a signature only. Ripple Custody (Wallet) has no connector for the target chain and doesn't publish the transaction. You're responsible for broadcasting the transaction — and for funding the address with the target chain's native gas token when you submit it.
- Send assets via the API — Execute a transfer on another EVM chain with the
blockchainfield - Track transactions via the API — Follow a raw transaction to confirmation