data holds the event, metadata holds context about where it came from, and type names the event. Use type to route events in your handler.
| Group | Dashboard label | type |
|---|---|---|
| EVM transactions | Wallet transactions | EIP_155_TX_V1 |
| Solana transactions | Wallet transactions | SOLANA_TX_V2 |
| Solana transactions | Token approvals | SOLANA_APPROVE_V2 |
| Solana transactions | Token revocations | SOLANA_REVOKE_V2 |
| Solana transactions | Delegated transfers | SOLANA_DELEGATED_TRANSFER_V2 |
| Wallet lifecycle | Wallet created | WALLET_GENERATE_V1 |
| Wallet lifecycle | Wallet backed up | WALLET_BACKUP_V1 |
| Wallet lifecycle | Wallet recovered | WALLET_RECOVER_V1 |
| Wallet actions | Wallet ejected | WALLET_EJECT_V1 |
EVM transactions
Wallet transactions (EIP_155_TX_V1)
Portal sends this event when an EVM address it watches for you sends or receives tokens, or approves or revokes a token spender. That covers:
- Sending and receiving native tokens, such as ETH.
- Sending and receiving ERC-20 tokens, such as USDC.
- Sending and receiving NFTs.
- Approving an ERC-20 spender, and revoking an approval by setting the allowance to 0.
confirmed: false as soon as the transaction is in a block. The second arrives with confirmed: true once the chain reaches the number of blocks in the table below. If a chain reorganization replaces the block, you can get the confirmed: false event without a confirmed: true one.
| Chain | Chain ID | Blocks until confirmed |
|---|---|---|
| Ethereum | eip155:1 | 12 |
| Ethereum Sepolia | eip155:11155111 | 18 |
| Polygon | eip155:137 | 100 |
| Polygon Amoy | eip155:80002 | 100 |
| Arbitrum | eip155:42161 | 18 |
| Arbitrum Sepolia | eip155:421614 | 600 |
| Optimism | eip155:10 | 500 |
| Optimism Sepolia | eip155:11155420 | 600 |
| Base | eip155:8453 | 100 |
| Base Sepolia | eip155:84532 | 100 |
data is an array with one item per transfer in the transaction:
| Field | Type | Description |
|---|---|---|
from | String | The address that sent the tokens, or the owner that approved a spender. |
to | String | The address that received the tokens, or the approved spender. |
amount | String | The amount, in token units. 0 when an approval is revoked. |
assetType | String | NATIVE_TOKEN, NON_NATIVE_TOKEN, NFT, or ERC20_APPROVAL. |
chainId | String | The CAIP-2 chain ID, such as eip155:1. |
chainName | String or null | The chain name, such as sepolia. |
direction | String | OUTBOUND if the watched address sent the tokens or approved the spender, INBOUND if it received them. |
tokenSymbol | String | The token symbol, such as ETH or USDC. |
metadata.confirmed | Boolean | Whether the transaction reached the confirmation depth for its chain. |
metadata.sentAt | String | When the transaction was included in a block, in ISO 8601. |
metadata.transactionHash | String or null | The transaction hash. |
metadata.userOperationHash | String or null | The user operation hash for account abstraction wallets. null for regular transactions. |
metadata.blockNumber | String or null | The block number. |
metadata.triggeredBy | String or null | The watched address this event was sent for. |
metadata.tokenAddress | String or null | The token contract. null for native tokens. |
metadata.tokenName | String | The token name. |
metadata.tokenDecimals | Number | The token’s decimals. |
metadata.rawAmount | String | The amount in the token’s smallest unit. |
metadata.fee | Object | The network fee: amount, rawAmount, decimals, and tokenSymbol. |
metadata.actualGasCost | String or null | The gas cost of a user operation, as a hex Wei amount. |
metadata.formattedActualGasCost | String or null | The same gas cost as a base-10 Wei string. |
metadata.approvalSpender | String | The approved spender. Only present on ERC20_APPROVAL items. |
metadata.nftTokenId | String or null | The token ID. Only set on NFT items. |
metadata includes custodianId, environmentId, chainId, and confirmed. It can also include the raw block, logs, and transactions from Portal’s chain data provider in block, logs, txs, and retries. Don’t rely on their shape.
actualGasCost and formattedActualGasCost are only set when the client’s transaction ran as an account abstraction user operation. With a gas policy on the chain, they show the gas you sponsored.
- Receive ETH
- Send ETH
- Receive USDT
- Send USDT
- Approve token
- Revoke approval
Unconfirmed event (Confirmed event (
confirmed: false):{
"data": [
{
"to": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"from": "0x76acbd1eb20236f303d6f5fc3d50fe5f88caec3f",
"amount": "0.01",
"chainId": "eip155:11155111",
"assetType": "NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "INBOUND",
"tokenSymbol": "ETH",
"metadata": {
"fee": {
"amount": "0.001933021424187",
"decimals": 18,
"rawAmount": "1933021424187000",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T14:44:00.000Z",
"confirmed": false,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "10000000000000000",
"tokenName": "ETH",
"nftTokenId": null,
"blockNumber": "7645517",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": null,
"tokenDecimals": 18,
"approvalSpender": null,
"transactionHash": "0xd3e43c0c352d6d60e16115416ae9d1406394e149096d449a7c88068f923ada8a",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
confirmed: true):{
"data": [
{
"to": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"from": "0x76acbd1eb20236f303d6f5fc3d50fe5f88caec3f",
"amount": "0.01",
"chainId": "eip155:11155111",
"assetType": "NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "INBOUND",
"tokenSymbol": "ETH",
"metadata": {
"fee": {
"amount": "0.001933021424187",
"decimals": 18,
"rawAmount": "1933021424187000",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T14:44:00.000Z",
"confirmed": true,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "10000000000000000",
"tokenName": "ETH",
"nftTokenId": null,
"blockNumber": "7645517",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": null,
"tokenDecimals": 18,
"approvalSpender": null,
"transactionHash": "0xd3e43c0c352d6d60e16115416ae9d1406394e149096d449a7c88068f923ada8a",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
Unconfirmed event (Confirmed event (
confirmed: false):{
"data": [
{
"to": "0xdfd8302f44727a6348f702ff7b594f127de3a902",
"from": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"amount": "0.001",
"chainId": "eip155:11155111",
"assetType": "NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "ETH",
"metadata": {
"fee": {
"amount": "0.001955140746657",
"decimals": 18,
"rawAmount": "1955140746657000",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T14:52:24.000Z",
"confirmed": false,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "1000000000000000",
"tokenName": "ETH",
"nftTokenId": null,
"blockNumber": "7645557",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": null,
"tokenDecimals": 18,
"approvalSpender": null,
"transactionHash": "0x297602294abe88d847a0e74af600b149cf3ed31f4cd775b37628cead9b2fabb6",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
confirmed: true):{
"data": [
{
"to": "0xdfd8302f44727a6348f702ff7b594f127de3a902",
"from": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"amount": "0.001",
"chainId": "eip155:11155111",
"assetType": "NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "ETH",
"metadata": {
"fee": {
"amount": "0.001955140746657",
"decimals": 18,
"rawAmount": "1955140746657000",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T14:52:24.000Z",
"confirmed": true,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "1000000000000000",
"tokenName": "ETH",
"nftTokenId": null,
"blockNumber": "7645557",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": null,
"tokenDecimals": 18,
"approvalSpender": null,
"transactionHash": "0x297602294abe88d847a0e74af600b149cf3ed31f4cd775b37628cead9b2fabb6",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
Unconfirmed event (Confirmed event (
confirmed: false):{
"data": [
{
"to": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"from": "0xdfd8302f44727a6348f702ff7b594f127de3a902",
"amount": "2",
"chainId": "eip155:11155111",
"assetType": "NON_NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "INBOUND",
"tokenSymbol": "USDT",
"metadata": {
"fee": {
"amount": "0.003163263549129086",
"decimals": 18,
"rawAmount": "3163263549129086",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T16:50:12.000Z",
"confirmed": false,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "2000000",
"tokenName": "USDT",
"nftTokenId": null,
"blockNumber": "7646117",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": "0x419fe9f14ff3aa22e46ff1d03a73edf3b70a62ed",
"tokenDecimals": "6",
"approvalSpender": null,
"transactionHash": "0x165f68557bb15ca9396b58f9f71f5113b83affce4fe445b37728af6c3fdb3e48",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
confirmed: true):{
"data": [
{
"to": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"from": "0xdfd8302f44727a6348f702ff7b594f127de3a902",
"amount": "2",
"chainId": "eip155:11155111",
"assetType": "NON_NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "INBOUND",
"tokenSymbol": "USDT",
"metadata": {
"fee": {
"amount": "0.003163263549129086",
"decimals": 18,
"rawAmount": "3163263549129086",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T16:50:12.000Z",
"confirmed": true,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "2000000",
"tokenName": "USDT",
"nftTokenId": null,
"blockNumber": "7646117",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": "0x419fe9f14ff3aa22e46ff1d03a73edf3b70a62ed",
"tokenDecimals": "6",
"approvalSpender": null,
"transactionHash": "0x165f68557bb15ca9396b58f9f71f5113b83affce4fe445b37728af6c3fdb3e48",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
Unconfirmed event (Confirmed event (
confirmed: false):{
"data": [
{
"to": "0xdfd8302f44727a6348f702ff7b594f127de3a902",
"from": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"amount": "0.1",
"chainId": "eip155:11155111",
"assetType": "NON_NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "USDT",
"metadata": {
"fee": {
"amount": "0.002395433635667721",
"decimals": 18,
"rawAmount": "2395433635667721",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T16:58:36.000Z",
"confirmed": false,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "100000",
"tokenName": "USDT",
"nftTokenId": null,
"blockNumber": "7646155",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": "0x419fe9f14ff3aa22e46ff1d03a73edf3b70a62ed",
"tokenDecimals": "6",
"approvalSpender": null,
"transactionHash": "0xa1da1738225b012c328724454dd46db4279133cfbf4a3054c094f3986de9ffe0",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
confirmed: true):{
"data": [
{
"to": "0xdfd8302f44727a6348f702ff7b594f127de3a902",
"from": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d", // Your Portal wallet
"amount": "0.1",
"chainId": "eip155:11155111",
"assetType": "NON_NATIVE_TOKEN",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "USDT",
"metadata": {
"fee": {
"amount": "0.002395433635667721",
"decimals": 18,
"rawAmount": "2395433635667721",
"tokenSymbol": "ETH"
},
"sentAt": "2025-02-05T16:58:36.000Z",
"confirmed": true,
"actualGasCost": null,
"formattedActualGasCost": null,
"rawAmount": "100000",
"tokenName": "USDT",
"nftTokenId": null,
"blockNumber": "7646155",
"triggeredBy": "0xab44dca8a4c606298d6be3e1b53115ed4785fe1d",
"tokenAddress": "0x419fe9f14ff3aa22e46ff1d03a73edf3b70a62ed",
"tokenDecimals": "6",
"approvalSpender": null,
"transactionHash": "0xa1da1738225b012c328724454dd46db4279133cfbf4a3054c094f3986de9ffe0",
"userOperationHash": null
}
}
],
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "EIP_155_TX_V1"
}
Unconfirmed event (Confirmed event (
confirmed: false):{
"data": [
{
"to": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"from": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2", // Your Portal wallet
"amount": "0.12345",
"chainId": "eip155:11155111",
"metadata": {
"fee": {
"amount": "0.000472352150647304",
"decimals": 18,
"rawAmount": "472352150647304",
"tokenSymbol": "ETH"
},
"sentAt": "2026-02-10T18:30:12.000Z",
"confirmed": false,
"actualGasCost": "0x39fb8298c6e800",
"formattedActualGasCost": "16320612000000000",
"rawAmount": "123450",
"tokenName": "USDC",
"nftTokenId": null,
"blockNumber": "10233184",
"triggeredBy": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"tokenAddress": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"tokenDecimals": "6",
"approvalSpender": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273",
"userOperationHash": "0x13b97495af27950461811eb68667d3ca631f9a510d5fe6b422d964962fbe995a"
},
"assetType": "ERC20_APPROVAL",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "USDC"
}
],
"metadata": {
"txs": [
{
"r": "39239007254912289268771055931432113831270460789053050427072713407646027577443",
"s": "26623931638950271666893416961845058711739468843419989769967475848834369193733",
"v": "0",
"gas": "446711",
"hash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273",
"type": "2",
"input": "0x1fad948c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000004337016838785634c63fce393bfc6222564436c4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000200de000000000000000000000000000000000000000000000000000000000001e41f000000000000000000000000000000000000000000000000000000000000d33c0000000000000000000000000000000000000000000000000000000054c87c2e0000000000000000000000000000000000000000000000000000000000195d3600000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104519454470000000000000000000000001c7d4b196cb0c7b01d743fbc6116a902379c72380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5000000000000000000000000000000000000000000000000000000000001e23a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000626666666666667849c56f2850848ce1c4da65c68b010000698b7b7f000000000000053dd9ed70c3f6ad900618ff48c6c00d5602d43378f8ca53f57e962c7a74e3cd38ecd4efa48743a0178be82451503ad6eadac99a6bab178321046537e6ef1a7a1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004500000000295dde855329661f3fbb2f2e84a269102acc5211aa255c3007e60368f2bc13b479bf98ea586f92485e23a404d125421d2ae2fda087337471c2e889535c6262bd1b000000000000000000000000000000000000000000000000000000",
"nonce": "58551",
"value": "0",
"gasPrice": "1057399864",
"toAddress": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"fromAddress": "0x4337016838785634c63fce393bfc6222564436c4",
"receiptRoot": null,
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"receiptStatus": "1",
"receiptGasUsed": "153229",
"transactionFee": "0.000162024323760856",
"transactionIndex": "97",
"receiptContractAddress": null,
"receiptCumulativeGasUsed": "19941570"
}
],
"logs": [
{
"data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"topic0": "0x7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd2",
"topic1": "0x13b97495af27950461811eb68667d3ca631f9a510d5fe6b422d964962fbe995a",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": null,
"address": "0x6666666666667849c56f2850848ce1c4da65c68b",
"logIndex": "193",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273"
},
{
"data": "0x000000000000000000000000000000000000000000000000000000000001e23a",
"topic0": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"topic1": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic2": "0x000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"topic3": null,
"address": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"logIndex": "195",
"triggered_by": [
"0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5"
],
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273"
},
{
"data": "0x00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000098b979dbd6590000000000000000000000000000000000000000000000000000000000026c4b",
"topic0": "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f",
"topic1": "0x13b97495af27950461811eb68667d3ca631f9a510d5fe6b422d964962fbe995a",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": "0x0000000000000000000000006666666666667849c56f2850848ce1c4da65c68b",
"address": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"logIndex": "196",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273"
}
],
"block": {
"hash": "0x90e7bfd7100ae7858028e870efd6d195814ac2cb0ccadf88ebc3e901e053c77e",
"number": "10233184",
"timestamp": "1770748212"
},
"chainId": "eip155:11155111",
"retries": 0,
"confirmed": false,
"custodianId": "cl7hygkd200063g6l5nn0",
"environmentId": "8c95033b-f3f0-4a15-a4ae-8938e3087990"
},
"type": "EIP_155_TX_V1"
}
confirmed: true):{
"data": [
{
"to": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"from": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2", // Your Portal wallet
"amount": "0.12345",
"chainId": "eip155:11155111",
"metadata": {
"fee": {
"amount": "0.000472352150647304",
"decimals": 18,
"rawAmount": "472352150647304",
"tokenSymbol": "ETH"
},
"sentAt": "2026-02-10T18:30:12.000Z",
"confirmed": true,
"actualGasCost": "0x39fb8298c6e800",
"formattedActualGasCost": "16320612000000000",
"rawAmount": "123450",
"tokenName": "USDC",
"nftTokenId": null,
"blockNumber": "10233184",
"triggeredBy": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"tokenAddress": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"tokenDecimals": "6",
"approvalSpender": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273",
"userOperationHash": "0x13b97495af27950461811eb68667d3ca631f9a510d5fe6b422d964962fbe995a"
},
"assetType": "ERC20_APPROVAL",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "USDC"
}
],
"metadata": {
"txs": [
{
"r": "39239007254912289268771055931432113831270460789053050427072713407646027577443",
"s": "26623931638950271666893416961845058711739468843419989769967475848834369193733",
"v": "0",
"gas": "446711",
"hash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273",
"type": "2",
"input": "0x1fad948c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000004337016838785634c63fce393bfc6222564436c4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000200de000000000000000000000000000000000000000000000000000000000001e41f000000000000000000000000000000000000000000000000000000000000d33c0000000000000000000000000000000000000000000000000000000054c87c2e0000000000000000000000000000000000000000000000000000000000195d3600000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104519454470000000000000000000000001c7d4b196cb0c7b01d743fbc6116a902379c72380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5000000000000000000000000000000000000000000000000000000000001e23a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000626666666666667849c56f2850848ce1c4da65c68b010000698b7b7f000000000000053dd9ed70c3f6ad900618ff48c6c00d5602d43378f8ca53f57e962c7a74e3cd38ecd4efa48743a0178be82451503ad6eadac99a6bab178321046537e6ef1a7a1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004500000000295dde855329661f3fbb2f2e84a269102acc5211aa255c3007e60368f2bc13b479bf98ea586f92485e23a404d125421d2ae2fda087337471c2e889535c6262bd1b000000000000000000000000000000000000000000000000000000",
"nonce": "58551",
"value": "0",
"gasPrice": "1057399864",
"toAddress": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"fromAddress": "0x4337016838785634c63fce393bfc6222564436c4",
"receiptRoot": null,
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"receiptStatus": "1",
"receiptGasUsed": "153229",
"transactionFee": "0.000162024323760856",
"transactionIndex": "97",
"receiptContractAddress": null,
"receiptCumulativeGasUsed": "19941570"
}
],
"logs": [
{
"data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"topic0": "0x7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd2",
"topic1": "0x13b97495af27950461811eb68667d3ca631f9a510d5fe6b422d964962fbe995a",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": null,
"address": "0x6666666666667849c56f2850848ce1c4da65c68b",
"logIndex": "193",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273"
},
{
"data": "0x000000000000000000000000000000000000000000000000000000000001e23a",
"topic0": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"topic1": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic2": "0x000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"topic3": null,
"address": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"logIndex": "195",
"triggered_by": [
"0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5"
],
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273"
},
{
"data": "0x00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000098b979dbd6590000000000000000000000000000000000000000000000000000000000026c4b",
"topic0": "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f",
"topic1": "0x13b97495af27950461811eb68667d3ca631f9a510d5fe6b422d964962fbe995a",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": "0x0000000000000000000000006666666666667849c56f2850848ce1c4da65c68b",
"address": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"logIndex": "196",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x39537e4f9a06d0356ea2c201190ff9fd2ffa4c1220c5b3eca7e15b1c03f64273"
}
],
"block": {
"hash": "0x90e7bfd7100ae7858028e870efd6d195814ac2cb0ccadf88ebc3e901e053c77e",
"number": "10233184",
"timestamp": "1770748212"
},
"chainId": "eip155:11155111",
"retries": 0,
"confirmed": true,
"custodianId": "cl7hygkd200063g6l5nn0",
"environmentId": "8c95033b-f3f0-4a15-a4ae-8938e3087990"
},
"type": "EIP_155_TX_V1"
}
Unconfirmed event (Confirmed event (
confirmed: false):{
"data": [
{
"to": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"from": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2", // Your Portal wallet
"amount": "0",
"chainId": "eip155:11155111",
"metadata": {
"fee": {
"amount": "0.000445696678391486",
"decimals": 18,
"rawAmount": "445696678391486",
"tokenSymbol": "ETH"
},
"sentAt": "2026-02-10T18:37:12.000Z",
"confirmed": false,
"actualGasCost": "0x39fb8298c6e800",
"formattedActualGasCost": "16320612000000000",
"rawAmount": "0",
"tokenName": "USDC",
"nftTokenId": null,
"blockNumber": "10233219",
"triggeredBy": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"tokenAddress": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"tokenDecimals": "6",
"approvalSpender": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95",
"userOperationHash": "0xf55e82b32f6d94a13607882f976a45834f2555faa871b1ea93c74ddc50857ede"
},
"assetType": "ERC20_APPROVAL",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "USDC"
}
],
"metadata": {
"txs": [
{
"r": "69800324002112404822417539847516648270674922755017207604406921620605970296563",
"s": "4822640581286792349111363455420646915276302091523407157768067240978332247031",
"v": "1",
"gas": "420689",
"hash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95",
"type": "2",
"input": "0x1fad948c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000004337013ef5cd421cef649fc58c1b0defd37bbeb1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000001a396000000000000000000000000000000000000000000000000000000000001e41f000000000000000000000000000000000000000000000000000000000000d3140000000000000000000000000000000000000000000000000000000050bfe2440000000000000000000000000000000000000000000000000000000000195d3600000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104519454470000000000000000000000001c7d4b196cb0c7b01d743fbc6116a902379c72380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000626666666666667849c56f2850848ce1c4da65c68b010000698b7d21000000000000d40df9ba9d664ab5a8ff593573c305b43d64e873527d5cf6ce67dc48f99c16fa7f20287cc8c6c962d52a148fcafc96ec8b40606fb5a07c9da959e9f35207a5fe1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004500000000bb5aaeb821928ef77ebdc0fe2e8c78fcec7e77cb7f7ab4892c33308605436aea164785e076475f85cbc15d70d937422a12d9a4735d9714ffde7e41fd1776e2321c000000000000000000000000000000000000000000000000000000",
"nonce": "58458",
"value": "0",
"gasPrice": "1059444574",
"toAddress": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"fromAddress": "0x4337013ef5cd421cef649fc58c1b0defd37bbeb1",
"receiptRoot": null,
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"receiptStatus": "1",
"receiptGasUsed": "133305",
"transactionFee": "0.000141229258937070",
"transactionIndex": "96",
"receiptContractAddress": null,
"receiptCumulativeGasUsed": "11334942"
}
],
"logs": [
{
"data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"topic0": "0x7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd2",
"topic1": "0xf55e82b32f6d94a13607882f976a45834f2555faa871b1ea93c74ddc50857ede",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": null,
"address": "0x6666666666667849c56f2850848ce1c4da65c68b",
"logIndex": "161",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95"
},
{
"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
"topic0": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"topic1": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic2": "0x000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"topic3": null,
"address": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"logIndex": "163",
"triggered_by": [
"0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5"
],
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95"
},
{
"data": "0x00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000085ce15510c570000000000000000000000000000000000000000000000000000000000021e67",
"topic0": "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f",
"topic1": "0xf55e82b32f6d94a13607882f976a45834f2555faa871b1ea93c74ddc50857ede",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": "0x0000000000000000000000006666666666667849c56f2850848ce1c4da65c68b",
"address": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"logIndex": "164",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95"
}
],
"block": {
"hash": "0x2778642f3ff6ae0dd81b8fa81185ab4f6bd7f7b28197eaba1593808cac0cd985",
"number": "10233219",
"timestamp": "1770748632"
},
"chainId": "eip155:11155111",
"retries": 0,
"confirmed": false,
"custodianId": "cl7hygkd200063g6l5nn0",
"environmentId": "8c95033b-f3f0-4a15-a4ae-8938e3087990"
},
"type": "EIP_155_TX_V1"
}
confirmed: true):{
"data": [
{
"to": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"from": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2", // Your Portal wallet
"amount": "0",
"chainId": "eip155:11155111",
"metadata": {
"fee": {
"amount": "0.000445696678391486",
"decimals": 18,
"rawAmount": "445696678391486",
"tokenSymbol": "ETH"
},
"sentAt": "2026-02-10T18:37:12.000Z",
"confirmed": true,
"actualGasCost": "0x39fb8298c6e800",
"formattedActualGasCost": "16320612000000000",
"rawAmount": "0",
"tokenName": "USDC",
"nftTokenId": null,
"blockNumber": "10233219",
"triggeredBy": "0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"tokenAddress": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"tokenDecimals": "6",
"approvalSpender": "0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95",
"userOperationHash": "0xf55e82b32f6d94a13607882f976a45834f2555faa871b1ea93c74ddc50857ede"
},
"assetType": "ERC20_APPROVAL",
"chainName": "sepolia",
"direction": "OUTBOUND",
"tokenSymbol": "USDC"
}
],
"metadata": {
"txs": [
{
"r": "69800324002112404822417539847516648270674922755017207604406921620605970296563",
"s": "4822640581286792349111363455420646915276302091523407157768067240978332247031",
"v": "1",
"gas": "420689",
"hash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95",
"type": "2",
"input": "0x1fad948c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000004337013ef5cd421cef649fc58c1b0defd37bbeb1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000001a396000000000000000000000000000000000000000000000000000000000001e41f000000000000000000000000000000000000000000000000000000000000d3140000000000000000000000000000000000000000000000000000000050bfe2440000000000000000000000000000000000000000000000000000000000195d3600000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104519454470000000000000000000000001c7d4b196cb0c7b01d743fbc6116a902379c72380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000626666666666667849c56f2850848ce1c4da65c68b010000698b7d21000000000000d40df9ba9d664ab5a8ff593573c305b43d64e873527d5cf6ce67dc48f99c16fa7f20287cc8c6c962d52a148fcafc96ec8b40606fb5a07c9da959e9f35207a5fe1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004500000000bb5aaeb821928ef77ebdc0fe2e8c78fcec7e77cb7f7ab4892c33308605436aea164785e076475f85cbc15d70d937422a12d9a4735d9714ffde7e41fd1776e2321c000000000000000000000000000000000000000000000000000000",
"nonce": "58458",
"value": "0",
"gasPrice": "1059444574",
"toAddress": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"fromAddress": "0x4337013ef5cd421cef649fc58c1b0defd37bbeb1",
"receiptRoot": null,
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"receiptStatus": "1",
"receiptGasUsed": "133305",
"transactionFee": "0.000141229258937070",
"transactionIndex": "96",
"receiptContractAddress": null,
"receiptCumulativeGasUsed": "11334942"
}
],
"logs": [
{
"data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"topic0": "0x7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd2",
"topic1": "0xf55e82b32f6d94a13607882f976a45834f2555faa871b1ea93c74ddc50857ede",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": null,
"address": "0x6666666666667849c56f2850848ce1c4da65c68b",
"logIndex": "161",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95"
},
{
"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
"topic0": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"topic1": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic2": "0x000000000000000000000000ee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5",
"topic3": null,
"address": "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
"logIndex": "163",
"triggered_by": [
"0x8cd6145d0555b867a708ad92f311bc6d67d41fd2",
"0xee5ca6275c9cfaec5ad42b40ebdbe6073fbcc4a5"
],
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95"
},
{
"data": "0x00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000085ce15510c570000000000000000000000000000000000000000000000000000000000021e67",
"topic0": "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f",
"topic1": "0xf55e82b32f6d94a13607882f976a45834f2555faa871b1ea93c74ddc50857ede",
"topic2": "0x0000000000000000000000008cd6145d0555b867a708ad92f311bc6d67d41fd2",
"topic3": "0x0000000000000000000000006666666666667849c56f2850848ce1c4da65c68b",
"address": "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789",
"logIndex": "164",
"triggered_by": ["0x8cd6145d0555b867a708ad92f311bc6d67d41fd2"],
"transactionHash": "0x433aade80380542c5f7294ba4eb43d08bb09352a605a1e41eeab88a823d4bb95"
}
],
"block": {
"hash": "0x2778642f3ff6ae0dd81b8fa81185ab4f6bd7f7b28197eaba1593808cac0cd985",
"number": "10233219",
"timestamp": "1770748632"
},
"chainId": "eip155:11155111",
"retries": 0,
"confirmed": true,
"custodianId": "cl7hygkd200063g6l5nn0",
"environmentId": "8c95033b-f3f0-4a15-a4ae-8938e3087990"
},
"type": "EIP_155_TX_V1"
}
Solana transactions
Every Solana event wraps the transaction indata.rawEvents, an array with one item. The envelope’s metadata includes environmentId, isDevnet, and eventTypes, and doesn’t include custodianId.
Portal sends one event for each watched address involved in a transaction, once the transaction is confirmed. triggeredBy is the watched address the event was sent for, and direction is the role that address played:
direction | The triggeredBy address |
|---|---|
OUTBOUND | Sent the tokens, approved or revoked a delegate, or executed a delegated transfer. |
INBOUND | Received the tokens, or was approved as a delegate. |
DELEGATED | Owned the tokens a delegate moved. Only on delegated transfers. |
data.rawEvents[] item:
| Field | Type | Description |
|---|---|---|
signature | String | The transaction signature. |
type | String | TRANSFER, APPROVE, REVOKE, or DELEGATED_TRANSFER. |
triggeredBy | String | The watched address this event was sent for. |
direction | String | OUTBOUND, INBOUND, or DELEGATED. |
timestamp | Number | The block time, in Unix seconds. |
slot | Number | The slot the transaction landed in. |
fee | Number | The fee in lamports. |
feePayer | String | The address that paid the fee. |
recentBlockhash | String | The transaction’s recent blockhash, base58-encoded. |
description | String | A human-readable summary of the transaction. |
source | String | The program that produced the transaction, such as SYSTEM_PROGRAM. |
nativeTransfers | Array | SOL movements: fromUserAccount, toUserAccount, and amount in lamports. |
tokenTransfers | Array | SPL token movements, with the mint and the token amount. |
accountData | Array | Balance changes for each account in the transaction. |
instructions | Array | The transaction’s instructions. |
events | Object | Parsed program events. |
transactionError | Object or null | The error, if the transaction failed. |
Wallet transactions (SOLANA_TX_V2)
Portal sends this event when a watched Solana address sends or receives SOL or an SPL token, such as USDC. Delegated transfers are a separate event, SOLANA_DELEGATED_TRANSFER_V2, described below.
You need this event to subscribe to the other Solana events in the group.
- Receive 0.01 SOL
- Send 0.0002 SOL
- Receive 0.0001 USDC
{
"data": {
"rawEvents": [
{
"fee": 80000,
"slot": 379135212,
"type": "TRANSFER",
"events": {},
"source": "SYSTEM_PROGRAM",
"feePayer": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"signature": "5hyWP82Fn951zjo5DHWAvAC8NjwU7LAKqR3Rpn7sB1H159koer8BefYSSCRuC7X3xVy6rHvMzM7sYHLBwxTAEeUY",
"timestamp": 1746565669,
"triggeredBy": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"direction": "INBOUND",
"accountData": [
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": -10080000,
"tokenBalanceChanges": []
},
{
"account": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"nativeBalanceChange": 10000000,
"tokenBalanceChanges": []
},
{
"account": "11111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "ComputeBudget111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H transferred 0.01 SOL to 67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx.",
"instructions": [
{
"data": "3b1H8Rq1T3d1",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "LKoyXd",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "3Bxs4NN8M2Yn4TLb",
"accounts": [
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx"
],
"programId": "11111111111111111111111111111111",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [
{
"amount": 10000000,
"toUserAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"fromUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H"
}
],
"recentBlockhash": "2d7rAqbS4ZFsroMHkxA8kmJdvmoPy4mtZRqCpSNTa1DQ",
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V2"
}
{
"data": {
"rawEvents": [
{
"fee": 5000,
"slot": 379135804,
"type": "TRANSFER",
"events": {},
"source": "SYSTEM_PROGRAM",
"feePayer": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"signature": "KENcRJpHNowJcpDwPvB2yR6VnDzMbQu5Nd1om5K1Y3cjdS3ujStBWYtz3EMhY1UvzykShhdZSUShwZrmYWbxfAF",
"timestamp": 1746565903,
"triggeredBy": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"direction": "OUTBOUND",
"accountData": [
{
"account": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"nativeBalanceChange": -205000,
"tokenBalanceChanges": []
},
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": 200000,
"tokenBalanceChanges": []
},
{
"account": "11111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx transferred 0.0002 SOL to 75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H.",
"instructions": [
{
"data": "3Bxs4Ba2u7BkmhYB",
"accounts": [
"67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H"
],
"programId": "11111111111111111111111111111111",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [
{
"amount": 200000,
"toUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"fromUserAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx"
}
],
"recentBlockhash": "2d7rAqbS4ZFsroMHkxA8kmJdvmoPy4mtZRqCpSNTa1DQ",
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V2"
}
{
"data": {
"rawEvents": [
{
"fee": 80001,
"slot": 413214028,
"type": "TRANSFER",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"signature": "3Cek3WrggVJ6PgwMXgnEZS4pyCqbLpZeeo2HWhJYB1McZoKZvyQU497F2yRnTJ3UWBoKcpeL8rd3Bw4pu4FKxyNo",
"timestamp": 1776189489,
"triggeredBy": "49bNwvPHy3krxWLBU3qrK5Gm1RPFqWDXB8xaawcjyCjd",
"direction": "INBOUND",
"accountData": [
{
"account": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"nativeBalanceChange": -80001,
"tokenBalanceChanges": []
},
{
"account": "C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"userAccount": "49bNwvPHy3krxWLBU3qrK5Gm1RPFqWDXB8xaawcjyCjd",
"tokenAccount": "C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "100"
}
}
]
},
{
"account": "C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"userAccount": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"tokenAccount": "C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "-100"
}
}
]
},
{
"account": "ComputeBudget111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD transferred 0.0001 USDC to 49bNwvPHy3krxWLBU3qrK5Gm1RPFqWDXB8xaawcjyCjd.",
"instructions": [
{
"data": "3TQPSi2v9sgs",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "J9y72F",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "hNmtbNYibdzwf",
"accounts": [
"C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"tokenAmount": 0.0001,
"toUserAccount": "49bNwvPHy3krxWLBU3qrK5Gm1RPFqWDXB8xaawcjyCjd",
"tokenStandard": "Fungible",
"toTokenAccount": "C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"fromUserAccount": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"fromTokenAccount": "C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A"
}
],
"nativeTransfers": [],
"recentBlockhash": "2d7rAqbS4ZFsroMHkxA8kmJdvmoPy4mtZRqCpSNTa1DQ",
"transactionError": null
}
]
},
"metadata": {
"isDevnet": false,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V2"
}
Token approvals (SOLANA_APPROVE_V2)
Portal sends this event when a watched address approves a delegate to spend an SPL token on its behalf, or is approved as one. direction is OUTBOUND for the owner and INBOUND for the delegate.
Requires Wallet transactions in the Solana group.
{
"data": {
"rawEvents": [
{
"fee": 10000,
"slot": 438851116,
"type": "APPROVE",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"signature": "7fLggf2PBHnH8QfWTzWjjpXKcyUj9h2roR6tCBxAAHJoiLyuYEDx95RqJNz1vnjFSJ8vyaZpanCgEHVLdVvX9Ng",
"timestamp": 1769837881,
"triggeredBy": "J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK",
"direction": "OUTBOUND",
"accountData": [
{
"account": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"nativeBalanceChange": -10000,
"tokenBalanceChanges": []
},
{
"account": "J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "",
"instructions": [
{
"data": "3xHiPX82ia9u",
"accounts": [
"pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [],
"recentBlockhash": "2d7rAqbS4ZFsroMHkxA8kmJdvmoPy4mtZRqCpSNTa1DQ",
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["APPROVE"],
"environmentId": "environmentId"
},
"type": "SOLANA_APPROVE_V2"
}
Token revocations (SOLANA_REVOKE_V2)
Portal sends this event when a watched address revokes a delegate’s approval to spend an SPL token. direction is always OUTBOUND.
Requires Wallet transactions in the Solana group.
{
"data": {
"rawEvents": [
{
"fee": 10000,
"slot": 438851202,
"type": "REVOKE",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"signature": "3p4qVucEtUhZ3GbsQv3ZQS2mTRsziSgJs6B7gre34X2xnG2WPkaNvHuk9wDRJ2kKzKa8M7Rmykpr6wTtYLRuY9oh",
"timestamp": 1769837914,
"triggeredBy": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"direction": "OUTBOUND",
"accountData": [
{
"account": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"nativeBalanceChange": -10000,
"tokenBalanceChanges": []
},
{
"account": "J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "",
"instructions": [
{
"data": "6",
"accounts": [
"pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [],
"recentBlockhash": "2d7rAqbS4ZFsroMHkxA8kmJdvmoPy4mtZRqCpSNTa1DQ",
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["REVOKE"],
"environmentId": "environmentId"
},
"type": "SOLANA_REVOKE_V2"
}
Delegated transfers (SOLANA_DELEGATED_TRANSFER_V2)
Portal sends this event when a delegate spends tokens it was approved to spend. For example, if address A approves address B to spend its USDC, and B later sends some of A’s USDC to C, Portal sends this event. Each watched address gets its own event:
OUTBOUNDfor the delegate that executed the transfer (B).INBOUNDfor the recipient (C).DELEGATEDfor the owner whose tokens moved (A).
{
"data": {
"rawEvents": [
{
"fee": 10000,
"slot": 413227505,
"type": "DELEGATED_TRANSFER",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "2eWxXEVjmyBxaJCPRmZJqtpYm7wkyXfmcNAwFPHBpwLx",
"signature": "5BFuHM8bMUVfHuwFc4DHoPQsYMbwhYWLGkjv41Lu5dn4wuRb23mK5oDJirjQxKadGYYWzTmSYnUMUed3Reef6Mxx",
"timestamp": 1776194807,
"triggeredBy": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"direction": "INBOUND",
"accountData": [
{
"account": "2eWxXEVjmyBxaJCPRmZJqtpYm7wkyXfmcNAwFPHBpwLx",
"nativeBalanceChange": -10000,
"tokenBalanceChanges": []
},
{
"account": "9rG4md1zvwpP1NtjMg48HutvuWYaHXerYat2C2E4PAz7",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"userAccount": "49bNwvPHy3krxWLBU3qrK5Gm1RPFqWDXB8xaawcjyCjd",
"tokenAccount": "C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "-1"
}
}
]
},
{
"account": "C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"userAccount": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"tokenAccount": "C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "1"
}
}
]
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "9rG4md1zvwpP1NtjMg48HutvuWYaHXerYat2C2E4PAz7 transferred 0.000001 USDC to 9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD.",
"instructions": [
{
"data": "3DdGGhkhJbjm",
"accounts": [
"C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp",
"C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"9rG4md1zvwpP1NtjMg48HutvuWYaHXerYat2C2E4PAz7"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"tokenAmount": 0.000001,
"toUserAccount": "9Nmpej98v2kEAXtc4AD52EbQAFrc3ikRe881LehqsEHD",
"tokenStandard": "Fungible",
"toTokenAccount": "C8wu1R39Brrbf8BrKB6uNQbv1pr43RopsQ2LknfdHa6A",
"fromUserAccount": "9rG4md1zvwpP1NtjMg48HutvuWYaHXerYat2C2E4PAz7",
"fromTokenAccount": "C2NWfgp2qUb2papQzy28XQPCxeT84zDLSPJRZvXGeZBp"
}
],
"nativeTransfers": [],
"recentBlockhash": "2d7rAqbS4ZFsroMHkxA8kmJdvmoPy4mtZRqCpSNTa1DQ",
"transactionError": null
}
]
},
"metadata": {
"isDevnet": false,
"eventTypes": ["DELEGATED_TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_DELEGATED_TRANSFER_V2"
}
Wallet lifecycle
Each Portal client has a key on two curves,SECP256K1 and ED25519, and each curve has its own walletId. The wallet lifecycle events are sent once per curve, so you usually get two events for one action, with the same clientId and different walletId values.
The envelope’s metadata includes custodianId and environmentId.
Wallet created (WALLET_GENERATE_V1)
Portal sends this event when a client creates a wallet and stores its signing share.
| Field | Type | Description |
|---|---|---|
data.clientId | String | The client that created the wallet. |
data.walletId | String | The wallet for this curve. |
data.signingSharePairId | String | The signing share pair stored for this curve. |
data.curve | String or null | SECP256K1 or ED25519. null if unknown. |
{
"data": {
"clientId": "clientId",
"walletId": "walletId",
"signingSharePairId": "signingSharePairId",
"curve": "SECP256K1"
},
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "WALLET_GENERATE_V1"
}
Wallet backed up (WALLET_BACKUP_V1)
Portal sends this event when a client backs up a wallet. If the client backs up with more than one method, you get one event per method per curve.
| Field | Type | Description |
|---|---|---|
data.clientId | String | The client that backed up the wallet. |
data.walletId | String | The wallet for this curve. |
data.curve | String or null | SECP256K1 or ED25519. null if unknown. |
data.backupMethod | String | The backup method, such as GDRIVE, ICLOUD, PASSWORD, or PASSKEY. |
data.backupSharePairId | String | The backup share pair stored for this curve. |
{
"data": {
"clientId": "clientId",
"walletId": "walletId",
"curve": "SECP256K1",
"backupMethod": "GDRIVE",
"backupSharePairId": "backupSharePairId"
},
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "WALLET_BACKUP_V1"
}
Wallet recovered (WALLET_RECOVER_V1)
Portal sends this event when a client recovers a wallet and stores the new signing share. signingSharePairId is the new share pair, not the one that was backed up.
| Field | Type | Description |
|---|---|---|
data.clientId | String | The client that recovered the wallet. |
data.walletId | String | The wallet for this curve. |
data.signingSharePairId | String | The new signing share pair for this curve. |
data.curve | String or null | SECP256K1 or ED25519. null if unknown. |
{
"data": {
"clientId": "clientId",
"walletId": "walletId",
"signingSharePairId": "signingSharePairId",
"curve": "SECP256K1"
},
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "WALLET_RECOVER_V1"
}
Wallet actions
Wallet ejected (WALLET_EJECT_V1)
Portal sends this event when a client ejects their wallet. Ejecting covers both curves, so you get one event per client. The eject has already happened when you receive the event, and your response doesn’t change it.
Portal makes one delivery attempt for this event and doesn’t retry it automatically. If your server misses it, resend it from the event log.
| Field | Type | Description |
|---|---|---|
data.clientId | String | The client that ejected the wallet. |
data.clientPlatform | String or null | CLI, NATIVE_ANDROID, NATIVE_IOS, REACT_NATIVE, WEB, or EMM. null if the client didn’t send it. |
data.clientPlatformVersion | String or null | The SDK version, if the client sent it. |
{
"data": {
"clientId": "clientId",
"clientPlatform": "NATIVE_IOS",
"clientPlatformVersion": "1.0.0"
},
"metadata": {
"custodianId": "custodianId",
"environmentId": "environmentId"
},
"type": "WALLET_EJECT_V1"
}
Archived events
The first version of the Solana events is archived and will be removed in November 2026. To move to the current events, follow Migrating from legacy Solana webhook events. The archived events differ from the current ones in these ways:- Portal sends one event per transaction, not one per watched address.
data.rawEvents[]items have notriggeredBy,direction, orrecentBlockhash.- Delegated transfers have no event of their own.
- Archived events support up to 100,000 watched addresses.
| Dashboard label | type |
|---|---|
| Wallet transactions | SOLANA_TX_V1 |
| Token approvals | SOLANA_APPROVE_V1 |
| Token revocations | SOLANA_REVOKE_V1 |
Wallet transactions (SOLANA_TX_V1)
Portal sends this event when a watched Solana address sends or receives SOL or an SPL token.
- Receive 0.01 SOL
- Send 0.0002 SOL
- Receive 0.1 USDC
- Send 0.01 USDC
{
"data": {
"rawEvents": [
{
"fee": 80000,
"slot": 379135212,
"type": "TRANSFER",
"events": {},
"source": "SYSTEM_PROGRAM",
"feePayer": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"signature": "5hyWP82Fn951zjo5DHWAvAC8NjwU7LAKqR3Rpn7sB1H159koer8BefYSSCRuC7X3xVy6rHvMzM7sYHLBwxTAEeUY",
"timestamp": 1746565669,
"accountData": [
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": -10080000,
"tokenBalanceChanges": []
},
{
"account": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"nativeBalanceChange": 10000000,
"tokenBalanceChanges": []
},
{
"account": "11111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "ComputeBudget111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H transferred 0.01 SOL to 67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx.",
"instructions": [
{
"data": "3b1H8Rq1T3d1",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "LKoyXd",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "3Bxs4NN8M2Yn4TLb",
"accounts": [
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx"
],
"programId": "11111111111111111111111111111111",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [
{
"amount": 10000000,
"toUserAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"fromUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H"
}
],
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V1"
}
{
"data": {
"rawEvents": [
{
"fee": 5000,
"slot": 379135804,
"type": "TRANSFER",
"events": {},
"source": "SYSTEM_PROGRAM",
"feePayer": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"signature": "KENcRJpHNowJcpDwPvB2yR6VnDzMbQu5Nd1om5K1Y3cjdS3ujStBWYtz3EMhY1UvzykShhdZSUShwZrmYWbxfAF",
"timestamp": 1746565903,
"accountData": [
{
"account": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"nativeBalanceChange": -205000,
"tokenBalanceChanges": []
},
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": 200000,
"tokenBalanceChanges": []
},
{
"account": "11111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx transferred 0.0002 SOL to 75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H.",
"instructions": [
{
"data": "3Bxs4Ba2u7BkmhYB",
"accounts": [
"67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H"
],
"programId": "11111111111111111111111111111111",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [
{
"amount": 200000,
"toUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"fromUserAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx"
}
],
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V1"
}
{
"data": {
"rawEvents": [
{
"fee": 80000,
"slot": 379136813,
"type": "TRANSFER",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"signature": "3AH7LPWnzvqmQRkGWMECe7Hxmi6M4FurCrGxAfS4JP7YNVz81qQhwsX7YmHdQxA1bfGFPDc8ouHXuhncXPnT3Uf9",
"timestamp": 1746566300,
"accountData": [
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": -2119280,
"tokenBalanceChanges": []
},
{
"account": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"nativeBalanceChange": 2039280,
"tokenBalanceChanges": [
{
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"userAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"tokenAccount": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "100000"
}
}
]
},
{
"account": "CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"userAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"tokenAccount": "CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "-100000"
}
}
]
},
{
"account": "11111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "ComputeBudget111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "SysvarRent111111111111111111111111111111111",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H transferred 0.1 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU to 67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx.",
"instructions": [
{
"data": "3pyz49iBVPDH",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "Ejyj83",
"accounts": [],
"programId": "ComputeBudget111111111111111111111111111111",
"innerInstructions": []
},
{
"data": "",
"accounts": [
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"11111111111111111111111111111111",
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"SysvarRent111111111111111111111111111111111"
],
"programId": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
"innerInstructions": [
{
"data": "84eT",
"accounts": [
"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"data": "11119os1e9qSs2u7TsThXqkBSRVFxhmYaFKFZ1waB2X7armDmvK3p5GmLdUxYdg3h7QSrL",
"accounts": [
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v"
],
"programId": "11111111111111111111111111111111"
},
{
"data": "P",
"accounts": [
"4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"data": "6SFd4LwbEeGhbq7iC4apSEA85UYCPWD7DUnLboAaBWSQv",
"accounts": [
"4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
]
},
{
"data": "i9TTqffgKmDLh",
"accounts": [
"CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [
{
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"tokenAmount": 0.1,
"toUserAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"tokenStandard": "Fungible",
"toTokenAccount": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"fromUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"fromTokenAccount": "CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA"
}
],
"nativeTransfers": [
{
"amount": 2039280,
"toUserAccount": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"fromUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H"
}
],
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V1"
}
{
"data": {
"rawEvents": [
{
"fee": 5000,
"slot": 379137198,
"type": "TRANSFER",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"signature": "yqQnyoqB1cm5se1U4Da6Hr89mNvozzp5WULtkNSUP3jVH5c79whZ9zg2NXeQhV3c3wkmsVjPV627WZtfCaAeRJW",
"timestamp": 1746566451,
"accountData": [
{
"account": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"nativeBalanceChange": -5000,
"tokenBalanceChanges": []
},
{
"account": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"userAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"tokenAccount": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "-10000"
}
}
]
},
{
"account": "CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": [
{
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"userAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"tokenAccount": "CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"rawTokenAmount": {
"decimals": 6,
"tokenAmount": "10000"
}
}
]
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx transferred 0.01 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU to 75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H.",
"instructions": [
{
"data": "3GAG5eogvTjV",
"accounts": [
"4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v",
"CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [
{
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"tokenAmount": 0.01,
"toUserAccount": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"tokenStandard": "Fungible",
"toTokenAccount": "CoDtJspas5BkRaxA8GTrzLZGTAMcsoec4oTrrVjwrJqA",
"fromUserAccount": "67vPQk4SMRRmZdcfyRd6kBggyeca6TqWmsAkJatNDHyx",
"fromTokenAccount": "4hi76XkyLMVtuPunTUH8SMYGbKshhcGufSfZEUkWvj9v"
}
],
"nativeTransfers": [],
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["TRANSFER"],
"environmentId": "environmentId"
},
"type": "SOLANA_TX_V1"
}
Token approvals (SOLANA_APPROVE_V1)
Portal sends this event when a watched address approves a delegate to spend an SPL token on its behalf.
{
"data": {
"rawEvents": [
{
"fee": 10000,
"slot": 438851116,
"type": "APPROVE",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"signature": "7fLggf2PBHnH8QfWTzWjjpXKcyUj9h2roR6tCBxAAHJoiLyuYEDx95RqJNz1vnjFSJ8vyaZpanCgEHVLdVvX9Ng",
"timestamp": 1769837881,
"accountData": [
{
"account": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"nativeBalanceChange": -10000,
"tokenBalanceChanges": []
},
{
"account": "J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "",
"instructions": [
{
"data": "3xHiPX82ia9u",
"accounts": [
"pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"75ZfLXXsSpycDvHTQuHnGQuYgd2ihb6Bu4viiCCQ7P4H",
"J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [],
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["APPROVE"],
"environmentId": "environmentId"
},
"type": "SOLANA_APPROVE_V1"
}
Token revocations (SOLANA_REVOKE_V1)
Portal sends this event when a watched address revokes a delegate’s approval to spend an SPL token.
{
"data": {
"rawEvents": [
{
"fee": 10000,
"slot": 438851202,
"type": "REVOKE",
"events": {},
"source": "SOLANA_PROGRAM_LIBRARY",
"feePayer": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"signature": "3p4qVucEtUhZ3GbsQv3ZQS2mTRsziSgJs6B7gre34X2xnG2WPkaNvHuk9wDRJ2kKzKa8M7Rmykpr6wTtYLRuY9oh",
"timestamp": 1769837914,
"accountData": [
{
"account": "98aauPkabddWQVyHWNw5LJLDb84ETKfN2xYUy1Zr2sQy",
"nativeBalanceChange": -10000,
"tokenBalanceChanges": []
},
{
"account": "J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
},
{
"account": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"nativeBalanceChange": 0,
"tokenBalanceChanges": []
}
],
"description": "",
"instructions": [
{
"data": "6",
"accounts": [
"pQxS4DANX5uMkDkzJSk2dSBnrEWZ1enUL2XkKF6Nhbh",
"J4AVMHNUkxhjUmWg25RTfysAEx7FnRYymT2xZkc12sKK"
],
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"innerInstructions": []
}
],
"tokenTransfers": [],
"nativeTransfers": [],
"transactionError": null
}
]
},
"metadata": {
"isDevnet": true,
"eventTypes": ["REVOKE"],
"environmentId": "environmentId"
},
"type": "SOLANA_REVOKE_V1"
}