# Transactions

Proposals that execute onchain once signers meet the threshold

Every transaction in Splits is a **proposal** that executes onchain once enough of the account's [signers](/docs/accounts/signers) approve it to meet the account's threshold. On a 1-of-n account, proposing and executing happen in one step; on higher thresholds, the transaction waits for the remaining signatures.

Who can propose is governed by [roles](/docs/workspaces/roles): Owners can propose from any account, Members only from accounts they're a signer on.

## Types

| Type | What it does |
| --- | --- |
| [Sends](/docs/transactions/sends) | Move tokens to any recipient, including tokens you don't hold, via just-in-time swaps |
| [Swaps](/docs/transactions/swaps) | Trade between tokens (bridging included), with no fees from Splits |
| [Custom](/docs/transactions/custom) | Call any writable function on any contract on a supported network |
| [Batch](/docs/transactions/batch) | Group multiple transactions into one signature |
| [Schedules](/docs/transactions/schedules) | Recur a transaction on an interval (e.g. payroll) |

Every transaction can carry a [memo](/docs/transactions/memos), and a workspace can require them on all transactions via the *Require memos* [setting](/docs/workspaces/settings).

## Gas sponsorship

Gas is sponsored from the workspace's plan budget, then from its gas balance; when neither covers it, the account pays in the network's native token. [Gas](/docs/transactions/gas) covers the budgets and topping up.

## Programmatic access

Via the [Splits CLI / MCP](/docs/introduction/agents):

* `splits transactions list` / `get <id>`: query transactions with rich filters (**Read** scope)
* `splits transactions create transfer` / `swap` / `earn-deposit` / `earn-withdraw` / `auto-earn-on` / `auto-earn-off` / `offramp` / `custom`: propose transactions (**Write** scope)
* `splits transactions sign <id>`: sign with a registered EOA (**Write** scope)
* `splits transactions update-gas-estimation <id>`: refresh a multisig proposal before its last signature (**Write** scope)
* `splits transactions cancel <id>`: cancel a pending proposal (**Write** scope)

Batches and schedules are web-only today.
