# Bankr Dev Arbitrary Transactions

> This skill should be used when building apps that submit raw EVM transactions, custom contract calls, or need to execute pre-built calldata through Bankr. Covers JSON format, validation, and integration patterns. Use when this capability is needed.

- Skill: `tomevault-io/bankr-dev-arbitrary-transactions` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/bankr-dev-arbitrary-transactions`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/bankr-dev-arbitrary-transactions/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/bankr-dev-arbitrary-transactions

---


# Arbitrary Transaction Capability

Submit raw EVM transactions with explicit calldata via the Bankr API.

## What You Can Do

| Operation | Description |
|-----------|-------------|
| Submit calldata | Execute pre-built calldata on any supported chain |
| Custom contract calls | Interact with any contract using raw function calls |
| Value transfers with data | Send ETH/MATIC while executing calldata |

## JSON Schema

```json
{
  "to": "0x...",
  "data": "0x...",
  "value": "0",
  "chainId": 8453
}
```

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `to` | string | Yes | Contract address (0x + 40 hex chars) |
| `data` | string | Yes | Calldata (0x + hex, or "0x" for empty) |
| `value` | string | Yes | Wei amount as string |
| `chainId` | number | Yes | Target chain (1, 137, or 8453) |

## Supported Chains

| Chain | Chain ID |
|-------|----------|
| Ethereum | 1 |
| Polygon | 137 |
| Base | 8453 |
| Unichain | 130 |

## Usage

```typescript
import { execute } from "./bankr-client";

// Submit arbitrary transaction
const txJson = {
  to: "0x1234567890abcdef1234567890abcdef12345678",
  data: "0xa9059cbb...",
  value: "0",
  chainId: 8453
};

await execute(`Submit this transaction: ${JSON.stringify(txJson)}`);
```

## Integration Pattern

```typescript
import { execute } from "./bankr-client";

interface ArbitraryTx {
  to: string;
  data: string;
  value: string;
  chainId: number;
}

async function submitArbitraryTx(tx: ArbitraryTx): Promise<void> {
  // Validate before submission
  if (!tx.to.match(/^0x[a-fA-F0-9]{40}$/)) {
    throw new Error("Invalid address format");
  }
  if (!tx.data.startsWith("0x")) {
    throw new Error("Calldata must start with 0x");
  }
  if (![1, 137, 8453, 130].includes(tx.chainId)) {
    throw new Error("Unsupported chain");
  }

  const prompt = `Submit this transaction: ${JSON.stringify(tx)}`;
  await execute(prompt);
}

// Example: ERC-20 transfer
await submitArbitraryTx({
  to: "0xTokenContractAddress...",
  data: "0xa9059cbb000000000000000000000000...", // transfer(address,uint256)
  value: "0",
  chainId: 8453
});
```

## Error Handling

```typescript
try {
  await submitArbitraryTx(tx);
} catch (error) {
  if (error.message.includes("reverted")) {
    // Transaction reverted - check calldata encoding
    console.error("Transaction reverted:", error);
  } else if (error.message.includes("insufficient")) {
    // Not enough funds for gas + value
    console.error("Insufficient funds:", error);
  } else if (error.message.includes("unsupported")) {
    // Chain not supported
    console.error("Unsupported chain:", error);
  }
}
```

## Related Skills

- `bankr-client-patterns` - Client setup and execute function
- `bankr-api-basics` - API fundamentals
- `bankr-token-trading` - Higher-level trading operations

---
> Source: [BankrBot/claude-plugins](https://github.com/BankrBot/claude-plugins) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-29 -->

