BitShares is the first smart contract platform with built-in support for recurring payments and subscription payments. This feature allows users to set permissions for third parties to make withdrawals from their accounts within certain limits. For example, this feature is a convenient way to “set it and forget it” for monthly payments and subscriptions.
How it Works
Recurring Payments are used for implementing a set of withdrawal permissions. Each account can grant any number of withdrawal permissions to other accounts. Withdrawal permission includes the following properties:
- Start Date
- End Date
- Withdrawal Limit per Period
- Period Length (i.e. 1 month)
Any asset type can be used in the withdrawal limit.
After a user grants the withdrawal permissions, the authorized account can make one transfer per period of an amount up to the limit. If there are insufficient funds then the withdrawal will fail. Withdrawal permissions aim to be a convenience for merchants and users, as they do not represent a commitment to pay.
It is up to each merchant to initiate each withdrawal. The BitShares platform does not automatically authorize the transfer of funds unless sufficient signing authority is reached.
Daily Withdrawal Limits
For security purposes, many banks place daily withdrawal limits on user accounts. Limiting a thief in the amount of damage they can do if an account is compromised. Withdrawal permissions enable users to protect their BitShares funds in the same manner. To do so, a user creates two accounts: savings and checking.
The savings account has keys kept offline where they are unlikely to become compromised. Before placing the keys in cold storage, the savings account can authorize the checking account to make a daily withdrawal of up to $1000, for example.
The checking account can then pull money out of savings up to this limit, per day, and use those funds as needed. This gives the user confidence that their losses are limited if their account is ever compromised.
As stated above, the withdrawal permission system does not automatically make payments. However, BitShares has another feature which enables scheduled payments: proposed transactions. At any time, a user can propose a transaction to execute at a specific date and time in the future. If the transaction has sufficient authorization (i.e. is properly signed by authorities) at the specified time, then it is automatically executed.
A merchant can use this feature, combined with withdrawal permissions, to implement automatic payments after a one-time setup fee. In practice, it may be cheaper for merchants to maintain their own scheduler to automate billing, since the blockchain charges a fee to propose a transaction separately from the transaction’s own fees.