There are several options when it comes to deciding where should the money come from. The send statement makes it handy by providing the following possibilities:

Single source

The simplest way of sending a monetary value is from a single source. Here, we draw COIN 100 from the world account:

Ordered

Using an ordered source block, you can defined several accounts to draw from sequentially until the desired monetary value is reached.

In example above, if the balance of COIN on the account users:001:wallet is 30, another 70 will be drawn from the payments:001 account.

Ordered sources can also be maxed to a monetary, preventing them from being drawn more than the amount specified:

Portioned

In addition to sequential accounts, source blocks can also use fractions to split the expense onto multiple accounts.

In any case, the summed total of fractions in a block needs to be equal to 1 and the remaining keyword can be used to reach that total.

Out of convenience, percentage notation is also available:

Nested

Finally, source blocks can be nested with a combination of recursive ordered / portioned specifications: