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:

ParameterData TypeDescription
typestringThe type of Routine (one-time)
amountfloatThe 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:

ParameterData TypeDescription
typestringThe type of Routine (one-time)
amountfloatThe amount of the transfer
start_datedateThe 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:

ParameterData TypeDescription
typestringThe type of Routine (recurring)
amountfloatThe amount of the transfer
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
frequencystringThe 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:

ParameterData TypeDescription
typestringThe type of Routine (sweep)
min_balancefloatThe value for triggering threshold-based Routine (like sweep)
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
frequencystringThe 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:

ParameterData TypeDescription
typestringThe type of Routine (percentage-based)
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
minimum_transaction_thresholdfloatThe value for triggering a deposit-based transfer
percent_of_transactionfloatThe 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:

ParameterData TypeDescription
typestringThe type of Routine (percentage-balance)
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
percent_of_balancefloatThe value for calculating the transfer amount when triggered
frequencystringThe 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:

ParameterData TypeDescription
typestringThe type of Routine (refill)
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
amountfloatThe amount of the transfer
thresholdfloatThe 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:

ParameterData TypeDescription
typestringThe type of Routine (round-up)
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
spending_idstringThe 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:

ParameterData TypeDescription
typestringThe type of Routine (fifty-two-week)
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")
amount_startfloatThe starting amount for the first transfer ($1-$5)
amount_incrementfloatThe 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 funds
  • source_id indicates the source of funds, and must be one of the Sending User's Accounts

Receiving User:

  • destination_user_id is the user_id for the Receiving User, which must have an active access_token
  • destination_id indicates the destination of funds, and must be one of the Receiving User's Accounts

Routine Specific Parameters Required:

ParameterData TypeDescription
typestringThe type of Routine (one-time)
amountfloatThe amount of the transfer
destination_user_idstringThe ID of the Receiving User
start_datedateThe date the Routine should start processing (timezone is "America/Los_Angeles")

Appendix

Routine Frequency

FrequencyTriggerExample
weeklySame 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-weeklySame 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).
monthlySame 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).