# Revenue automation

Revenue lands in an account per stream, converts on receipt, and funds scheduled payments, all from self-custodied accounts

**Revenue automation** on Splits is money movement. An [automation account](https://splits.org/docs/accounts#automation-accounts) per revenue stream swaps, splits, forwards, or offramps whatever arrives at its address. [Schedules](https://splits.org/docs/transactions/schedules) draft the recurring outgoing payments. Every automation runs from an account that the workspace's own signers control and that the Treasury owns.

## How it works

* **One automation account per revenue stream.** Each automation account is a deposit address with a policy. A run starts automatically once a balance reaches the trigger amount. The run swaps, bridges, forwards, or offramps each token to the policy's destinations. Typical policies sweep everything to USDC, withhold a share for taxes, or split income across accounts, partners, and the bank.
* **Runs need no approval. Scheduled payments need approval.** An automation's signer set is the Treasury's passkeys plus a Splits server key at 1-of-n, so runs execute on their own. A schedule produces one draft proposal per occurrence. The account's signers approve each proposal at the account's [threshold](https://splits.org/docs/accounts/thresholds).
* **Swaps and bridges carry no Splits fee.** Splits routes each [swap](https://splits.org/docs/transactions/swaps) quote across several providers, including cross-network routes.
* **Invoices reconcile onchain.** When a payer pays an invoice through its page, Splits marks the invoice paid after it verifies the transaction. You mark bank payments manually: see [Tracking payments](https://splits.org/docs/invoicing/tracking). You can [issue](https://splits.org/docs/invoicing#issuing) an invoice that receives directly into an automation's deposit address.
* **Idle stables earn without lockup.** Automated [Earn](https://splits.org/docs/accounts/earn) deposits an account's idle balance. You enable it per account. You can withdraw positions at any time and spend them directly.
* **The books follow.** Every run and payment appears on the [Accounting](https://splits.org/docs/accounting) page, where you can filter and export them. An accountant joins as a [read-only member](https://splits.org/docs/workspaces/roles#read-only-members).

## Setting up a revenue stream

Prerequisites: a [workspace](https://splits.org/docs/workspaces) with the [Owner](https://splits.org/docs/workspaces/roles) role, and [banking](https://splits.org/docs/banking) set up if a destination is a bank account.

:::steps
### Create the automation account

Create one automation account per stream. Then set its policy:

* the output token
* the accounts and partners that receive each share
* any bank destination

### Send revenue to the account

Give the account's address to whatever pays the stream. The payer can be a contract, a platform payout, or an invoice whose receiving account is the automation.

### Schedule the outgoing payments

Add a schedule from the account that pays payroll and vendors. For a vendor paid in fiat, add the vendor's bank account first: see [Paying vendors](https://splits.org/docs/banking/paying-vendors).

### Enable Automated Earn

Enable [Automated Earn](https://splits.org/docs/accounts/earn#automated-earn) on the accounts that hold working capital between payment runs.

### Invite the accountant

Invite the accountant as a [read-only member](https://splits.org/docs/workspaces/roles#read-only-members). Export the books from Accounting.
:::

## Limits

* **Automations and schedules move money.** Schedules handle transfers only. Automating a permissioned contract call needs a [module](https://splits.org/docs/accounts/modules) with a key that you run yourself.
* Splits operates automation accounts. For a self-hosted equivalent, the open-source [Swapper](https://splits.org/protocol/docs/core/swapper) contract converts incoming tokens to one output token. The trade-offs are in [Automating long-tail token conversion](https://splits.org/blog/automating-long-tail-token-conversion/).

## Next steps

* [Open the app](https://app.splits.org) and create an automation account
* [Accounts](https://splits.org/docs/accounts#automation-accounts): the automation policy and trigger rules
* [Schedules](https://splits.org/docs/transactions/schedules), [Swaps](https://splits.org/docs/transactions/swaps), [Earn](https://splits.org/docs/accounts/earn)
* [Recurring invoices](https://splits.org/docs/invoicing/recurring): the inbound side on a schedule

## Programmatic access

Via the [Splits CLI / MCP](https://splits.org/docs/introduction/agents):

* `splits automations list`: the workspace's automations (**Read** scope)
* `splits transactions list`: every run and payment, filterable by account, direction, amount, and date (**Read** scope)

Creating automations, schedules, and invoices is web-only today.
