Routines
Overview
Routines are the instructions to move money, while Transfers are the actual vehicle that move the money. Routines are the parent object of Transfers. A Transfer is a child object of the Routine. A Transfer cannot exist without a Routine. There are one-time Routines and recurring Routines. There are various kinds of recurring routines, some with fixed amounts and others with variable amounts. A Routine can have multiple Transfers, but a Transfer cannot have multiple Routines.
Types of Routines
Quick Transfer
Move money between two authorized accounts in just a few clicks.
Request Body:
[
{
"type": "one-time",
"name": "My Quick Transfer",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"amount": 20
}
]
In Practice:
To create a Quick Transfer, a User needs to select both a Source Account and a Destination Account, as well as define the amount of the Transfer. The amount of the Transfer will be automatically capped by the User’s transfer limit. This Routine will start immediately, checking the balance of the Source Account before initiating the Transfer to ensure that no accounts are overdrawn.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (one-time ) |
amount | float | The amount of the transfer |
One Time Transfer
Move money between two authorized accounts on a specific date.
Request Body:
[
{
"type": "one-time",
"name": "My One Time Transfer",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"amount": 20,
"start_date": "2020-10-29"
}
]
In Practice:
Similar to a Quick Transfer, a User can select a One Time Transfer, specifying the amount that they would like to transfer, where the Transfer should be deposited, and when it should start. Once the scheduled time arrives, the Routine will run, checking the balance of the Source Account before initiating the Transfer to ensure that no accounts are overdrawn.
Like all Routines, it can be Paused (or Activated again) before the resulting Transfer has been initiated. At this point, it can be Deleted as well, where it will never process a Transfer.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (one-time ) |
amount | float | The amount of the transfer |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
Recurring Transfer
Move a specified amount of money from one authorized Account to another authorized Account on a recurring basis starting on a specific date.
Request Body:
[
{
"type": "recurring",
"name": "My Recurring Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"amount": 20,
"start_date": "2020-10-29",
"frequency": "monthly"
}
]
In Practice:
When a User creates a Recurring Transfer, they must define the amount that they want to transfer and then the frequency the Routine should run. Once created, the Routine will run at the prescribed interval, checking the balance of the Source Account before initiating the Transfer to ensure that no accounts are overdrawn.
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even when the time interval is triggered. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (recurring ) |
amount | float | The amount of the transfer |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
frequency | string | The frequency a repeating Routine should process (weekly , bi-weekly , or monthly ) |
Sweep Transfer
Send all funds above an established threshold for a given Authorized Account to another Authorized Account on a recurring basis starting on a specific date.
Request Body:
[
{
"type": "sweep",
"name": "My Sweep Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"min_balance": 100,
"start_date": "2020-10-29",
"frequency": "bi-weekly"
}
]
In Practice:
When a User creates a Sweep Transfer, they must define the maximum amount that they want in the Source Account and then the frequency the Routine should run. Once created, the Routine will run at the prescribed interval, checking the balance of the Source Account, calculating the amount that needs to be moved, then initiating a Transfer.
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even when the time interval is triggered. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (sweep ) |
min_balance | float | The value for triggering threshold-based Routine (like sweep ) |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
frequency | string | The frequency a repeating Routine should process (weekly , bi-weekly , or monthly ) |
Percentage Deposit Transfer
Send a set percentage of funds from one Account into another Account whenever a deposit occurs above a certain minimum threshold.
Request Body:
[
{
"type": "percentage-based",
"name": "My Percentage-based Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"percent_of_transaction": 33,
"minimum_transaction_threshold": 50,
"start_date": "2020-10-29"
}
]
In Practice:
When a User creates a Percentage Deposit Transfer, they must define a Source Account, a Destination Account, and a start date for the Routine. The User also defines the percentage used to calculate the Transfer amount and the deposit minimum amount - the threshold for when the Transfer should be triggered. Once created, the Routine will be active, monitoring the Source Account for qualifying deposits (those above the deposit minimum amount). If a deposit lands in the Source Account above the established minimum, Astra will calculate the amount of the Transfer and notify the user that the Transfer will be initiated the next day.
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even between the time the notification is sent and the following day. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (percentage-based ) |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
minimum_transaction_threshold | float | The value for triggering a deposit-based transfer |
percent_of_transaction | float | The value for calculating the transfer amount when triggered |
Percentage Balance Transfer
Send a set percentage of funds from one Account balance into another Account on a recurring schedule.
Request Body:
[
{
"type": "percentage-balance",
"name": "My Percentage Balance Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"percent_of_balance": 25,
"start_date": "2020-10-29",
"frequency": "weekly"
}
]
In Practice:
When a User creates a Percentage Balance Transfer, they must define a Source Account, a Destination Account, and a start date for the Routine. The User also defines the percentage used to calculate the Transfer amount and the frequency with which it should process. Once created, the Routine will run at the prescribed interval, checking the balance of the Source Account, calculating the amount that needs to be moved, then initiating a Transfer.
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even between the time the notification is sent and the following day. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (percentage-balance ) |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
percent_of_balance | float | The value for calculating the transfer amount when triggered |
frequency | string | The frequency a repeating Routine should process (weekly , bi-weekly , or monthly ) |
Refill Transfer
Refill a Destination Account from a Source Account when the Destination Account balance goes below a given threshold.
Request Body:
[
{
"type": "refill",
"name": "My Refill Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"amount": 100,
"threshold": 200,
"start_date": "2020-10-29"
}
]
In Practice:
When a User creates a Refill Transfer, they must define the balance threshold for the Destination Account and the amount to transfer. They must also define a Source Account, a Destination Account, and a start date for the Routine. Once created, the Routine will monitor the Destination Account and if the value of that Account balance drops below the threshold, it will initiate a Transfer of the given amount.
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even when the time interval is triggered. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (refill ) |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
amount | float | The amount of the transfer |
threshold | float | The value for triggering the Routine |
Round Up Transfer
Round all recent debit transactions for an Account up to the nearest dollar, sum those values, then transfer that amount from a Source Account to a Destination Account.
Request Body:
[
{
"type": "round-up",
"name": "My Round Up Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"spending_id": "your_spending_id",
"start_date": "2020-10-29"
}
]
In Practice:
When a User creates a Round Up Transfer, they must define the Spending, Source, and Destination accounts that they would like to use (Spending and Source may be the same Account, but Spending may also be a different Account – even a credit card). They also select the start date for the Routine which will dictate the day of the week on which this Routine will run in the future. For simplicity, the frequency of this Routine is fixed at Weekly and can not be adjusted. Once created, the Routine will run weekly, checking the balance of the Source Account before initiating the Transfer to ensure that no accounts are overdrawn. If the total of the Round Ups for the week is less than $1.00 no automated transfer will occur.
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even when the time interval is triggered. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (round-up ) |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
spending_id | string | The ID of the Spending Account |
52 Week Challenge
Transfer funds on a weekly basis from one authorized Account to another, increasing the amount of the Transfer by a fixed amount (between $1 and $5) every week for a calendar year.
Request Body:
[
{
"type": "fifty-two-week",
"name": "My 52 Week Routine",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"amount_start": 10,
"amount_increment": 2,
"start_date": "2020-10-29"
}
]
In Practice:
When a User creates a 52 Week Challenge Transfer Routine, they must define the Source and Destination accounts, the start date and the amount that they want that routine to increase by on a weekly basis. Once created, the Routine will initiate a Transfer for the first week using the initial amount. The following week, the routine will create a new Transfer from the Source to the Destination Account for a new amount which is the initial amount plus the amount of the selected increase (week 1 = $5, week 2 = $10, week 3 = $15…).
Like all Routines, it can be Paused (or Activated again). When Paused, it will not create a new Transfer even when the time interval is triggered. It can be Deleted as well, where it will no longer run again and will be removed from the active Routines list.
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (fifty-two-week ) |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
amount_start | float | The starting amount for the first transfer ($1-$5) |
amount_increment | float | The amount to increment each time the Routine runs ($1-$5) |
Peer-to-Peer Transfer
Move money between two authorized accounts, from one authorized User to another.
Request Body:
[
{
"type": "one-time",
"name": "My P2P Transfer",
"source_id": "your_source_id",
"destination_id": "your_destination_id",
"destination_user_id": "your_id_for_the_receiving_user",
"amount": 20,
"start_date": "2020-10-29"
}
]
In Practice:
Transferring funds between two different Users is almost exactly like a One Time Transfer Routine; however, the request body includes an additional parameter that defines the User that will receive the funds. The parameters that differentiate the Sending User and Receiving User are as follows:
Sending User:
access_token
from the authorization header defines the authorization for the User sending fundssource_id
indicates the source of funds, and must be one of the Sending User's Accounts
Receiving User:
destination_user_id
is theuser_id
for the Receiving User, which must have an activeaccess_token
destination_id
indicates the destination of funds, and must be one of the Receiving User's Accounts
Routine Specific Parameters Required:
Parameter | Data Type | Description |
---|---|---|
type | string | The type of Routine (one-time ) |
amount | float | The amount of the transfer |
destination_user_id | string | The ID of the Receiving User |
start_date | date | The date the Routine should start processing (timezone is "America/Los_Angeles") |
Appendix
Routine Frequency
Frequency | Trigger | Example |
---|---|---|
weekly | Same day of the week as the start_date of the routine. | A routine with a start_date of 2023-01-02 (Monday) will repeat every Monday. The next time this example routine will trigger will be on 2023-01-09 (Monday). |
bi-weekly | Same day of the week as the start_date of the routine. | A routine with a start_date of 2023-01-02 (Monday) will repeat every other Monday. The next time this example routine will trigger will be on 2023-01-16 (Monday). |
monthly | Same day of the month as the start_date of the routine. | A routine with a start_date of 2023-01-30 (January 30th) will repeat monthly on the 30th day of the next month. The next time this example routine will trigger will be on 2023-02-28. Note that if subsequent months do not have a specific day (29th, 30th, or 31st) then the routine will run on the last day of that month. In this example, since the routine is scheduled to run every 30th day of the month, and Februrary does not have a 30th day, the routine will trigger on the last day of Februrary (which in 2023 is the 28th). |
Updated almost 2 years ago