# Cross-chain raw signing for EVM wallets

Today we are releasing **cross-chain raw signing** in Wallet-as-a-Service (Palisade). EVM wallets can now raw-sign transactions for chain IDs that Wallet-as-a-Service (Palisade) doesn't natively integrate. A new `CHAIN_ID` policy matcher controls access.

Cross-chain raw signing returns a signature only — no broadcast. You are responsible for submitting the signed transaction to the target chain.

## Background

Customers need to sign EVM transactions for chains that Wallet-as-a-Service (Palisade) hasn't yet onboarded — for example, custom L2s, testnets, or newer EVM chains. Previously, raw signing rejected any transaction whose chain ID didn't match the wallet's native blockchain. Cross-chain raw signing lifts that restriction for EVM wallets while keeping authorization under explicit policy control.

## Key features

- **Same endpoint** — Cross-chain raw signing uses the existing raw transaction endpoint. No new endpoints, wallet types, or transaction actions.
- **New `CHAIN_ID` matcher** — Add a `CHAIN_ID` matcher on a wallet policy to allow raw signing for a specific EVM chain ID. Wallet-as-a-Service skips policies without a `CHAIN_ID` matcher for cross-chain transactions — you must explicitly authorize each chain ID.
- **Sign-only** — Cross-chain raw signing forces `sign_only=true`. Wallet-as-a-Service rejects requests with `sign_only=false` for a non-native chain ID with HTTP 400.
- **EVM-only** — Available for EVM wallets only, for EVM chain IDs only.
- **Natively-integrated chain IDs rejected** — Wallet-as-a-Service rejects a `CHAIN_ID` matcher value that matches a chain it already integrates natively. Use the standard raw signing flow for those chains.
- **Matcher scoping** — Combine `CHAIN_ID` with `USER`, `API_CREDENTIAL`, or other matchers to scope cross-chain signing authority per user, per credential, or per counterparty.


## Example

Allow API credential `cred-uuid` to sign up to 5 transactions per 24 hours on chain ID `10` (Optimism):


```json
{
  "limitType": "ROLLING_DURATION",
  "symbol": "ETH",
  "limitQty": "5",
  "duration": "86400s",
  "matchers": [
    { "type": "CHAIN_ID",       "value": "10" },
    { "type": "API_CREDENTIAL", "value": "cred-uuid" }
  ]
}
```

## Documentation

- [Cross-chain raw signing](/products/wallet/user-interface/transactions/raw-signing#cross-chain-raw-signing-evm)
- [`CHAIN_ID` matcher reference](/products/wallet/user-interface/policies/policies-reference#chain_id)
- [Cross-chain transactions](/products/wallet/user-interface/transactions/cross-chain-transactions)