Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.circle.com/llms.txt

Use this file to discover all available pages before exploring further.

Circle provides signing APIs that allow developer-controlled wallets to sign transactions, messages, or typed data. Use these APIs when Circle doesn’t provide full blockchain infrastructure for your blockchain, or when you prefer to manage broadcasting yourself. For step-by-step instructions, see Sign Transactions on EVM Chains, Solana, or NEAR.

Signing endpoints

Circle provides four signing endpoints for developer-controlled wallets. You call one endpoint per request, depending on what you are signing:
  • Sign transaction: Sign a raw transaction for broadcasting to a blockchain.
  • Sign message: Sign an arbitrary message using EIP-191 (EVM) or a plain message (NEAR).
  • Sign typed data: Sign structured data using EIP-712 (EVM only).
  • Sign delegate action: Sign a delegate action to authorize another account to act on your behalf (NEAR only).

The signing flow

To sign and broadcast a transaction:
  1. Build the raw transaction in your application, including nonce, gas parameters, and any blockchain-specific encoding. For example, NEAR requires Borsh serialization before signing.
  2. Call the Sign transaction endpoint. Circle signs the transaction and returns the signed payload.
  3. Broadcast the signed transaction to a node provider of your choice.
The following diagram illustrates this flow. When you manage broadcasting, you are also responsible for monitoring transaction status, deposit detection, and balance retrieval.

Signing for EVM wallets

For blockchains in the Supported Blockchains Other EVM category, create a wallet using blockchain: EVM for mainnet or blockchain: EVM-TESTNET for testing. These are virtual blockchain parameters not tied to a specific blockchain. You specify the target blockchain using chainId at signing time. For a list of supported testnet chain IDs, see EVM Testnet Chain IDs for Signing.
An EVM wallet shares the same address as other wallets in the same wallet set. If you sign a transaction targeting a blockchain by chain ID, the transaction executes from the wallet on that blockchain. For example, signing a transaction with chain ID 42161 executes from your Arbitrum wallet, even if you intended to sign for a different blockchain. Verify the chain ID before signing to avoid unintended transactions and stuck funds.

SCA wallets and lazy deployment

Smart contract account (SCA) wallets use lazy deployment. The wallet contract is not deployed onchain until the first transaction. Calls to Sign message or Sign typed data before the wallet is deployed will fail. The wallet must complete at least one onchain transaction before signing arbitrary messages or typed data.